Ankündigung

Einklappen
Keine Ankündigung bisher.

Formulardaten werden nicht übermittelt

Einklappen

Neue Werbung 2019

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

  • Formulardaten werden nicht übermittelt

    Hallo,

    login.php

    (von Bootstrap)

    PHP-Code:
    <form action="" method="POST">

                      <
    div class="d-flex align-items-center mb-3 pb-1">
                        <
    class="fas fa-cubes fa-2x me-3" style="color: #ff6219;"></i>
                        <
    span class="h1 fw-bold mb-0">Login</span>
                      </
    div>

                      <
    h5 class="fw-normal mb-3 pb-3" style="letter-spacing: 1px;">Melde dich hier an</h5>

                      <
    div class="form-outline mb-4">
                        <
    input type="email" name="loginemail" id="form2Example17" class="form-control form-control-lg" />
                        <
    label class="form-label" for="form2Example17">Email Adresse</label>
                      </
    div>

                      <
    div class="form-outline mb-4">
                        <
    input type="password" name="loginpwd" id="form2Example27" class="form-control form-control-lg" />
                        <
    label class="form-label" for="form2Example27">Passwort</label>
                      </
    div>

                      <
    div class="pt-1 mb-4">
                       <
    a href="http://localhost/Webshop/checklogin.php"> <button class="btn btn-dark btn-lg btn-block" name="loginanmelden" type="button">Anmelden</button></a>
                      </
    div>

                      <
    class="small text-muted" href="#!">Passwort vergessen?</a>
                      <
    class="mb-5 pb-lg-2" style="color: #393f81;">Noch kein Konto? <a href="#!" style="color: #393f81;">Hier registrieren</a></p>
                      <
    a href="#!" class="small text-muted">Terms of use.</a>
                      <
    a href="#!" class="small text-muted">Privacy policy</a>
                    </
    form
    checklogin.php

    PHP-Code:
    echo "checklogin seite";

    $email $_POST["loginemail"];
    var_dump($email); //NULL

    if(isset($_POST['loginemail']) && !empty($_POST['loginemail']) AND isset($_POST['loginpwd']) && !empty($_POST['loginpwd'])) {

        echo 
    $email;


    Was mache ich hier falsch, dass die eingegebenen Logindaten nicht übertragen werden?

  • #2
    Du solltest dein Button nicht innerhalb eines A - Link Tag haben. Und den Button Type in "submit" ändern.

    Kommentar


    • #3
      Zitat von Zeichen32 Beitrag anzeigen
      Du solltest dein Button nicht innerhalb eines A - Link Tag haben. Und den Button Type in "submit" ändern.
      Danke.

      Aber jetzt springt er wieder auf die login.php seite.

      Kommentar


      • #4
        Wenn du das Formular zu einer anderen PHP Datei schicken möchtest, dann musst du die URL im action Attribute deines Formulars eintragen.

        HTML-Code:
        <form action="http://localhost/Webshop/checklogin.php" method="POST">

        Kommentar


        • #5
          Das heißt, das href hat gar keine funktion um den button ?

          PHP-Code:
          <a href="http://localhost/Webshop/checklogin.php">... 

          Kommentar


          • #6
            Das A um den Button ist ungültiges HTML und wird wahrscheinlich von einigen Browsern wie ein Klick auf ein Link gewertet.
            Wenn du eine vernünftigen IDE verwendest, sollte sie dich auch auf den Fehler hinweisen.

            The element button must not appear as a descendant of the a element.
            Du kannst dein HTML Code auch in den W3C Validator einfügen, dann werden dir alle HTML Fehler angezeigt:
            The W3C Markup Validation Service

            Kommentar


            • #7
              PHP-Code:
              <form action="http://localhost/Webshop/feedback.php" method="POST">
                              <
              div class="row rone">
                                  <
              div class="form-group col-md-5 fone"> <input type="text" class="form-control" placeholder="Vorname"> </div>
                                  <
              div class="form-group col-md-5 ftwo"> <input type="text" class="form-control ml-3" placeholder="Nachname">
                                  <
              class="para1 pt-2 pl-1"> </p>
                                   </
              div>
                              </
              div>
                              <
              div class="row rtwo">
                                  <
              div class="form-group col-md-12 fthree"> <input type="email" name="registeremail" class="form-control" placeholder="Email"> <small class="text-muted">
                                          <
              class="para1 pt-2 pl-1"> </p>
                                      </
              small> </div>
                              </
              div>
               <
              div class="row rthree">
                                  <
              div class="form-group col-md-5 ffour"> <input type="password" class="form-control" placeholder="Password"> </div>
                                  <
              div class="form-group col-md-5 ffive"> <input type="password" class="form-control ml-3" placeholder="Confirm password"> </div> <small class="text-muted px-3">
                                      <
              class="para2 pl-3"> </p>
                                  </
              small>
                              </
              div>
                              <
              div class="row rfour">
                                  <
              div class="col-md-4 ml-3"> <button type="submit" name="registerbtn" class="btn btn-primary mt-3"><span>Registrieren</span></button> </div>
                              </
              div>
                          </
              form
              PHP-Code:
              $email $_POST['registeremail'];

              $checkemail mysqli_query("SELECT * FROM `nutzer` WHERE `Email` = '$email'");



              if(isset(
              $_POST['registerbtn'])) {
                  if(
              mysqli_num_rows($checkemail)) {
                      echo 
              "Email existiert";
                  } else {
                      echo 
              "Email existiert nicht!!";
                      
              var_dump($email); //OK
                      
              var_dump($checkemail); //NULL
                      
              var_dump(isset($_POST['registerbtn'])); //true
                      
              var_dump(mysqli_num_rows($checkemail)); //NULL
                  
              }
              } else {
                  echo 
              "whaat?";

              Was mache ich wieder falsch?

              Kommentar


              • #8
                Was du falsch machst? Du beschreibst die Fehlermeldung nicht. Einfach nur fragen: "Was mache ich falsch?" ist keine.
                Kaputte Shift-Taste lass ich nicht gelten, gibt noch ne zweite!

                Kommentar


                • #9
                  Er geht immer in den else block rein, obwohl die email existiert.

                  Kommentar


                  • #10
                    Aktivier das Error-Reporting von mysqli.

                    PHP-Code:
                    mysqli_report(MYSQLI_REPORT_ERROR); 
                    Bei deinem mysqli_query() aufruft fehlt übrigens der zweite Parameter. Hier wirft PHP garantiert eine Fehlermeldung. Fehlermeldungen sind dazu da sie zu lesen und nicht zu ignorieren.

                    Kommentar


                    • #11
                      Zitat von d.a. Beitrag anzeigen
                      Was mache ich wieder falsch?
                      So einiges (das wichtigste zuerst):
                      - du beachtest den Kontextwechsel nach SQL nicht und hast damit eine gefährliche Sicherheitslücke
                      - du liest das Handbuch nicht und ignorierst dass mysqli_query zwei Parameter erwartet (PHP sollte das dir auch in Form einer Fehlermeldung um die Ohren hauen - richtig eingestelltes error_reporting und display_errors vorausgesetzt)
                      - das Formular ist unbedienbar, da fehlt die Beschriftung der Felder (nein, das placeholder-Attribut ersetzt die nicht, label-Elemente sind Pflicht!)
                      - du fragst die Datenbank ab bevor du überhaupt geprüft hast ob das Formular abgeschickt wurde
                      - du verwendest »SELECT *« - gib immer die Spalten an die du brauchst
                      - die Domain würde ich in action-Attributen usw. nicht mit angeben, das wird sonst u.U. recht aufwendig wenn du die Seite mal online stellen willst. Sinnvoll dürfte auch das Thema Affenformular sein, dann brauchst du das action-Attribut garnicht

                      Kommentar


                      • #12
                        Danke schon mal für eure Antworten.

                        Ich weiß, dass ich viele Fehler drin habe, aber ich fokusiere mich oft immer auf nur eine Funktion... sorry, bin immer im Zeitdruck, daher der schlampige Umgang.

                        Ich nutze Eclipse und ich verstehe nicht, warum er nicht mir den Fehler mit den 2 Parameter in der mysqli_query anzeigt, sonst hätte ich darauf auch früher reagiert...
                        Gerade wegen der Fehlererkennung bin ich von Atom auf Eclipse umgestiegen. Nutze MAMP

                        Desweiteren melde ich mich heute Abend nochmal, wenn ich mich daran mache..

                        Kommentar


                        • #13
                          sorry, bin immer im Zeitdruck, daher der schlampige Umgang.
                          Zeitdruck & schlampige Arbeit = mangelhafte Qualität = erhöhter Zeitaufwand für Nachbesserung (was dich noch mehr unter Zeitdruck bringt und Fehler machen lässt)

                          Aus diesem Teufelskreis musst du ausbrechen...
                          Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                          Kommentar


                          • #14
                            PHP-Code:
                            <?php

                            require_once 'dbconnect.php';

                            $email $_POST['registeremail'];
                            $vorname $_POST['registervorname'];
                            $nachname $_POST['registernachname'];
                            $pwd sha1($_POST['registerpwd']);

                            $conn mysqli_connect("localhost""root""root""mydb");
                            $sql "SELECT * FROM `nutzer` WHERE `Email` = '$email'";
                            $sqlinsert "INSERT INTO `nutzer` (`Vorname`, `Nachname`, `Email`, `Passwort`) VALUES ('$vorname', '$nachname', '$email', '$pwd') ";
                            $checkemail mysqli_query($conn$sql );

                            mysqli_report(MYSQLI_REPORT_ERROR);

                            if(isset(
                            $_POST['registerbtn'])) {
                                if(
                            mysqli_num_rows($checkemail) > 0) {
                                    echo 
                            "Die Email Adresse existiert schon. Versuche es mit einer anderen. <a href = 'http://localhost/Webshop/createaccount.php'>Zurück</a>";
                                } else {
                                    
                            // "Email existiert nicht!! eintragen;
                                    
                            if(mysqli_query($conn$sqlinsert)) {
                                        echo 
                            "erfolgreich registriert";
                                    } else {
                                        
                            var_dump(mysqli_query($conn$sqlinsert));
                                        echo 
                            "hat nicht funktioniert";
                                    }
                                }
                            } else {
                                echo 
                            "whaat?";
                            }
                            mysqli_close($con);

                            ?>
                            Das Eintragen der Email adresse funktioniert nicht. mysqli_query($conn, $sqlinsert) ist immer false.

                            Kommentar


                            • #15
                              Und? Frag halt die Datenbank nach dem Fehler...
                              Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.

                              Kommentar

                              Lädt...
                              X