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

  • d.a.
    hat ein Thema erstellt Formulardaten werden nicht übermittelt.

    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?

  • d.a.
    antwortet
    Fehler gefunden!

    die Länge des Passwort in DB war zu klein eingestellt. Danke leute!!

    Einen Kommentar schreiben:


  • d.a.
    antwortet
    Was bedeutet diese Meldung:

    HTML-Code:
    Error message: Unknown system variable 'a'
    Edit:
    Ach vergisst das oben.

    if (!$conn->query("SET a=1")) {
    printf("Error message: %s\n", $conn->error);
    }

    Was bedeutet SET a=1 ?

    Edit2:
    if (!$conn->query($sql)) {
    printf("Error message: %s\n", $conn->error);
    }

    Das ergibt keine Meldung.

    Einen Kommentar schreiben:


  • tk1234
    antwortet
    Zitat von d.a. Beitrag anzeigen
    Wenn ich die VALUES manuell eingebe, dann funktioniert es.
    Völlig irrelevant - da du den Kontextwechsel auch hier nicht beachtest, ist das sowieso falsch. Ansonsten gilt natürlich das was lstegelitz bereits zweimal geschrieben hat: frag die Datenbank was falsch ist.

    Einen Kommentar schreiben:


  • d.a.
    antwortet
    Edit:
    Wiederholter Eintrag

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    PHP: mysqli::$error - Manual

    Frag doch bitte die Datenbank anstatt herumzurätseln...

    Einen Kommentar schreiben:


  • d.a.
    antwortet
    PHP-Code:
    $sqlinsert "INSERT INTO `nutzer` (`ID`, `Vorname`, `Nachname`, `Email`, `Passwort`) VALUES (NULL, '$vorname', '$nachname', '$email', '$pwd') "
    Wenn ich die VALUES durch normale Texte ersetze, dann funktioniert es.

    Das geht:

    PHP-Code:
    $sqlinsert "INSERT INTO `nutzer` (`ID`, `Vorname`, `Nachname`, `Email`, `Passwort`) VALUES (NULL, 'Hans', 'Peter', 'hp@hp.de', '123') "
    var_dump spuckt auch die richtigen Eingaben aus.

    Einen Kommentar schreiben:


  • tk1234
    antwortet
    Zitat von d.a. Beitrag anzeigen
    PHP-Code:
    $email $_POST['registeremail']; // […]
    $sql "SELECT * FROM `nutzer` WHERE `Email` = '$email'";// […]
    $checkemail mysqli_query($conn$sql ); 
    Nein! Du hast das was ich in #11 geschrieben habe völlig ignoriert. Das was du da machst ist virtueller Selbstmord und gefährlich! Der Kontextwechsel muss *immer* beachtet werden und nein, auch nicht "später" sondern jetzt!

    Weitere Hinweise hast du auch noch einfach ignoriert, zudem kommt dass sha1 für Passwörter ungeeignet ist (steht auch als rote Warnung im Handbuch!), verwende password_hash(). Und: das umkopieren von Werten aus $_POST war schon immer sinnfrei.

    echo "Die Email Adresse existiert schon. Versuche es mit einer anderen. <a href = 'http://localhost/Webshop/createaccount.php'>Zurück</a>";
    Verwende ein Affenformular, deine "Lösung" mit dem "zurück-Link" sind sehr benutzerunfreundlich, der Benutzer muss so alles nochmal eingeben.

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    Und? Frag halt die Datenbank nach dem Fehler...

    Einen Kommentar schreiben:


  • d.a.
    antwortet
    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.

    Einen Kommentar schreiben:


  • lstegelitz
    antwortet
    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...

    Einen Kommentar schreiben:


  • d.a.
    antwortet
    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..

    Einen Kommentar schreiben:


  • tk1234
    antwortet
    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

    Einen Kommentar schreiben:


  • hellbringer
    antwortet
    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.

    Einen Kommentar schreiben:


  • d.a.
    antwortet
    Er geht immer in den else block rein, obwohl die email existiert.

    Einen Kommentar schreiben:

Lädt...
X