Sessionvariable übergeben

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

  • Sessionvariable übergeben

    Hi,

    ich habe ein Formular, in dem Userdaten eingegeben und in eine DB übertragen werden sollen. Das funktioniert soweit auch ganz gut.
    Mein Problem ist folgendes. Ich würde jetzt vor dem Eintragen in die DB gerne überprüfen, ob alle Felder in dem Formular ausgefüllt wurden. Wenn ja wird alles eingetragen, wenn nicht, soll das Formular wieder geladen werden mit dem entsprechenden Hinweis "Feld x, y" ist nicht ausgefüllt. Bereits eingegebene richtige Daten sollen dabei im Formular stehen bleiben, so dass diese nicht nochmal eingegeben werden müssen.

    Wenn man mein Formular aufruft, wird direkt mit
    PHP-Code:
    <?php session_start(); ?>
    eine Session gestartet.

    mein formular (register.php) sieht wie folgt aus:
    PHP-Code:
    <form action="user_neu.php" method="post">
        <?php
            $_SESSION
    ["error"];
            echo 
    "<input type=\"text\" name=\"nickname\" value=\"" $_SESSION["nickname"] . "\"> <strong>Nick</strong><br />";
            echo 
    "<input type=\"password\" name=\"kennwort\" > <strong>Passwort</strong><br />";
            echo 
    "<input type=\"text\" name=\"nachname\" value=\"" $_SESSION["nickname"] . "\"> <strong>Nachname</strong><br />";
            echo 
    "<input type=\"text\" name=\"vorname\" value=\"" $_SESSION["vorname"] . "\"> <strong>Vorname</strong><br />";
            echo 
    "<input type=\"text\" name=\"mail\" value=\"" $_SESSION["mail"] . "\"> <strong>Email</strong><br />";
        
    ?>
            <input id="button" type="submit" value="senden" />
        </form>
    $_SESSION["error"] ist der Fehler, der ausgegeben werden soll. $_SESSION["nickname"], $_SESSION["nickname"], usw. die bereits eingegebenen Daten.

    Die eingegebenen Daten werden jetzt per post an user_neu.php übergeben.
    Die user_neu.php sieht wie folgt aus:
    PHP-Code:
    <?php session_start();
    if (
    $_POST) {
       
    $_SESSION['nickname'] = $_POST['nickname'];
       
    $_SESSION['kennwort'] = md5 ($_POST['kennwort']);
       
    $_SESSION['pass'] = $_POST['pass'];
       
    $_SESSION['nachname'] = $_POST['nachname'];
       
    $_SESSION['vorname'] = $_POST['vorname'];
       
    $_SESSION['mail'] = $_POST['mail'];
       }

    if ( empty(
    $_SESSION['nickname']) ) {
       
    $_SESSION['Error'] = "Kein Nickame!";
       
    header("Location: register.php");
       exit;
    } elseif ( empty(
    $_SESSION['kennwort']) ) {
       
    $_SESSION['Error'] = "Kein PW!";
       
    header("Location: register.php");
       exit;
    } elseif ( empty(
    $_SESSION['nachname']) ) {
       
    $_SESSION['Error'] = "Kein Nachname!";
       
    header("Location: register.php");
       exit;
    } elseif ( empty(
    $_SESSION['vorname']) ) {
       
    $_SESSION['Error'] = "Kein Vorname!";
       
    header("Location: register.php");
       exit;
    } elseif ( empty(
    $_SESSION['mail']) ) {
       
    $_SESSION['Error'] = "Keine Mail!";
       
    header("Location: register.php");
       exit;
    } else {
      
    $sql "INSERT INTO benutzerdaten...
    ?>
    die variablen werden jetzt allerdings nicht wieder zurück übergeben in die register.php. der code läuft, egl ob ich alle felder ausfülle oder nicht, immer bis zur sql-anweisung.

    Ich hoffe, ich habe verständlich genug gefragt und der ein oder andere User hier kann mit meinen Angaben etwas anfangen und mir helfen.

    Vielen Dank

  • #2
    PHP-Code:
    $_SESSION["error"]; 
    Halte ich für wenig Sinnvoll solange du die Variable nicht benutzt.

    Was heißt denn "Kommt nur bis zum SQL" ? Wird das Statement ausgeführt? Wenn ja, fehlerfrei? mal "or die(mysql_error())" probiert? Wird ein Fehler ausgegeben?
    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

    Kommentar


    • #3
      $_SESSION['Error'] und $_SESSION['error'] sind verschiedene variablen.
      ausserdem überschreibst du jedes mal dein password mit md5
      damit meine ich, dass wenn der user sich ein mal vertan hat, dann bekommt er bei zweitem versuch nicht md5 von dem password, sondern
      md5 von md5(password)
      ich sehe auch nicht, dass du $_SESSION['error']=""; machst
      und dass bedeutet, dass wenn der user ein fehlermacht, dann wird error nie leer sein.
      Zuletzt geändert von Slava; 17.11.2006, 13:35.
      Slava
      bituniverse.com

      Kommentar


      • #4
        @Arsen:
        er führt den code bis zur sql anweisung aus und trägt daten in die db.

        wieso wenig sinnvoll mit der error variable? wenn die nicht benutzt wird, wird eben nix ausgegeben und wenn dann ein fehler auftritt, dann wird ein fehler in der var gespeichert und ausgegeben?!?!

        logikfehler meinerseits?

        @slava: sry...tippfehler von mir. schreibweise is gleich.
        $_SESSION['error']=""; passiert hier.
        PHP-Code:
        if ( empty($_SESSION['nickname']) ) {
           
        $_SESSION['Error'] = "Kein Nickame!";
           
        header("Location: register.php");
           exit;

        gibts ne geschicktere lösung? bestimmt aber ich wollts halt mal selber probieren.

        Kommentar


        • #5
          wie wärs mit nem var_dump von $_POST und $_SESSION?
          PHP Forum
          Sessions in PHP
          Loginsystem mit PHP erstellen

          Kommentar


          • #6
            Original geschrieben von daffy
            gibts ne geschicktere lösung? bestimmt
            ja, in diesem fall ohne sessions.
            pack einfach das formular und die -verarbeitung in eine datei - stichwort affenformular.

            Kommentar


            • #7
              Original geschrieben von 3DMax
              pack einfach das formular und die -verarbeitung in eine datei - stichwort affenformular.
              uih...sowas hab ich noch nie versucht. ich teste es mal und poste dann hier das ergebnis.
              je nachdem wie sehr das in die hose geht wäre ich für unterstützung dankbar.

              Kommentar


              • #8
                Original geschrieben von daffy
                je nachdem wie sehr das in die hose geht wäre ich für unterstützung dankbar.
                Auf phpforum.de hast du schon Unterstützung bekommen, sogar, wie du das mit Sessions machen kannst. Nur hast du davon nichts umgesetzt.

                Kommentar

                Lädt...
                X