Session Warnung
Hallo zusammen!
Als ich gerade dachte, meine Skripte laufen endlich auf meinem gemieteten Webspeicherplatz sehe ich mich mit einem neuen Problem konfrontiert. Ich verwende Sessions um Daten zu transportieren und angemeldete User zu überprüfen. Nun gibt mir ein Skript (und ich weiß nicht mal genau welches) die folgende Warung aus: Zitat:
Ich weiß nicht einmal ob diese Warnung durch den wiederholten Befehl Zitat:
PHP-Code:
Was kann ich denn nur tun, damit dieser Fehler verschwindet? Er taucht übrigens auch nur bei manchen Skripten auf und nicht bei allen. Außerdem scheint es eigentlich zu funktionieren. Ich bin mal wieder ratlos. Es kann ja wohl nicht sein, dass ich mit PHP5 und Mysql 4.1 keine Sessions auf dem Server verwenden kann, nur weil register_globals auf off steht, oder ? Zumal es ja mit einigen Seiten auch klappt, und eben mit einigen diese Meldung ausgegeben wird. Ich habe mir natürlich auch schon unter php.net zu Seesions einiges durchgelesen und zwar zu Session Funktionen und session_register. Dort steht zum Beispiel: Zitat:
Zitat:
PHP-Code:
Wer ist so nett und kann mir helfen? |
AW: Session Warnung
Bist du sicher, dass du wirklich an keiner Stelle in deinen Scripten session_reigster() verwendest?
|
AW: Session Warnung
Absolut sicher. Lediglich Session_start().
Ich habe aber gerade mit dem Support telefoniert und die konnten nun nur für mich die Einstellung register_globals = off auf on setzen. Wenn ich das richtig verstanden habe mit einem Tool oder einer Datei namens htaccess das die Einstellungen nur für mich ändert. Was genau ist dieses htaccess denn ? Jedenfalls sind seit dem die Fehlermeldungen wieder verschwunden (zumindest diese ;-) Mit den restlichen werde ich aber hoffentlich alleine fertig. Danke und viele Grüße Stefan |
AW: Session Warnung
Zitat:
Die Warnung basiert darauf: Zitat:
PHP-Code:
Session index == varname So würde die Fehlermeldung unterbleiben: PHP-Code:
Eigentlich isses sinnfrei: warum verdoppelst Du die Quelle? $_SESSION verhält sich genauso wie jedes 'normale' Array. Die beiden Unterschiede: 1. ist es superglobal (also automatisch innerhalb von Funktionen und Methoden gültig) 2. wird es bei Scriptende in serialisierter Form im Sessionfile gespeichert. Und nachdem Du register_globals = On gesetzt hast, ist sie ebenfalls überflüssig, weil PHP nach session_start() alle Indexe der Arrays $_GET, $_POST, $_COOKIE, $_FILES und $_SESSION in den globalen Bereich exportiert werden. Zitat:
Die Lösung wäre: .htaccess Code:
php_flag session.bug_compat_42 Off Was nämlich sonst passieren kann, kannst Du Dir an diesem Onlinebeispiel angucken (Quellteste werden angezeigt): http://test.php-help.info/session-7/ Nach dem Klick auf 'Klick' wird auf der Folgeseite die Variable $abc auf 'Seite 3' gesetzt, aber nach session_start() durch den in der Session befindlichen Wert von der Startseite überschrieben. Hier das selbe Script mit register_globals = Off: http://test.php-help.info/session-7.1/ HIer abschließend noch ein Beispielscript für den Umgang mit Session: http://test.php-help.info/session-1/ |
AW: Session Warnung
Zuerst einnmal Dankeschön an meikel für die Aufklärung. Leider habe ich aber mal wieder nur die Hälfte verstanden und versuche mal zu resumieren:
PHP-Code:
PHP-Code:
Wenn alles so bleiben würde auf meinem Server wie zuvor (globals = off) würde diese Änderung des Codes das Problem mit den Warnungen bereits beheben ? Das wäre alles ? Oder müßte dafür auch php_flag session.bug_compat_42 Off php_flag session.bug_compat_warn Off mittels htaccess geändert werden. Wenn ich das richtig verstehe würde dann die Fehlermeldung ausbleiben. Sie würde aber doch auch ausbleiben, wenn ich den Code der Session-Variablen-Initialisierung ändern würde. Habe ich das richtig verstanden? Oder müßte beides zusammen geändert werden? Wenn ja warum ? Zitat:
Zitat:
Ich verstehe es ansonsten wohl leider wirklich nicht. Bei mir landen in den Session Variablen z.B. die Werte "Login" oder eine "ID", die auf einer nächsten Seite einen bestimmten Codeteil auslöst. Diese Werte werden auch teilweise innerhalb einer Session überschrieben, z.B. wenn der Code abgearbeitet ist, und der User einen anderen Link betätigt, ist der Wert der Variable "ID" dann anders und wird wieder als $ID = $_SESSION["ID"] initialisiert. Bislang funktionierte das immer einwandfrei und ich hatte keine Probleme. Ich weiß also einfahc nciht warum ich nun die globals wieder of schalten sollte und meinen Code ändern, wo doch auch so alles funktioniert. Oder ich verstehe das Problem einfach nicht. Trotzdem vielen Dank für den Beitrag! Vielleicht kannst Du es mir "für Dumme" noch einmal erläutern? Viele Grüße Don |
AW: Session Warnung
Zitat:
Der globale Namensraum ist (wie soll mans beschreiben) das Hauptprogramm. Also der Teil, in dem PHP zu arbeiten anfängt. Sieh es mal so: PHP ist eine Sprache, die wächst. Zwischen der Version 4.1 und 4.2 trat ein Bug im Zusammenhang mit Sessions auf. Scripten, die auf dem Bug basierten, wurde ab v4.3 mit den beiden Config Flags begegnet, die man aber ausknipsen kann, wenn man ordentlich programmieren will. Sieh Dir mal da meine Config an: http://test.php-help.info/phpinfo.php Hier sind Teile der 1. Tabelle und Teile der Sessions Tabelle interessant. Zitat:
Du solltest auch daran denken, daß sowas Quark ist: PHP-Code:
PHP-Code:
Zitat:
register_globals = Off die beiden Flags ebenfalls. Dann ist "sauberes Programmieren" keine Kunst mehr. Zitat:
PHP-Code:
Zitat:
register_globals = Off konsequente Trennung im globalen Namensraum. Alle Formularvariablen landen in GET, COOKIE oder POST bzw. REQUEST. Die Sessionvariablen bleiben in SESSION. => bequemes Arbeiten register_globals = On keine Trennung mehr, weil $_GET, $_POST, $_COOKIE, $_REQUEST, $_FILES, $_SESSION und Teile von $_SERVER und $_ENV in den globalen Namensraum gemüllt werden. PHP achtet bei den beiden Flags darauf, wenn ein SESSION Index in eine gleichnamige Variable in Global dupliziert wird und warnt dann. Warum davor gewarnt wird, wenn man es richtig macht (register_globals = Off), wissen die Götter oder derjenige, der den PHP Göttern den Stoff verkauft hat. <ggg> Zitat:
PHP4 http://test.php-help.info/auth-4/ PHP5 http://test.php-help.info/auth-3/ Gucks Dir an und versuch das Prinzip zu verstehen. Das Teil ist sehr pflegeleicht, obwohl bestimmt ein paar Schönheitsfehler noch vorhanden sind. Zitat:
|
AW: Session Warnung
Hallo Meikel,
entschuldige bitte, dass ich mich erst jetzt für den neuerlichen Beitrag bedanke aber ich war einige Tage unterwegs. Ich werde mich der Sache, sobald ich Zeit dazu habe annehmen und die Skripte entsprechend korrigieren. Vielen Dank! |
Alle Zeitangaben in WEZ +2. Es ist jetzt 15:18:29 Uhr. |
Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.