kostenloser Webspace werbefrei: lima-city


SESSION funktioniert so nicht...

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    staymyfriend

    Kostenloser Webspace von staymyfriend

    staymyfriend hat kostenlosen Webspace.

    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."
    }
    ?>
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. 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
  4. 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!)
  5. 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
  6. Autor dieses Themas

    staymyfriend

    Kostenloser Webspace von staymyfriend

    staymyfriend hat kostenlosen Webspace.

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

    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.";
    }
    ?>
  7. staymyfriend schrieb:
    ... PHP zeigt mir aber egal wie ich es mache keine Fehlermeldungen an ...
    in bezug auf lima, oder rennt dein code wo anders? auf lima sollte es gehen!!(??)
  8. Autor dieses Themas

    staymyfriend

    Kostenloser Webspace von staymyfriend

    staymyfriend hat kostenlosen Webspace.

    hemiolos schrieb:
    staymyfriend schrieb:
    ... PHP zeigt mir aber egal wie ich es mache keine Fehlermeldungen an ...
    in bezug auf lima, oder rennt dein code wo anders? auf lima sollte es gehen!!(??)

    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...
  9. 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.
  10. strange schrieb:
    Die Fehlerberichte sind mit Absicht auf Lima deaktiviert ...
    ja. und was ist das dann?
    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.
  11. Autor dieses Themas

    staymyfriend

    Kostenloser Webspace von staymyfriend

    staymyfriend hat kostenlosen Webspace.

    hemiolos schrieb:
    strange schrieb:
    Die Fehlerberichte sind mit Absicht auf Lima deaktiviert ...
    ja. und was ist das dann?
    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...
  12. staymyfriend schrieb:
    ... noch zusätzlich in der .htaccess definiert?! ...
    ja:
    php_flag display_errors on
    Options -Indexes
    und die steht in meinem root-verzeichnis.
    den fehler zeigt dann das an:
    <?php
    error_reporting(E_ALL | E_STRICT);
    // ...
  13. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!