SESSION funktioniert so nicht...
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
absicht
ausgabe
bezug
code
ergebnis
fehler
fehlermeldung
forum
http
mache
problem
semikolon
session
single
strang
test
testen
url
variable gespeichert code
zeile
-
Hallo,
habe wieder ein Problem mit SESSIONs. Zum Testen habe ich mir folgenden Code geschrieben, aber als Ergebnis erhalte ich immer nur eine weiße Seite... Wer kann mir da auf die Sprünge helfen?
<?php error_reporting(E_ALL); session_start(); if (!isset($_SESSION['test'])) { echo $_SESSION['test']; } else { $_SESSION['test'] = time(); echo "Variable gespeichert." } ?>
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Deine if-else-Konstrukt besagt in etwa folgendes:
wenn $_SESSION['test'] nicht existiert/gesetzt ist dann gib es aus, ansonsten fülle es mit dem aktuellen Zeitstempel.
Da du vor der if-Anweisung allerdings nur die Session startest, aber $_SESSION['test'] keinen Wert zuweist kann auch nichts ausgegeben werden -> weiße Seite.
Lösungsansatz:
if (!isset($_SESSION['test'])) {
ändern...
Beitrag zuletzt geändert: 27.10.2011 10:52:38 von alfr3d -
staymyfriend schrieb:
..., aber als Ergebnis erhalte ich immer nur eine weiße Seite...
<?php error_reporting(E_ALL); session_start(); if (!isset($_SESSION['test'])) { echo $_SESSION['test']; } else { $_SESSION['test'] = time(); echo "Variable gespeichert." } ?>
1. verwende statt 'error_reporting(E_ALL);' 'error_reporting(E_ALL | E_STRICT);'
2. wenn 'echo "Variable gespeichert."' wirklich so steht, schreibe es so 'echo "Variable gespeichert.";'. (semicolon!) -
Hallo
Für Fehler-Ausgabe muss neben error_reporting() auch display_errors an schalten
ini_set("display_errors", ON);
wobei ich nicht weiss, ob auf lima-city ini_set funktioniert
sonst direkt in eine php.ini schreiben
error_reporting = E_ALL|E_STRICT display_errors = On display_startup_errors = On
wobei ich nicht weiss, ob auf lima-city eine eigene php.ini funktioniert
sonst in eine .htaccess Datei
php_flag display_errors on php_value error_reporting 30711
Erklärung für den Zahlenwert siehe: http://www.php.net/manual/de/errorfunc.constants.php
(beachte dabei unterschiedliche Werte für verschiedenen PHP Versionen)
und bei Deinem zweiten echo fehlt ein Semikolon ; (Strichpunkt) am Ende
echo "Variable gespeichert.";
das hat ja hemiolos schon geschrieben, ich weise nur nochmal drauf hin ...
Beitrag zuletzt geändert: 27.10.2011 13:13:25 von anlagegeld -
hemiolos schrieb:
[...]
1. verwende statt 'error_reporting(E_ALL);' 'error_reporting(E_ALL | E_STRICT);'
2. wenn 'echo "Variable gespeichert."' wirklich so steht, schreibe es so 'echo "Variable gespeichert.";'. (semicolon!)
Danke für den Tipp. PHP zeigt mir aber egal wie ich es mache keine Fehlermeldungen an. Lag aber scheinbar wirklich nur an dem fehlenden Semikolon...
Mein Code sieht jetzt so aus und funktioniert soweit... Habe ihn ergänzt, sodass die Session-Variable nach der Ausgabe gelöscht und bei erneutem Aufruf des Scripts neu gespeichert wird. (Ständiger Wechsel!)
<?php error_reporting(E_ALL | E_STRICT); session_start(); if (isset($_SESSION['test'])) { echo $_SESSION['test']; unset($_SESSION['test']); } else { $_SESSION['test'] = time(); echo "Variable gespeichert."; } ?>
-
hemiolos schrieb:
staymyfriend schrieb:
in bezug auf lima, oder rennt dein code wo anders? auf lima sollte es gehen!!(??)
... PHP zeigt mir aber egal wie ich es mache keine Fehlermeldungen an ...
Hier auf lima zeigt php mir keine Fehler an, auf XAMPP (localhost) funktioniert es. Zum Testen habe ich das Semikolon, welches schon einmal das Problem gewesen ist, noch einmal entfernt. Auch habe ich meinem Code die Zeile
'ini_set('display_errors','On');' nach 'error_reporting(E_ALL|E_STRICT);' hinzugefügt...
<?php error_reporting(E_ALL|E_STRICT); ini_set('display_errors','On'); session_start(); if (isset($_SESSION['test'])) { echo $_SESSION['test']; unset($_SESSION['test']); } else { $_SESSION['test'] = time(); echo "Variable gespeichert." } ?>
Mit dem jetzt absichtlich im Code fehlendem Semikolon funktioniert das Script ohne Probleme... -
Die Fehlerberichte sind mit Absicht auf Lima deaktiviert und auch via ini_set kann man da nicht viel machen. Sprich Lokal bei Dir via XAMPP Deinen Code testen und dann hier hochladen, wenn alles richtig läuft. XAMPP ist aber eine recht unsichere Sache und es kann sein, das bei Dir Lokal alles richtig läuft, Du aber in einer richtigen Serverumgebung Deinen Code nicht zum laufen bekommst. Kurz gesagt, was bei XAMPP läuft, läuft nicht unbedingt auf allen Servern!
Btw. error_reporting(E_ALL | E_STRICT) und ini_set('display_errors', 'On'), kannst Dir bei XAMPP ebenfalls sparen, ist per Default so definiert, aber es schadet nicht wirklich...
Außerdem entscheide Dich entweder für Double- oder Single-Qoutes, nicht beides. Du wirst sonst später auf Probleme treffen, die Dir ziemlich den Tag versauen können. Persönlich bevorzuge ich Single-Qoutes, da man nicht mehr escapen muss, aber man kann dann leider nicht mehr \n und so weiter verwenden. Aber da man sowas eher selten verwendet, rate ich Dir zu Single-Qoutes.
Dass das fehlende Semikolon am Ende des Scripts keinen Fehler verursacht hat, liegt einfach daran, das keine anderen Befehle mehr hinter dem "echo" sind. Dennoch solltest Du auch dort das Semikolon setzen, falls Du Datei inkludierst, sonst gibt es halt nen Fehler. -
strange schrieb:
ja. und was ist das dann?
Die Fehlerberichte sind mit Absicht auf Lima deaktiviert ...
1. ohne fehler
2. mit fehler (hier steht in zeile sechs echo ohne semicolon.)
also doch nicht deaktiviert.
und auch via ini_set kann man da nicht viel machen
das ist richtig: aus sicherheitsgründen deaktiviert. -
hemiolos schrieb:
strange schrieb:
ja. und was ist das dann?
Die Fehlerberichte sind mit Absicht auf Lima deaktiviert ...
1. ohne fehler
2. mit fehler (hier steht in zeile sechs echo ohne semicolon.)
also doch nicht deaktiviert.
und auch via ini_set kann man da nicht viel machen
das ist richtig: aus sicherheitsgründen deaktiviert.
Wie hast Du das gemacht, dass lima Dir doch Fehler anzeigt? Hast Du das noch zusätzlich in der .htaccess definiert?! Ich bekomme nur eine weiße Seite angezeigt... -
staymyfriend schrieb:
ja:
... noch zusätzlich in der .htaccess definiert?! ...
und die steht in meinem root-verzeichnis.php_flag display_errors on Options -Indexes
den fehler zeigt dann das an:
<?php error_reporting(E_ALL | E_STRICT); // ...
-
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage