Heim > Artikel > Backend-Entwicklung > Die Fallstricke von SESSION
1.
Fehlermeldung:
Warnung: Sitzungscookie kann nicht gesendet werden – Header bereits gesendet
Warnung: Session-Cache-Limiter kann nicht gesendet werden – Header bereits gesendet
Analyse und Lösung:
Der Grund dafür ist, dass Sie, wenn Sie session_start() in Ihrem Programm verwenden Es gibt bereits eine tatsächliche HTML-Inhaltsausgabe. Vielleicht sagen Sie: „Das tue ich nicht“, ich echo oder druckeeine Nachricht aus. Entschuldigung, die von Ihrer echo- oder print-Anweisung erzeugte Ausgabe ist das tatsächliche HTMLInhaltsausgabe. Die Lösung für diese Art von Problem besteht darin, Ihren session_start() in die erste Zeile des Programms zu verschieben.
2 Fehlermeldung
Warnung: open(F:/689phpsessiondatasess_66a39376b873f4daecf239891edc98b5, O_RDWR) fehlgeschlagen
Analyse und Lösungen :
Eine solche Fehlermeldung wird normalerweise durch Ihr php-Element verursacht session.save_path
in ini ist nicht richtig eingestellt. Die Lösung besteht darin, session.save_path und session.cookie_path ist auf session_save_path = c:temp
session.cookie_path = c:tempDann in
c:Erstellen ein Verzeichnis temp
, dann 3. nicht initialisierte Sitzung in
Analyse und Lösung
:
Eingabeaufforderungen wie diese werden normalerweise durch direktes Anpassen der Funktion session_destroy()
verursacht. Viele Freunde denken, dass die Funktion session_destroy() unabhängig ausgeführt werden kann, aber das ist nicht der Fall. Die Lösung besteht darin,
session_start() zu verwenden, um die Sitzung zu öffnen, bevor Sie die Funktion session_destroy() aufrufen .
Funktionen . 4.Frage:Wie ? Wie erhalte ich den id-Wert der aktuellen Sitzung?
Der einfachste Weg ist : echo SID;
session_id('0-2 - c-d-e');
session_start();
$_SESSION['is_admin'] = 'yes'
;echo
SID;?>
5.Frage :Mein Programm hat vor dem Aufruf der
Header-Funktion keine Ausgabe, obwohl ich A
einschließe >config.php
-Datei, aber es gibt keine Ausgabe in derconfig.php-Datei, warum Sitzung meldet immer noch den gleichen Fehler wie das Problem 1 Liegt es daran, dass ich HeaderWas ist der Grund für die Verwendung von session_start()? Antwort:Vielleicht haben Sie Ihr PHP-Programm sorgfältig überprüft, bevor Sie den Header () hatte vorher keine Ausgabe und es gibt keine Ausgabe in Ihrer include-Datei! Aber Verwenden Sie die Cursortasten, um den Scheck nach dem ?>diesemPHP-Codeende zu verschieben Stellungnahme? Dann werden Sie feststellen, dass nach ?> eine Leerzeile oder mehrere Leerzeichen stehen. Wenn Sie diese Leerzeilen oder Leerzeichen löschen, ist das Problem gelöst . Hinweis: Dieses Problem tritt in PHP4.1.2 und höheren Versionen auf und wurde nicht getestet. 6.Fragen:Nachdem Sie Sitzung als Hauptanmeldeseite verwendet haben, erfahren Sie, wie Sie Sitzung verwenden, um die Anmeldung auf anderen Seiten einzuschränken ? Antwort: Der einfachste Weg ist session_start(); if(!session_registered('login') ││ $login != true) { Echo „Sie sind nicht angemeldet“ exit; 🎜>7.Gefragt: session_register() zum Registrieren verwendet Variable, aber wenn ich oder eine Javascript-Umleitungsanweisung verwende, dann in Auf der folgenden Seite kann nicht auf den von Sitzung registrierten Variablenwert zugegriffen werden. Wie kann man es lösen? [Nicht erfolgreich getestet] Programmfragment des Problems: > session_start(); $ok = 'love you' session_register ('ok'); header("location : next.php"); ?>
>?> 🎜>
Wenn Sie die Funktion header
oder die Funktionwindow.location verwenden -Funktion, Sie können die auf der vorherigen Seite registrierte
Sitzungsvariableleicht verlieren. Es gibt noch keine detaillierte Antwort auf den Grund für dieses Problem.
Aber es gibt eine Lösung. Wie unten gezeigt
header("Location: next.php" .?" . SID);
Wenn Sie zur nächsten Seite springen, verwenden Sie die aktuelle
ID der Sitzung
als Parameter und übergeben Sie sie an eine Seite.
8.session
So übergeben Sie ein Array
session_register('data');
$data=array(1,2,3, 4 ; 9.Frage9:Kann ich so etwas wie $HTTP_GET_VARS['**'] verwenden? Möglichkeit, auf den Wert Sitzung zuzugreifen?
Antwort: Ja, Sie können das folgende
globaleArray verwenden, um auf die Sitzung zuzugreifen
zur Verbesserung der Webseitensicherheit$HTTP_SESSION_VARS $_SESSION
Routine:
< ?php
session_start();
$username = 'stangly false'. ;
session_register('username'); 'username'];
echo '
';
Bitte beachten Sie diese Routine, um das Programm an Ihre eigenen Bedürfnisse anzupassen.
Frage10: session_unregister() und session_destroy() Was ist der Unterschied?
session_unregister()Die Hauptfunktion besteht darin, die aktuelle Variable Sitzung abzumelden. Bitte beachten Sie jedoch, dass, wenn Sie $HTTP_SESSION_VARS oder $_SESSION verwenden, um auf in der aktuellen Seitensitzung zu verweisen -Variable, dann müssen Sie möglicherweise mit unset() zusammenarbeiten, um die Variable session zu deaktivieren.
und session_destroy() löscht die aktuelle Sitzung Umfeld. Dies bedeutet, dass es nach Verwendung der Funktion session_destroy() nicht möglich ist, session_is_registered() zur ErkennungSitzung Variable. Es ist jedoch zu beachten, dass er die Sitzung nicht global löschen oder Sitzungscookies session. in , daher ist es am besten, vor der Verwendung von session_destroy nicht $HTTP_SESSION_VARS $ zu verwenden _SESSION um auf die Sitzung zuzugreifen ( übersetzt von php.net)
Routine:if(isset($_COOKIE[session_name()])) {
session_start();
session_destroy();
unset($_COOKIE[session_name()]);
}
A
PHPSicherheitslücke:
session_start();
$_SESSION['is_admin'] = 'yes' ;
$is_admin ='no';
echo $_SESSION['is_admin'];
?>Beschreibung der Sicherheitslücke:
Wenn
php.ini, register_globals = On, ändert die definierte Variable den Namen session. Wenn Sie zum Anmelden Sitzung verwenden, tritt das Problem der gelegentlichen Anmeldung auf.
Das Obige hat die Fallstricke von SESSION vorgestellt, einschließlich einiger Aspekte davon. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.