Heim >Backend-Entwicklung >PHP-Tutorial >PHP-Sitzungsverfolgung zwei (42)
Sitzung
Was ist Sitzung
??Die Sitzung beginnt mit dem Zugriff des Benutzers auf die Seite und endet, wenn der Benutzer die Verbindung zur Website trennt, wodurch ein Lebenszyklus der Sitzung entsteht. Während der Sitzung wird dem Client eine eindeutige SessionID zugewiesen, um den aktuellen Benutzer zu identifizieren und ihn von anderen Benutzern zu unterscheiden.
Während einer Sitzung wird die Sitzungs-ID an zwei Orten gespeichert: dem Client und dem Server. Für den Client wird ein temporäres Cookie verwendet (der Cookie-Name ist PHPSESSID) oder über eine URL-Zeichenfolge übergeben Der Server verwendet auch eine Textdatei. Das Formular wird im angegebenen Sitzungsverzeichnis gespeichert.
??Session akzeptiert jede Zugriffsanfrage über eine ID und identifiziert so den aktuellen Benutzer, verfolgt und verwaltet benutzerspezifische Informationen sowie Sitzungsvariablen (während der Sitzungsaktivität können numerische oder Textinformationen in der Sitzung gespeichert werden), wie z. B. Sitzungsname, usw. werden diese variablen Informationen serverseitig gespeichert.
??SessionID kann als Sitzungsinformation für die Sitzungspersistenz in der Datenbank gespeichert werden, sodass die Anmeldezeiten, der Online-Status, die Online-Zeit usw. jedes Benutzers verfolgt werden können.
Der Unterschied zwischen Cookie und Sitzung in PHP:
Sowohl Cookie als auch Sitzung können Variablen, die auf mehreren Seiten verwendet werden, vorübergehend speichern, weisen jedoch wesentliche Unterschiede auf.
??Cookie wird im Client-Browser gespeichert,
??Sitzung wird auf dem Server gespeichert.
??Die Verbindung zwischen ihnen ist die Sitzungs-ID, die normalerweise in einem Cookie gespeichert oder auf der URL platziert wird.
??Methode zum Deaktivieren von Cookies: (Klicken Sie im IE auf „Extras“ – „Internetoptionen“, klicken Sie im Popup-Dialogfeld auf „Sicherheit“ – „Stufe anpassen“ und stellen Sie „Jede Konversation zulassen“ ein deaktiviert)
Eine einfache Sitzung implementieren
Die grundlegenden Schritte zur Verwendung einer Sitzung sind wie folgt:
??Eine Sitzung starten
??Sitzungsvariablen registrieren
? ?Eine Sitzungsvariable verwenden
?? Die Registrierung der Variable aufheben und die Sitzung zerstören
1 Eine Sitzung starten
session_start(): Eine Sitzung starten oder eine vorhandene Sitzung zurückgeben.
Hinweis: Diese Funktion hat keine Parameter und der Rückgabewert ist wahr. Wenn Sie eine Cookie-basierte Sitzung verwenden, darf der Browser vor der Verwendung von session_start() keine Ausgabe haben, andernfalls tritt der folgende Fehler auf:
Warnung: Session-Cache-Limiter kann nicht gesendet werden - Header bereits gesendet (Ausgabe gestartet unter/usr/ local /apache/htdocs/cga/member/1.php:2)…………
2 Registrieren Sie eine Sitzungsvariable
PHP5 verwendet $_SESSION['xxx']=xxx zur Registrierung der SESSION globale Änderungsbetrag
. Die Verwendungsmethoden von GET, POST und COOKIE sind ähnlich.
??Hinweis: session_register(), session_unregister(), session_is_registered() werden unter PHP5 nicht mehr verwendet, es sei denn, register_globle ist in php.ini aktiviert. Aus Sicherheitsgründen wird jedoch dringend empfohlen, register_globle zu deaktivieren . Die Verwendung von HTTP_SESSION_VARS wird nicht mehr empfohlen und die offizielle Empfehlung lautet, stattdessen $_SESSION zu verwenden.
3 Verwendung von Sitzungsvariablen
Um eine Sitzungsvariable innerhalb eines bestimmten Bereichs verfügbar zu machen, müssen Sie zunächst eine Sitzung mit der Funktion session_start() starten. Auf diese Weise kann über das superglobale Array $_SESSION auf diese Variable zugegriffen werden.
Zum Beispiel: echo $_SESSION[‘myvar’];
?? Stellen Sie vor der Verwendung fest, ob es sich bei der Variablen um eine registrierte Sitzungsvariable handelt.
if(isset($_SESSION['myvar']))
4 page1.php
<?<span>php session_start(); </span><span>//</span><span>使用SESSION前必须调用该函数。</span>$_SESSION[‘name’]=”我是黑旋风李逵!”; <span>//</span><span>注册一个SESSION变</span><span>量 $_SESSION[‘passwd’]</span>=<span>”mynameislikui”; $_SESSION[‘time’]</span>=<span>time(); echo ‘<br</span>/><a href=<span>“page2.php”>通过COOKIE传递SESSION <</span>/a>’; <span>//</span><span>如果客户端支持cookie,可通过该链接传递session到</span><span>下一页。 echo ‘<br</span>/><a href=“page2.php?<span>’. SID . ‘”>通过URL 传递SESSION<</span>/a>’;<span>//</span><span>客户端不支持cookie时,使用该办法传递</span><span>session. </span>?>
session_id
session_id( ) wird verwendet, um die aktuelle Sitzungs-ID festzulegen oder abzurufen. In PHP5 kann
entweder session_id() verwenden oder die Sitzungs-ID und den Sitzungsnamen der aktuellen Sitzung über die an die URL angehängte SID
abrufen.
??Wenn session_id() einen bestimmten Wert hat, ersetzt er den aktuellen SESSIONID-Wert.
Wenn Cookies nicht deaktiviert sind und ein session_id()-Wert angegeben ist, wird bei jedem Start von session_start() ein Cookie-Wert an den Client gesendet. Unabhängig davon, ob die aktuelle SESSIONID gleich dem angegebenen Wert ist.
??Wenn session_id() keinen Wert angibt, wird die aktuelle SESSIONID zurückgegeben. Wenn die aktuelle Sitzung nicht gestartet wird, wird eine leere Zeichenfolge zurückgegeben.
??Sie müssen diese Funktion verwenden, bevor Sie die Sitzung starten: session_start();
<span>查看当前SessionID </span><?<span>php session_start(); echo “当前的session id 为:”.session_id(); </span>?><span>??设置SessionID </span><?<span>php session_id(“ABC2008”);</span><span>//</span><span>必须在session_start()之前</span><span>session_start(); echo “修改的session id 为:”.session_id(); </span>?>
Ersetzen Sie die session_id, ohne die Informationen zu beeinflussen
??session_regenerate_id () Gibt true zurück, wenn die Änderung erfolgreich ist, und false, wenn sie fehlschlägt.
??Mit dieser Funktion kann die SESSIONID durch die aktuelle Sitzung ersetzt werden, andere Informationen der aktuellen Sitzung werden jedoch nicht geändert.
<?<span>php session_start(); $old_sessionid</span>=<span> session_id(); session_regenerate_id(); $new_sessionid</span>=<span> session_id(); echo </span><span>"</span><span>原始SessionID: $old_sessionid<br/></span><span>"</span><span>; echo </span><span>"</span><span>新的SessionID: $new_sessionid<br/></span><span>"</span><span>; echo</span><span>"</span><span><pre></span><span>"</span><span>; print_r($_SESSION); echo</span><span>"</span><span></pre></span><span>"</span><span>; </span>?>
session_name
session_name() gibt den Namen der aktuellen Sitzung zurück oder ändert den Namen der aktuellen Sitzung.
??Wenn Sie den Namen der aktuellen Sitzung ändern möchten, müssen Sie diese Funktion vor session_start() aufrufen
. Hinweis: Sitzungsname darf nicht nur aus Zahlen
bestehen, er muss mindestens einen Buchstaben enthalten. Andernfalls wird jeden Moment eine neue Sitzungs-ID generiert.
Beispiel für eine Sitzungsumbenennung:
<?<span>php $previous_name</span>= session_name(<span>"</span><span>WebsiteID</span><span>"</span><span>); session_start(); echo </span><span>"</span><span>新的session名为:$previous_name<br/></span><span>"</span><span>;</span>?>Sitzungsübergreifendes Übertragungsproblem Bei der seitenübergreifenden Sitzungsweitergabe müssen drei Situationen berücksichtigt werden:
??Der Client hat Cookies deaktiviert.
??Es liegt ein Problem mit dem Browser vor und er kann vorübergehend nicht auf Cookies zugreifen
??session.use_trans_sid= 0 in php.ini oder
die Option --enable-trans-sid ist nicht aktiviert beim Kompilieren aktiviert
1、设置php.ini中的session.use_trans_sid= 1或者编译时打开打开了--enable-trans-sid选项,让PHP自动跨页传递session id。
??2、手动通过URL传值、隐藏表单传递session id。
??3、用文件、数据库等形式保存session_id,在跨
页过程中手动调用。
1 解决会话传递问题
<span>page1.php ??<</span>?<span>php session_start(); $_SESSION[‘var1’]</span>=<span>“中华人民共和国”; $url</span>=“<a href=‘s2.php’>下一页</<span>a>”; echo $url; </span>?<span>><br></span>
<span>??page2.php ??<</span>?<span>php session_start(); echo “传递的session变量var1的值:”.$_SESSION[‘var1’]; </span>?<span>> ??现在你手动关闭客户端的cookie,再运行就得不到结果了</span>
2 第一种途径
设置php.ini中的session.use_trans_sid= 1
??编译时打开打开了--enable-trans-sid选项”
??注:Linux适用,Windows不适用
以上就介绍了PHP会话跟踪二(42),包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。