MySQL SQL Statement wir nicht ausgeführt

Cury

Aktives Mitglied
Hey,
Ich programmiere grade an einer Webseite und bin kurz Zeit dabei ein "Passwort vergessen?" zu machen.

Code:
PHP:
if (empty($error_msg)) {

          $random_salt = hash('sha512', uniqid(openssl_random_pseudo_bytes(16), TRUE));

          $password = hash('sha512', $password . $random_salt);

          if ($stmt = $mysqli->prepare("UPDATE users SET password = ?, salt = ?, Token = null WHERE Token = ?")) {
              $stmt->bind_param('sss', $password, $random_salt, $token);
              $stmt->execute();
              header('Location: Start.php?error=4');
          }else {
            $error_msg .= '<p>Datenbank Fehler. Bitte versuche es erneut.</p>';
          }
        }else {
          $error_msg .= '<p>Es gab Fehler. Bitte versuche es erneut.</p>';
        }

id (primary key & A_I)usernameemailpassword (verschlüsselt)saltToken (Null Ja, Standart Null)
varchar(60)varchar(30)varchar(128)varchar(128)

Passwort und salt sind beide genau 128 Zeichen lang durch die verschlüsselung. (Habe es bei mir auch schon debugget und herrauszufinden wie lang die sind. Immer 128).

Ich hoffe, dass mir irgendjemand weiterhelfen kann.
LG
 
Zuletzt bearbeitet von einem Moderator:

krgewb

Top Contributor
Bitte immer in code-Tags posten.
PHP:
if (empty($error_msg)) {

    $random_salt = hash('sha512', uniqid(openssl_random_pseudo_bytes(16), TRUE));

    $password = hash('sha512', $password . $random_salt);

    if ($stmt = $mysqli->prepare("UPDATE users SET password = ?, salt = ?, Token = null WHERE Token = ?")) {
        $stmt->bind_param('sss', $password, $random_salt, $token);
        $stmt->execute();
        header('Location: Start.php?error=4');
    } else {
        $error_msg .= '<p>Datenbank Fehler. Bitte versuche es erneut.</p>';
    }
} else {
    $error_msg .= '<p>Es gab Fehler. Bitte versuche es erneut.</p>';
}
 

LimDul

Top Contributor
If the statement is UPDATE, DELETE, or INSERT, the total number of affected rows can be determined by using the mysqli_stmt_affected_rows() function. Likewise, if the query yields a result set the mysqli_stmt_fetch() function is used.

Lass dir mal ausgeben, ob überhaupt Zeilen aktualisiert wurden. Vermutung wäre, da der Code an sich korrekt aussieht, dass das übergebene Token falsch ist und damit die Zeile nicht gefunden wird.
 

LimDul

Top Contributor
Das könnte auch helfen. Als erste Schritt wie gesagt, mal auswerten wie viel Zeilen aktualisiert werden (Ansonsten einfach mal $token ausgeben und schauen ob der korrekt ist)
 

Cury

Aktives Mitglied
achso. den token bekomme ich so:


PHP:
<?php if(isset($_GET["token"])) {
      $error_msg = "";

      $prep_stmt = "SELECT * FROM users WHERE token = ?";
      $stmt = $mysqli->prepare($prep_stmt);

      $stmt->bind_param('s', $_GET['token']);
      $stmt->execute();
      $stmt->store_result();

      if ($stmt->num_rows == 1) {
        //wenn der angebene Token in der DB gespeichert ist:
        $error_msg = "";

        if (isset($_POST['p'])) {

        $password = filter_input(INPUT_POST, 'p', FILTER_SANITIZE_STRING);

        if (strlen($password) != 128) {

         $error_msg .= '<p class="error">Fehler bei der Passwort eingabe.</p>';
        }


        if (empty($error_msg)) {

          $random_salt = hash('sha512', uniqid(openssl_random_pseudo_bytes(16), TRUE));

          $random_salt = hash('sha512', $password . $random_salt);

          if ($stmt = $mysqli->prepare("UPDATE users SET password = ?, salt = ?, Token = null WHERE Token = ?")) {
              $stmt->bind_param('sss', $password, $random_salt, $token);
              $stmt->execute();
              header('Location: Start.php?error=4');
          }else {
            $error_msg .= '<p>Datenbank Fehler. Bitte versuche es erneut.</p>';
          }
        }else {
          $error_msg .= '<p>Es gab Fehler. Bitte versuche es erneut.</p>';
        }
       }else {
         $error_msg = '<p>Bitte fülle alle Felder aus</p>';
       }
        ?>
            
         //Hier ist dann mein Formular.

        <?php
      }else {
        header('Location: Start.php');
      }
    }else {
      $error_msg = "keiner da";
      header('Location: Start.php');
    }
    ?>

Auf einer anderen Unterseite (Passwortreset.php) kann man seine Email angeben, dann wird in der Email ein Link zur setNewPasswort.php?token= (der token, der zum account mit der angegebenen Email gehört) gesendet. Email senden geht halt aber auf dem localhost nicht, also habe ich denn link immer selber eingeben (kommt ja das gleiche bei raus). Dann setzte ich $_GET['token] in variable $token. Diesen Token benutze ich dann bei der Abfrage.
 

Cury

Aktives Mitglied
Also...ich bin echt so dumm xD... ich habe den error gefunden. Ich habe mir mal die varibale ausgegeben...Varibale Token ist undefined.... jetzt habe ich den Error
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
L SQL Statement mit Switch-Case funktioniert nicht Datenbankprogrammierung 6
R Derby/JavaDB Select Statement Where bedingung will nicht ganz! Datenbankprogrammierung 4
R Derby/JavaDB Select TOP Statement geht nicht Datenbankprogrammierung 3
S HSQLDB DELETE-Statement funktioniert nicht Datenbankprogrammierung 4
L MySQL Kann Statement nicht erzeugen Datenbankprogrammierung 5
T Komme mit dem SQL Statement nicht weiter Datenbankprogrammierung 5
J JDBC- Statement Ausführung nicht persistent Datenbankprogrammierung 2
D Problem: Prepared Statement (Insert) funktioniert nicht. Datenbankprogrammierung 3
P Prepared Statement scheint nicht zu funktionieren Datenbankprogrammierung 14
S Statement.getGeneratedKeys() funktioniert nicht Datenbankprogrammierung 4
T SQL-Statement Datenbank nach SQL Statement schließen? Datenbankprogrammierung 7
Kotelettklopfer SQLite Verhindern von doppelter Statement Ausführung Datenbankprogrammierung 25
L SQL-Statement SQL Statement doppelte Einträge finden Datenbankprogrammierung 9
G Datenbank Statement Datenbankprogrammierung 22
Dimax Erstellen ResultSet und Statement Datenbankprogrammierung 30
B MySQL Umkreissuche - brauche Hilfe bei SQL Statement Datenbankprogrammierung 12
M CSV Import - Dynamisches SQL Statement Datenbankprogrammierung 15
D Wiederverwendung / Recycling / Queuing von Statement Objekten Datenbankprogrammierung 1
D SQL Statement gesucht... Datenbankprogrammierung 15
J JDBC SQL Statement mit Parameter Datenbankprogrammierung 7
F Dynamischen String in SQL Statement einbinden Datenbankprogrammierung 9
U PostgreSQL SELECT Statement Datenbankprogrammierung 5
A Problem mit Create-Statement Datenbankprogrammierung 9
LadyMilka MySQL Syntaxfehler im Statement Datenbankprogrammierung 3
A JDBC Prepared Statement Autoincrement Datenbankprogrammierung 3
P SQL-Statement Bei meinem Statement ist ein Fehler? Datenbankprogrammierung 2
P sql statement alter table foreign key Datenbankprogrammierung 4
T sql Statement Datenbankprogrammierung 9
B JDBC MySQL Statement Datenbankprogrammierung 3
A Sql Statement - Alle Zahlen größer 9 Datenbankprogrammierung 3
F Sql Statement Datenbankprogrammierung 12
A SQL-Statement prüfen Datenbankprogrammierung 3
W Statement als Klassenvariable Datenbankprogrammierung 27
I Select-Statement optimieren Datenbankprogrammierung 14
D SQLite Statement nimmt keine Namen aus getter-Methoden Datenbankprogrammierung 11
alex_fairytail MySQL SQL Statement Delete zwischen Datum1 und Datum2 Datenbankprogrammierung 5
M Access Update Statement Fehler update -> unmöglich? Datenbankprogrammierung 3
R Derby/JavaDB LIKE Statement mit Wildcard Datenbankprogrammierung 20
N Update Prepared Statement Fehler bei Argumenten Datenbankprogrammierung 3
R Select Statement als temporärer Table Datenbankprogrammierung 7
S Null Pointer exception statement Datenbankprogrammierung 8
R Derby/JavaDB Insert Statement Probleme Datenbankprogrammierung 14
K statement.execute liefert false Datenbankprogrammierung 6
C PostgreSQL Prepared Statement Datenbankprogrammierung 7
N Prepared Statement mit unbekannter Anzahl von Where-Clauses Datenbankprogrammierung 30
S SQL Statement: executeUpdate Datenbankprogrammierung 15
F wie funktioniert if Statement in SELECT? Datenbankprogrammierung 2
T MySQL PreparedStatement mit INSERTs langsam, Batch-Statement auch Datenbankprogrammierung 4
M MySQL größere von zwei Zahlen in Update Statement Datenbankprogrammierung 2
J [Hibernate] Select Statement Datenbankprogrammierung 4
L MySQL Prepared Statement batch langsamer als bulk insert? Datenbankprogrammierung 10
D MySQL Client - Server: Client verabschiedet sich sobald ich Variablen im SQL Statement verwende Datenbankprogrammierung 9
F Frage zu Prepared Statement Datenbankprogrammierung 2
T java.sql.SQLException: unexpected end of statement Datenbankprogrammierung 2
J SQL-Statement Datenbankprogrammierung 10
U MSSQL Verbindung steht, aber meckert beim Statement Datenbankprogrammierung 2
S executeBatch result immet mit Statement.SUCCESS_NO_INFO Datenbankprogrammierung 4
G Frage zum Insert-Statement Datenbankprogrammierung 2
A Connection Variable in anderer Klasse verwenden -> statement Datenbankprogrammierung 2
G Mit Prepared Statement in MDB schreiben Datenbankprogrammierung 7
Z DELETE-Statement Datenbankprogrammierung 6
W Prepared Statement und Verbindungsverlust Datenbankprogrammierung 4
G INSERT-STATEMENT Datenbankprogrammierung 6
alexpetri hsql statement problem Datenbankprogrammierung 3
W invalid sql statement ? Datenbankprogrammierung 3
S Probleme mit statement.close() Datenbankprogrammierung 10
G Wie ein SQL-Statement zusammensetzen? Datenbankprogrammierung 5
T Select Statement auf Relation Datenbankprogrammierung 3
S Connection/Statement/ResultSet auf einmal geschlossen Datenbankprogrammierung 8
G MsSQL | Statement.execute(String s) Datenbankprogrammierung 3
W Prepared Statement mehrere Zeichenketten Datenbankprogrammierung 4
G Keine Aussicht mit Prepared Statement Datenbankprogrammierung 10
G Für jede SQL-Abfrage eigenes Statement und ResultSet? Datenbankprogrammierung 3
C Statement/Connection SQLWarning Datenbankprogrammierung 4
J sql-statement Datenbankprogrammierung 7
G Update Statement automatisch unterteilen lassen Datenbankprogrammierung 3
T SQL-Statement parser? Datenbankprogrammierung 11
N Prepared Statement Datenbankprogrammierung 8
G Problem mit Suchen Statement Java und MS-SQL-Server Datenbankprogrammierung 9
J SELECT-Statement Datenbankprogrammierung 4
G Problem mit Delete-Statement Datenbankprogrammierung 3
L mehrere Abfragen mit einem Statement!? Datenbankprogrammierung 5
E Problem mit create-Statement Datenbankprogrammierung 5
E SQL-Statement um eine Nummer in der Datenbank zu suchen Datenbankprogrammierung 3
W MySQL-Connector funktioniert nicht über WLAN -> MacOS Datenbankprogrammierung 10
M Meine Datenbank lässt sich mit meiner Methode nicht ändern Datenbankprogrammierung 1
P Reicht finally nicht um DB connections zu schließen in (altem) Java? Datenbankprogrammierung 4
D JOIN COLUMN wird nicht genommen Datenbankprogrammierung 2
Maxim6394 JPA / EclipseLink - n:m Beziehung wird nicht aktualisiert Datenbankprogrammierung 0
J SQLite Abfrage fehlerhaft - komme nicht weiter - please help. Datenbankprogrammierung 3
D Ich möchte dass ich nachdem man den Kommentar geschrieben hat den Kommentar in den Tabelle Bestellübersicht geschbeichert wird klappt nicht bei mir Datenbankprogrammierung 2
M Datenbank Zugraff nach Umwandlung in .jar-Datei nicht mehr möglich Datenbankprogrammierung 4
Auf MySql Datenbank zugreifen funktioniert nicht Datenbankprogrammierung 8
A Java DB Server lässt sich nicht starten Datenbankprogrammierung 3
B SQlite Datenbank, trotz Statements wurden nicht alle Zeilen erzeugt? Datenbankprogrammierung 35
T Datenzeilen werden nicht gelöscht Datenbankprogrammierung 6
Warum funktioniert MySQL nicht Datenbankprogrammierung 8
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
S Datenbankprogrammierung in Java unter NetBeans 12 funktioniert nicht! Datenbankprogrammierung 1
pkm PostgreSQL Kann mit mybatis einen Parameter für eine postgreSQL-Abfrage nicht übergeben. Datenbankprogrammierung 5

Ähnliche Java Themen

Neue Themen


Oben