Gestern habe ich einige Code geschrieben, wie der Benutzer ein Passwort über ein Formular aktualisieren kann. Look hereUpdate-Passwort mit PHP/MySQL
Allerdings konnte ich nach der Aktualisierung des Passwortes nicht über meine Android-App einloggen. Also habe ich beschlossen, ein bisschen die Datei forgotpassword.php zu ändern.
<?php
session_start();
require "../init.php";
ini_set('display_errors', 1);
if(isset($_POST['update'])){
$email = $_POST['email'];
$user_name = $_POST['user_name'];
$password = $_POST['user_pass'];
$passwordEncrypted = sha1($user_pass);
$confpassword = $_POST['confirm_pass'];
$confPasswordEncrypted = sha1($confirmPass);
if($password !== $confpassword){
echo "<script>alert('Passwords are not equal')</script>";
}else{
$select_query = "SELECT * FROM user_info";
$run_select_query = mysqli_query($con,$select_query);
while ($row_post=mysqli_fetch_array($run_select_query)){
$_SESSION['id'] = $row_post['id'];
$user_id = $_SESSION['id'];
$useremail = $row_post['email'];
$username = $row_post['user_name'];
var_dump($user_id);
if($useremail == $email AND $username == $user_name){
//echo "<script>alert('$useremail')</script>";
//echo "<script>alert('$username')</script>";
echo "<script>alert('$id')</script>";
$update_posts = "UPDATE user_info SET user_pass='$passwordEncrypted',confirm_pass ='$confPasswordEncrypted'
WHERE $id='$_userid'";
$run_update = mysqli_query($con,$update_posts);
//var_dump($user_name);
echo "<script>alert('Password Has been Updated!')</script>";
}else{
echo "<script>alert('No email or username was found')</script>";
}
}
}
}
?>
Aber jetzt ist das Passwort nicht aktualisiert, wie es vorher war. In der update-Anweisung oder in einer Zeile davor ist etwas falsch. $ _SESSION ['id'] ist nicht null, daher funktioniert die Select-Abfrage einwandfrei.
Irgendwelche Ideen?
Danke.
Sie haben keine Fehler beim Einchecken Ihres Codes. Und warum 2 SQL-Anweisungen, wenn dies mit 1 implementiert werden kann (Update, wo das Passwort und Benutzer übereinstimmt - wenn es 0 Zeilen ändert, war der Benutzername oder das Passwort ungültig). – symcbean
Eine einzelne Runde von sha1 ist nicht genug für Passwort-Hashing. Siehe hier: http://stackoverflow.com/questions/401656/secure-hash-and-salt-for-php-passwords – 1615903
Bitte verwenden Sie PHP [integrierte Funktionen] (http://jayblanchard.net/proper_password_hashing_with_PHP.html) um die Passwortsicherheit zu handhaben. Wenn Sie eine PHP-Version kleiner als 5.5 verwenden, können Sie das 'password_hash()' [compatibility pack] (https://github.com/ircmaxell/password_compat) verwenden. Stellen Sie sicher, dass Sie [Passwörter nicht umgehen] (http://stackoverflow.com/q/36628418/1011527) oder verwenden Sie einen anderen Bereinigungsmechanismus vor dem Hashing. Wenn Sie dies tun, * ändert * das Passwort und verursacht unnötige zusätzliche Codierung. –