Session Problem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Session Problem

    Hi Leute,

    ich arbeite gerade an einem Webshop. Mein Problem habe ich nun bei der Registrierung des Benutzers. Das Formular teilt sich auf 3 Dateien auf: "register_step1.php" (Name, Adressangabe und Zahlungsart), "register_step2.php (Lieferadresse)" & "register_step3.php (Zahlungseingaben und Kennwort)".

    In "register_step2.php" werden die Eingaben aus der ersten Stufe per POST geladen und dann in der Session registriert. Und genauso dann in der dritten Stufe aus der zweiten Stufe.

    Auf der ersten Seite habe ich allerdings eine Checkbox, um die Lieferadresse zu überspringen, wenn Adresse und Lieferadresse gleich sind.

    Nun zu meinem Prob: Wenn ich Eingaben im ersten File mache und dann die Checkbox "Lieferadresse gleich Adresse" NICHT aktiviere und somit zur Stufe 2 komme und dann zur Stufe 3 linke, kann ich die Daten aus der Session abrufen. Checke ich hingegen die Checkbox und komme gleich zur 3. Stufe, kann ich nicht mehr auf die Session-Daten zugreifen. Welches Problem könnte das sein? Ich poste mal den Code:

    register_step1.php (Nur mal Session-Unregister, damit die Session sauber ist)
    PHP-Code:
    session_start();

    // Unregister
    session_unregister("salutation");
    session_unregister("firstname");
    session_unregister("lastname");
    session_unregister("firmname");
    session_unregister("street");
    session_unregister("housenumber");
    session_unregister("method_of_payment");
    session_unregister("zipcode");
    session_unregister("country");
    session_unregister("phone");
    session_unregister("fax");
    session_unregister("email");
    session_unregister("deliveryadress_session");

    session_unregister("salutation_delivery");
    session_unregister("firstname_delivery");
    session_unregister("lastname_delivery");
    session_unregister("firmname_delivery");
    session_unregister("street_delivery");
    session_unregister("housenumber_delivery");
    session_unregister("method_of_payment_delivery");
    session_unregister("zipcode_delivery");
    session_unregister("country_delivery");
    session_unregister("phone_delivery");
    session_unregister("fax_delivery");
    session_unregister("email_delivery");

    session_destroy(); 
    register_step2.php (Registrierung der Eingaben aus Stufe 1)
    PHP-Code:

    $salutation 
    $_POST["fsalutation"];
    $firstname $_POST["ffirstname"];
    $lastname $_POST["flastname"];
    $firmname $_POST["ffirmname"];
    $street $_POST["fstreet"];
    $housenumber $_POST["fhousenumber"];
    $method_of_payment $_POST["fmethodofpayment"];
    $zipcode $_POST["fzipcode"];
    $city $_POST["fcity"];
    $country $_POST["fcountry"];
    $phone $_POST["fphone"];
    $fax $_POST["ffax"];
    $email $_POST["femail"];
    $deliveryadress_checkbox $_POST["deliveryadress_checkbox"];

    session_start();
    session_register("salutation");
    session_register("firstname");
    session_register("lastname");
    session_register("firmname");
    session_register("street");
    session_register("housenumber");
    session_register("method_of_payment");
    session_register("zipcode");
    session_register("country");
    session_register("phone");
    session_register("fax");
    session_register("email");
    session_register("deliveryadress_checkbox"); 
    register_step3.php (Registrierung der Daten aus Stufe 2)
    PHP-Code:
    $salutation_delivery $_POST["fsalutation_delivery"];
    $firstname_delivery $_POST["ffirstname_delivery"];
    $lastname_delivery $_POST["flastname_delivery"];
    $firmname_delivery $_POST["ffirmname_delivery"];
    $street_delivery $_POST["fstreet_delivery"];
    $housenumber_delivery $_POST["fhousenumber_delivery"];
    $zipcode_delivery $_POST["fzipcode_delivery"];
    $city_delivery $_POST["fcity_delivery"];
    $country_delivery $_POST["fcountry_delivery"];
    $phone_delivery $_POST["fphone_delivery"];
    $fax_delivery $_POST["ffax_delivery"];
    $email_delivery $_POST["femail_delivery"];

    // Register
    session_register("salutation_delivery");
    session_register("firstname_delivery");
    session_register("lastname_delivery");
    session_register("firmname_delivery");
    session_register("street_delivery");
    session_register("housenumber_delivery");
    session_register("zipcode_delivery");
    session_register("city_delivery");
    session_register("country_delivery");
    session_register("phone_delivery");
    session_register("fax_delivery");
    session_register("email_delivery"); 
    Die Daten aus der Session rufe ich dann so ab:

    PHP-Code:
    $method_of_payment $_SESSION["method_of_payment"];
    echo 
    "Zahlungsart: $method_of_payment"
    Muss ich auf jeder Seite eine neue Session starten oder genügt das einmal?

    Danke für eure Hilfe!
    Greetz Lukas

  • #2
    Meines wissens auf jeder Seite starten

    gem manual

    Mit session_start() erstellt man eine neue Session oder führt eine schon
    bestehende Session fort, deren ID über eine GET-Variable oder ein Cookie
    übermittelt wurde.
    Im Erfolgsfall gibt die Funktion true zurück.
    _____________
    Ist das so? Scheinbar muss das so?! Oder ist es vielleicht viel leichter...
    [color=red]Auch ich beantworte keine mails bei php problemen! Für das gibts ja das Forum!![/color]

    Kommentar


    • #3
      du musst in jeder seite die der benutzer zu gesicht bekommt session_start aufrufen

      was dein problem it der checkbox angeht:
      wenn die checkbox markiert ist, geht er nicht zu datei 2 und registriert daher auch nix in der session

      entweder du sendest das formular aus datei 1 wieder an datei 1 (affenformular), registrierst da alles in der session und machst dann ne weiterleitung an datei 2 oder datei 3
      oder du musst in datei 3 auswerten ob die checkbox markiert ist

      P.S.
      PHP-Code:
      unset($_SESSION); 
      is das gleiche wie deine ganzenvielen session_unregister und
      PHP-Code:
      $_SESSION['plz']=$_POST['plz']; 
      find ich auch einfacher als deine art der zuweisung
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        @mrhappiness

        erstmal danke für deine Hilfe!

        Ich habe noch einen kleinen Teil meines Skripts aus Datei 2 vergessen. Also nochmal der ganze Code:

        PHP-Code:
        $salutation $_POST["fsalutation"];
        $firstname $_POST["ffirstname"];
        $lastname $_POST["flastname"];
        $firmname $_POST["ffirmname"];
        $street $_POST["fstreet"];
        $housenumber $_POST["fhousenumber"];
        $method_of_payment $_POST["fmethodofpayment"];
        $zipcode $_POST["fzipcode"];
        $city $_POST["fcity"];
        $country $_POST["fcountry"];
        $phone $_POST["fphone"];
        $fax $_POST["ffax"];
        $email $_POST["femail"];
        $deliveryadress_checkbox $_POST["deliveryadress_checkbox"];

        if (
        $deliveryadress_checkbox == "1") {
            
        $deliveryadress "1";
        } else {
            
        $deliveryadress "0";
        }

        $deliveryadress_session $deliveryadress_checkbox;

        session_start();

        session_register("salutation");
        session_register("firstname");
        session_register("lastname");
        session_register("firmname");
        session_register("street");
        session_register("housenumber");
        session_register("method_of_payment");
        session_register("zipcode");
        session_register("country");
        session_register("phone");
        session_register("fax");
        session_register("email");
        session_register("deliveryadress_session");


        if (
        $deliveryadress == 1) {
            
        header("Location:register_step3.php?visitkey=$visitkey");
            exit;

        Also zuerst hole ich mir aus Datei 1 die Eingaben, dann registriere ich alle Eingaben in der Session. Wenn die Checkbox aktiv war und Adresse und Lieferadresse gleich sind, leite ich zu Stufe 3 weiter, wenn nicht, dann lade ich Stufe 2.

        Das müsste doch so passen, oder? Denn die Daten werden ja in jedem Fall registriert...

        Grüße Lukas

        Kommentar

        Lädt...
        X