Heim  >  Artikel  >  Backend-Entwicklung  >  Die Fallstricke von SESSION

Die Fallstricke von SESSION

WBOY
WBOYOriginal
2016-08-08 09:26:101233Durchsuche



 

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:temp

Dann 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 der

config.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:

Ich habe

session_register() zum Registrieren verwendet

session

Variable, aber wenn ich

header

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 Funktion

window.location verwenden -Funktion, Sie können die auf der vorherigen Seite registrierte

Sitzungsvariable

leicht 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

globale

Array 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 '
';

echo $_SESSION['username']; 🎜>?>

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.

Stellungnahme:
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