Problem mit $_POST[]

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

  • Problem mit $_POST[]

    Hallo zusammen,

    momentan habe ich das Problem, das einige Variablen leer sind. obwohl sie vorher im Formular einen Inhalt hatten.

    formular.html
    PHP-Code:
    form action="register_save.php" method="post">
    <div id="table_head"><br><b>Registrierung - Accountinformation</b></div>
    <div id="table_content"><br><table width="80%">
        <tr>
            <td>Benutzername</td>
            <td><input class="<?php echo $errorClass['user']; ?>" value="<?php echo $_POST['user']; ?>" type=text name=user></td>
        </tr>
        <tr>
            <td>E-Mail</td>
            <td><input class="<?php echo $errorClass['mail']; ?>" value="<?php echo $_POST['mail']; ?>" type=text name=mail></td>
        </tr>
        <tr>
            <td>E-Mail (Wdh)</td>
            <td><input class="<?php echo $errorClass['mail1']; ?>" value="<?php echo $_POST['mail1']; ?>" type=text name=mail1></td>
        </tr>
        <tr>
            <td>Passwort</td>
            <td><input class="<?php echo $errorClass['passwd']; ?>" value="<?php echo $_POST['passwd']; ?>" type=password name=passwd></td>
        </tr>
        <tr>
            <td>Passwort (Wdh)</td>
            <td><input class="<?php echo $errorClass['passwd1']; ?>" value="<?php echo $_POST['passwd1']; ?>" type=password name=passwd1></td>
        </tr>
    </table></div>
    <div id="table_footer"></div>
    register_save.php
    PHP-Code:
    <?php

    print_r
    ($_POST);

    $errorFields = array('user',
                         
    'mail',
                         
    'mail1',
                         
    'passwd',
                         
    'passwd1');

    $error FALSE;                     
    foreach(
    $errorFields as $key => $value) {
        if(empty(
    $_POST[$errorFields[$key]])) {
            
    $error TRUE;
            
    $errorClass[$value] = 'errorField';
            
    $errorMessage 'ist leer';
        }
    }

    if(
    $error == TRUE) {

        include(
    "html/regerror.html");
        include(
    "html/registrieren.html");
    } else {

        if(
    md5(strtoupper($_POST['captcha'])) == $_SESSION['captcha']) {
        
        if(!empty(
    $_POST['user']) && !empty($_POST['mail']) && !empty($_POST['mail1']) && !empty($_POST['passwd']) && !empty($_POST['passwd1'])) {
        
            if(
    $_POST['passwd'] == $_POST['passwd1'] || $_POST['mail'] == $_POST['mail1']) {
    Ausgabe vom Seitenquelltext:
    Code:
    Array ( [user] => [mail] => muh [mail1] => muh [passwd] => [passwd1] => dsfsdf [captcha] => )
    Hat jemand ne Ahnun warum dies so ist?

  • #2
    HTML-Attribute gehören in Anführungszeichen, das sind aber absolute HTML-Grundlagen. Bitte erst HTML lernen, bevor du PHP programmierst.

    Außerdem missbrauchst du eine Tabelle für Layout-Zwecke. Dafür gibts aber schon seit Jahren CSS.

    http://de.selfhtml.org/html/
    http://de.selfhtml.org/css/

    Kommentar


    • #3
      Das erklärt trotzdem nicht, warum einige Variablen leer sind.

      Kommentar


      • #4
        Woher weißt du, dass sie leer sind? Über die $errorField-Prüfung im Skript oder durch die Ausgabe des $_POST-Arrays? Im letzteren Falle sind sie vielleicht gar nicht leer, sondern enthalten nur Leerzeichen, was von empty() natürlich nicht berücksichtigt wird.

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Über $errorField & $_POST Ausgabe.

          Kommentar


          • #6
            Zitat von Lord-Napoleon Beitrag anzeigen
            Das erklärt trotzdem nicht, warum einige Variablen leer sind.
            Verwende var_dump() statt print_r(), dann sieht man besser ob sie wirklich leer sind.

            Kommentar


            • #7
              array(6) {
              ["user"]=&gt;
              string(0) ""
              ["mail"]=&gt;
              string(1) "1"
              ["mail1"]=&gt;
              string(1) "1"
              ["passwd"]=&gt;
              string(0) ""
              ["passwd1"]=&gt;

              string(1) "2"
              ["captcha"]=&gt;
              string(0) ""
              }

              Kommentar


              • #8
                Und der HTML-Code deines Formulars ist valide? Im geposteten Codeabschnitt fehlt z. B. das < beim form-Element und das schließende Tag fehlt ebenfalls. Am besten jagst du es erstmal durch den W3C Validator und korrigierst den HTML-Code. Dann sehen wir weiter.
                [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                Super, danke!
                [/COLOR]

                Kommentar


                • #9
                  Mir sticht jetzt auf Anhieb mal das hier ins Auge
                  PHP-Code:
                  if(empty($_POST[$errorFields[$key]])){ 
                  erscheint mir komisch, kann eigentlich so nicht den gewünschten empty-Vergleich bringen - aber ob es das alleine ist, vermag ich jetzt auf Anhieb nicht zu sagen...

                  EDIT:
                  Stop - bin auf dem Holzweg, wobei die Aufdröselung des Array mittels foreach nach $key=>$value und dann doch wieder der Zugriff per $errorFields[$key] auf den Wert statt einfach $value zu nehmen schon seltsame Vorgehensweisen sind. Aber manche fangen halt nen Fisch, werfen ihn anschliessend zurück ins Wasser um ihn dann wieder zu fangen *gg*.
                  Zuletzt geändert von Quetschi; 09.02.2010, 09:44.
                  Ihr habt ein Torturial durchgearbeitet, das auf den mysql_-Funktionen aufbaut?
                  Schön - etwas Geschichte kann ja nicht schaden.
                  Aber jetzt seht euch bitte php.net/pdo oder php.net/mysqli bevor ihr beginnt!

                  Kommentar

                  Lädt...
                  X