Heim > Artikel > Backend-Entwicklung > session_start();
Für die Sitzungsfunktion von PHP konnte ich nie eine passende Antwort finden, insbesondere einige Fehler und einige fehlerfreie Ergebnisse. Das Erschreckendste ist Letzteres, was für viele Anfänger immer eine Peinlichkeit war. Sogar einige Veteranen sind manchmal verwirrt. Dieser Artikel bietet eine einfache Zusammenfassung dieser Probleme als Referenz für jedermann.
1.
Fehlermeldung
Warnung: Sitzungscookie kann nicht gesendet werden – Header wurden bereits gesendet
Warnung: Sitzungs-Cache-Limiter kann nicht gesendet werden – Header wurden bereits gesendet
Analyse und Lösung
Die Der Grund für diese Art von Problem liegt darin, dass bei der Verwendung von PHP session_start() im Programm zuvor tatsächlicher HTML-Inhalt ausgegeben wurde. Vielleicht sagen Sie, ich habe es nicht, ich gebe nur eine Nachricht wieder oder drucke sie aus. Leider handelt es sich bei der von Ihrer Echo- oder Print-Anweisung generierten Ausgabe um die tatsächliche Ausgabe des HTML-Inhalts. Der Weg, diese Art von Problem zu lösen, besteht darin, session_start() in die erste Zeile des Programms zu verschieben.
2.
Fehlermeldung
Warnung: open(F:/689phpsessiondatases_66a39376b873f4daecf239891edc98b5, O_RDWR) fehlgeschlagen
Analyse und Lösung
Eine solche Fehlermeldung wird normalerweise durch Ihre PHP-Sitzung verursacht Das Element .save_path in ini ist nicht richtig eingestellt. Die Lösung besteht darin, session.save_path und session.cookie_path auf
session_save_path = c: emp
session.cookie_path = c: emp
zu setzen und dann ein temporäres Verzeichnis zu erstellen Unter dem Verzeichnis c: können Sie
3.
Fehlermeldung
Warnung: Es wird versucht, eine nicht initialisierte Sitzung zu zerstören
Analyse und Lösung
Eingabeaufforderungen wie diese werden normalerweise verursacht indem Sie die Funktion session_destroy() direkt aufrufen. 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, PHP session_start() zu verwenden, um die Sitzungsfunktion zu aktivieren, bevor Sie die Funktion session_destroy() aufrufen.
4. Frage: Wie erhalte ich den ID-Wert der aktuellen Sitzung?
Der einfachste Weg ist:
echo SID;
Sie werden es herausfinden.
Frage: Mein Programm hat keine Ausgabe vor dem Aufruf der Header-Funktion. Obwohl ich eine config.php-Datei einbinde, gibt es keine Ausgabe in der config.php-Datei. Es wird derselbe Fehler wie in Frage 1 gemeldet. Liegt es daran, dass ich PHP session_start() vor dem Header verwendet habe?
Antwort: Vielleicht haben Sie Ihr PHP-Programm wirklich sorgfältig überprüft und zitiert. Es gibt tatsächlich keine Ausgabe vor dem Header( ), und es gibt keine Ausgabe in Ihrer Include-Datei! Aber verwenden Sie die Cursortasten, um das Häkchen nach der Endanweisung des PHP-Codes zu verschieben?>? Dann werden Sie feststellen, dass nach ?> eine Leerzeile oder ein paar 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. Frage: Wie kann ich die Sitzung verwenden, um die Anmeldung auf anderen Seiten einzuschränken, nachdem ich mich auf der Hauptseite angemeldet habe? . .
Antwort: Die einfachste Methode ist
session_start();
if(!session_registered
('login')
││$login!=true) {
echo „Sie sind nicht angemeldet“;
exit;
}
7. Frage: Ich habe die Sitzungsvariable mit session_register() registriert. Wenn ich jedoch auf der folgenden Seite eine Header- oder JavaScript-Umleitungsanweisung verwende, kann ich nicht auf den von der Sitzung registrierten Variablenwert zugreifen. Wie kann man es lösen?
Programmfragment der Frage:
session_start();$ok='loveyou';session_register('ok');header("location:next.php");?>next . phpsession_start();echo$ok;?>
Lösung:
Wenn Sie die Header-Funktion oder die window.location-Funktion verwenden, wird die auf Ihrer vorherigen Seite registrierte Sitzungsvariable angezeigt Es gibt immer noch keine detaillierte Antwort auf die Ursache dieses Problems.
Aber es gibt eine Lösung. Wie unten gezeigt:
header("Location: next.php" ."?" . SID); Verwenden Sie beim Springen zur nächsten Seite die aktuelle ID der Sitzung als Parameter und übergeben Sie sie an die nächste Seite . Seite.
('data');
$HTTP_SESSION_VARS
$_SESSION
Routine:
';
echo$_SESSION
['username'];
? >
Die Hauptfunktion der Funktion session_unregister() besteht darin, die Registrierung der aktuellen Version aufzuheben. (Übersetzt von php.net)
Routine:
if(isset($_COOKIE[session_name()])){session_start();session_destroy();unset($_COOKIE[session_name()]);}