session_start();

巴扎黑
Freigeben: 2023-03-01 09:42:02
Original
1620 Leute haben es durchsucht

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.

8. So übergeben Sie ein Array in einer Sitzung

session_register

('data');

$data=array(1,2,3,4) ;

Die Methode besteht darin, sich zuerst zu registrieren und dann den Wert zuzuweisen

9: Kann ich mit einer Methode wie $HTTP_GET_VARS['**'] auf den Sitzungswert zugreifen?

Antwort: Ja, Sie können das folgende globale Array verwenden, um auf die Sitzung zuzugreifen und die Sicherheit der Webseite zu erhöhen

$HTTP_SESSION_VARS
$_SESSION
Routine:

session_start( ; ['username'];

echo'


';

echo$_SESSION
['username'];

? >

Bitte beachten Sie diese Routine, um das Programm an Ihre eigenen Bedürfnisse anzupassen.

Frage 10: Was ist der Unterschied zwischen session_unregister() und session_destroy()?

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()]);}


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage