[PHP] update password probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hi,

Zit met het volgende probleem. Heb een aardig login-script gefixed, maar het password wijzigen gaat niet..

Uit een form komen de velden: $username, $old_password, $new_password1, $new_password2.

dit is de relevante code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    if($password_new1 == $password_new2) {
    
        $sql_check = mysql_query("SELECT * FROM users WHERE username='$username'");
        $sql_check_num = mysql_num_rows($sql_check);
        if($sql_check_num == 0){
            echo "De gebruikersnaam bestaat niet.<br />";
            include 'change_pw.html';
            exit();
        }
    
        $db_password = md5($password_new1);
        
        $sql = mysql_query("UPDATE users SET password='$db_password' WHERE username='$username'");

        echo $username;
        echo $password_old;
        echo $password_new1;
        echo $password_new2;
    
        echo "Uw wachtwoord is gewijzigd.";
        include 'login_form.html';
    }


De 4 echo's zijn slechts ter controle, maar alleen de $username wordt ervan weergegeven, de andere variabelen zijn dus leeg en ik snap hier niets van. Hij update $password wel ergens mee (kan ik zien in phpmyadmin), maar opnieuw inloggen kan niet, niet met oude en nieuwe password.

Is dit uberhaupt de juiste manier om zoiets te doen? Hopelijk weet iemand raad..


Toevoeging: zo worden de variabelen 'binnengehaald':

code:
1
2
3
4
    $username = $_POST['username'];
    $password_old = $_POST['password_old'];
    $password_new1 = $_POST['password_new1'];
    $password_new2 = $_POST['password_new2'];

[ Voor 14% gewijzigd door Verwijderd op 25-02-2003 10:11 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
sorry iedereen, om gek van te worden... uren gezocht en het probleem:

old_password <> password_old, etc.. :-((

maar nu werkt het dus :-)

Acties:
  • 0 Henk 'm!

Verwijderd

code:
1
if($password_new1 == $password_new2)

true, want beide variabelen zijn leeg.

code:
1
SELECT * FROM users WHERE username='$username'

returned wel 1 row, want je username werd wel doorgegeven.

code:
1
2
$db_password = md5($password_new1);     
$sql = mysql_query("UPDATE users SET password=PASSWORD($db_password) WHERE username='$username'");

Je set hier het nieuwe password met de md5 van een lege variabele.

Dus het is logisch dat je niet meer kan inloggen.
Je kan trouwens misschien beter een password setten met de ingebouwde MySQL functie PASSWORD. Dus:
code:
1
$sql = mysql_query("UPDATE users SET password='$password_new1' WHERE username='$username'");

En je regel met md5 gedoe achterwege laten.


Ik denk dat je probleem niet in je script zit, maar in de form waarin je je variabelen submit.

edit:

Godver voor niets getyped, zeg iig nog even wat er fout was.......

[ Voor 15% gewijzigd door Verwijderd op 25-02-2003 10:23 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
sorry Mr_phyro...

de variabelnamen in de form waren dus niet gelijk aan die in het script.

hier het volledig werkende script nogmaals:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
<?
include 'db.php';
include 'checklogin.php';

session_start();
session_checker();


switch($_POST['change']){
    default:

    include 'change_pw.html';
    break;
    
    case "change":

    $username = $_POST['username'];
    $password_old = $_POST['password_old'];
    $password_new1 = $_POST['password_new1'];
    $password_new2 = $_POST['password_new2'];

    $password_old = stripslashes($password_old);
    $password_new1 = stripslashes($password_new1);
    $password_new2 = stripslashes($password_new2);

    if((!$username) || (!$password_old) || (!$password_new1) || (!$password_new2)){
        echo "U heeft een veld niet ingevuld <br />";
        include 'change_pw.html';
        exit();
    }

    if($password_new1 == $password_new2) {
    
        $sql_check = mysql_query("SELECT * FROM users WHERE username='$username' AND password='$password_old'");
        $sql_check_num = mysql_num_rows($sql_check);
        if($sql_check_num == 0){
            echo "De gebruikersnaam bestaat niet of het wachtwoord is onjuist.<br />";
            include 'change_pw.html';
            exit();
        }
    
        $db_password = md5($password_new1);
        
        $sql = mysql_query("UPDATE users SET password='$db_password' WHERE username='$username'");
    
        echo "Uw wachtwoord is gewijzigd.";
        include 'login_form.html';
        exit();
    }
    echo "Uw wachtwoord is niet gewijzigd.";
    include 'change_pw.html';
    break;
    
}
?>

Acties:
  • 0 Henk 'm!

Verwijderd

Gelukkig was het wat ik dacht dat het was!!! :)

Was niet boos bedoelt of zo hoor die edit.

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

djkappi > Voortaan error_reporting op E_ALL zetten. Dan ben er binnen no-time achter waar dingen niet goed gaan, want dan word je er op gewezen als je probeert een variabele te gebruiken die nog niet geinitialiseerd is. Debug tool nr. 1 bij PHP.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1