Volker: Problem mit Session

Hallo zusammen,

ich habe folgendes Problem mit einer Session:
in einer Datei index.php starte ich zu Anfang eine Session mittels
session_start();
, weiterhin wird ein Loginformular und ein Captcha-Code angezeigt:
echo "<img src="captcha.inc.php" id="captcha" alt="Captcha" />";
echo "<input type="text" name="captcha" />";

In der captcha.inc.php erzeuge ich nun ein Bild und setze mittels
$_SESSION["captcha"] = **erzeugterText**;
den Captcha-Text in die Session-Variable "captcha".

Beim Absenden des Formulars wird erneut die index.php aufgerufen und es soll verglichen werden: Ist
$_SESSION["captcha"] == $_POST["captcha"]
?

Nun ist es ja so, dass die Variable $_SESSION["captcha"] durch das Ausführen von
session_start();
am Anfang der index.php gelöscht wird, und ich somit nicht vergleichen kann.
Nun aber das (für mich) paradoxe:
Wenn ich in der captcha.inc.php erneut ein
session_start();
einbaue, funktioniert alles.

1. Kann mir das jemand erklären?
2. Ich will meinen Code nur ungern durch sematische Ungereimtheiten aufweichen. Gibt es eine Möglichkeit, das zweimalige session_start() zu vermeiden?

Danke im Voraus für Antworten,

Gruß,
Volker

  1. hi,

    Nun ist es ja so, dass die Variable $_SESSION["captcha"] durch das Ausführen von
    session_start();
    am Anfang der index.php gelöscht wird

    Wie meinen?

    Nun aber das (für mich) paradoxe:
    Wenn ich in der captcha.inc.php erneut ein
    session_start();
    einbaue, funktioniert alles.

    1. Kann mir das jemand erklären?

    Was gibt es da zu erklären?
    Das Manual erklärt dir doch bereits ganz deutlich, dass du session_start() auf jeder Seite benutzen musst, wo du Sessionvariablen verwenden willst.

    1. Ich will meinen Code nur ungern durch sematische Ungereimtheiten aufweichen. Gibt es eine Möglichkeit, das zweimalige session_start() zu vermeiden?

    Natürlich nicht - es ist absolut erforderlich.

    Vielleicht solltest du dir noch mal klar machen, wie Sessions funktionieren.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Was gibt es da zu erklären?
      Das Manual erklärt dir doch bereits ganz deutlich, dass du session_start() auf jeder Seite benutzen musst, wo du Sessionvariablen verwenden willst.

      Okeeh, das behebt auch schwups das Problem.
      Da ich die entsprechende Textstelle nicht gefunden habe (und auch im Nachhinein nichts derartiges entdecken kann), bin ich von einer falschen Annahme ausgegangen.

      Danke für die Hilfe und ein wunderschönes Wochenende.

      Gruß,
      Volker