php passwort ändern skript

Hiob

Mitglied
hallo leute
ich bastel gerade an einem login system für ein intranet. das login habe ich, logout auch nun will ich ein formular erstellen das das die user ihre passwörter ändern können. eig habe ich das auch schon soweit..allerdings ist da irgendwo ein fehler und ich finde ihn einfach nicht...kann mir jemand helfen?
hier mien code
PHP:
<?php
    
    require_once('verbvars.php');
    require_once('begin.php');

    session_start();
    
    $fehlermldg = "";
    
    $userid = $_COOKIE['user_id'];
    $old = ($_POST['old_pw']);
      $pass=SHA1($old);
    $new1 =($_POST['new_pw1']);
      $new1a=SHA1($new1);
    $new2 =($_POST['new_pw2']);
      $new2a=SHA1($new2);
    
    
    
    //if (!isset($_SESSION['user_id'])){
    if(isset($_POST['change_submit'])){
                
        //controll if every field is filled
        if(!empty($_POST['old_pw']) && !empty($_POST['new_pw1']) && !empty($_POST['new_pw2'])){
            
            //Connect to Database
            $db = mysqli_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
            mysqli_set_charset($db, "utf8");
            //Select old Password(SHA) from Database
            $old1="SELECT password FROM employee WHERE user_id='$userid'";
                //$old2=SHA1('$old1');
            //check if inserted password is equal with the database password
            if (($pass)==($old1)){
                
                //check if new password is the same as confirmed password
                if($new1a==$new2a){
            
                    if (mysqli_num_rows($result) == 1){
                    
                    $sql="UPDATE employee SET password=SHA('$new1') WHERE user_id='$userid'";
            
                    $result=mysqli_query($db, $sql);
                        
                        
                            echo 'Congratulation. You have successfully changed your password.';
                            echo '<br /> <br />';
                            echo '<a href="http://localhost/testseite.html">Back to Mainpage</a>';
                            mysqli_close($db);
                            exit();
                    }
                    else{
                    echo'Wrong Login informaton';
                    echo '<br>';
                    echo '<a href=http://localhost/new2.php>Back</a>';
                    mysqli_close($db);
                    exit();
                    }
                    
                    mysqli_close($db);
                    exit();
                }
                else{
                echo  'The new password and confirm new password fields must be the same';
                echo '<br>';
                echo '<a href=http://localhost/new2.php>Back</a>';
                mysqli_close($db);
                exit();
                }
            }
            else{
            echo  'Your old passwort is invalid';
            echo '<br>';
            echo '<a href=http://localhost/new2.php>Back</a>';
            mysqli_close($db);
            exit();
            }
        }
        else{
        echo 'You have to fullfill all textfields';
        
        }
    }
    
    
?>


Die Ausgabe ist immer....altes passwort falsch...und ich weiss nicht warum?
Danke schonmal. Ich hoffe Ihr könnt mir weiter Helfen.
Dazu zu sagen ist noch das die aktuellen Passwörter in einer Datenbank liegen und SHA verschlüsselt sind. Was ich auch sehr komisch finde ist das die passwörter bei eingabe in dieses Formular im Klartext erscheinen...in meinem Login Formular erscheinen nur Sternchen.
Danke
 
Zuletzt bearbeitet:
Mla davon abgesehen das ich nirgendswo $pass deklariert sehe, vergleichst du $pass mit dem folgendem String : "SELECT password FROM employee WHERE user_id='$userid'";.
Also wenn dein passwort nicht grade aussieht wie ein Sql-Statement wird da vermutlich immer false bei raus kommen.
Abhilfe könnte schaffen das Statement auch mal an Sql zu senden und mit dem Resultset zu arbeit ;)
 
Nur nebenbei: halte dich bitte an die Forenregeln und die damit verbundene Netiquette, da du bisher gegen Punkt 15 verstößt. Also unterlasse demnächst bitte deine durchgehende Kleinschreibung und füge deinen Inhalten passende orthorgraphische Mittel (Komma, Punkt et cetera) hinzu.
 
Zurück