vervelende fout met ww wijzigen
Ik heb een vervelende fout ontdekt in mijn script. Wanneer een gebruiker zijn/haar wachtwoord wijzigt, dan worden alle wachtwoorden gewijzigd van de leden in de DB. Bijvoorbeeld: Ik wijzig de mijne in TEST en dan wordt deze van iedereen TEST. Jullie zullen snappen dat dat natuurlijk niet de bedoeling is. Wie kan zien waar de fout is, want ik kom er zelf niet uit:
Code (php)
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
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
<?php
//wachtwoord vergeten
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$qSelect = mysql_query("SELECT email,username,id FROM users WHERE email='".mysql_real_escape_string($_POST['email'])."'");
$qResult = mysql_num_rows($qSelect);
while($row = mysql_fetch_assoc($qSelect)){
$username = $row['username'];
$id = $row['id'];
}
if($qResult == 0 || $_POST['email'] == ''){
echo'<br />Het opgegeven e-mailadres staat niet bij ons geregistreerd, probeer het nogmaals of maak een nieuw account aan.';
}
else{
echo'<br />De e-mail met instructies om uw wachtwoord te wijzigen is succesvol verstuurd naar '.$_POST['email'].'.';
$ontvanger = $_POST['email'];
$onderwerp = 'Wachtwoord wijzigen';
$bericht = 'Geachte klant,
U heeft op www.site.com aangegeven uw wachtwoord te willen veranderen. Dit kunt u doen door naar onderstaande link te gaan, daar wordt u dan gevraagd een nieuw wachtwoord in te stellen.
http://www.site.com/ww_instellen.php?id='.$id.'&un='.$username.'';
$headers = 'From: site.com' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($ontvanger, $onderwerp, $bericht, $headers);
mysql_query("UPDATE users SET pass_change=1 WHERE username='".$username."' AND id='".$id."'");
}
}
?>
//wachtwoord vergeten
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$qSelect = mysql_query("SELECT email,username,id FROM users WHERE email='".mysql_real_escape_string($_POST['email'])."'");
$qResult = mysql_num_rows($qSelect);
while($row = mysql_fetch_assoc($qSelect)){
$username = $row['username'];
$id = $row['id'];
}
if($qResult == 0 || $_POST['email'] == ''){
echo'<br />Het opgegeven e-mailadres staat niet bij ons geregistreerd, probeer het nogmaals of maak een nieuw account aan.';
}
else{
echo'<br />De e-mail met instructies om uw wachtwoord te wijzigen is succesvol verstuurd naar '.$_POST['email'].'.';
$ontvanger = $_POST['email'];
$onderwerp = 'Wachtwoord wijzigen';
$bericht = 'Geachte klant,
U heeft op www.site.com aangegeven uw wachtwoord te willen veranderen. Dit kunt u doen door naar onderstaande link te gaan, daar wordt u dan gevraagd een nieuw wachtwoord in te stellen.
http://www.site.com/ww_instellen.php?id='.$id.'&un='.$username.'';
$headers = 'From: site.com' . "\r\n" .
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
mail($ontvanger, $onderwerp, $bericht, $headers);
mysql_query("UPDATE users SET pass_change=1 WHERE username='".$username."' AND id='".$id."'");
}
}
?>
Code (php)
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
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
<?php
//wachtwoord opnieuw instellen
if(isset($_GET['id']) && isset($_GET['un'])){
$cQuery = mysql_query("SELECT * FROM users WHERE id='".$_GET['id']."' AND username='".$_GET['un']."'");
while($row = mysql_fetch_assoc($cQuery)){
$username = $row['username'];
$id = $row['id'];
$pass_change = $row['pass_change'];
}
if($pass_change == 1){
echo'Om uw wachtwoord te veranderen hoeft u alleen uw nieuwe wachtwoord in onderstaand formulier in te vullen en op \'wijzig\' te drukken.';
echo'<br /><br /><form method="post"><center><input type="text" name="new_pass" /> <input type="submit" value="Wijzigen" /></center></form>';
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(mysql_query("UPDATE users SET pass_change=0, password='".md5($_POST['new_pass'])."'")){
echo'Uw wachtwoord is succesvol gewijzigd. U kunt <a href="http://www.site.com/inlog.php">hier</a> inloggen!';
}
else{
echo'Het wijzigen van uw wachtwoord is niet gelukt. Neem contact op met de webmaster.';
}
}
}
}
?>
//wachtwoord opnieuw instellen
if(isset($_GET['id']) && isset($_GET['un'])){
$cQuery = mysql_query("SELECT * FROM users WHERE id='".$_GET['id']."' AND username='".$_GET['un']."'");
while($row = mysql_fetch_assoc($cQuery)){
$username = $row['username'];
$id = $row['id'];
$pass_change = $row['pass_change'];
}
if($pass_change == 1){
echo'Om uw wachtwoord te veranderen hoeft u alleen uw nieuwe wachtwoord in onderstaand formulier in te vullen en op \'wijzig\' te drukken.';
echo'<br /><br /><form method="post"><center><input type="text" name="new_pass" /> <input type="submit" value="Wijzigen" /></center></form>';
if($_SERVER['REQUEST_METHOD'] == 'POST'){
if(mysql_query("UPDATE users SET pass_change=0, password='".md5($_POST['new_pass'])."'")){
echo'Uw wachtwoord is succesvol gewijzigd. U kunt <a href="http://www.site.com/inlog.php">hier</a> inloggen!';
}
else{
echo'Het wijzigen van uw wachtwoord is niet gelukt. Neem contact op met de webmaster.';
}
}
}
}
?>
Wat betreft je probleem: Er staat geen WHERE in de update query, dus logisch dat ie alle records doet.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if(mysql_query("UPDATE users SET pass_change=0, password='".md5($_POST['new_pass'])."' WHERE username='".$username."' AND id='".$id."'")){
echo'Uw wachtwoord is succesvol gewijzigd. U kunt <a href="http://www.site.com/inlog.php">hier</a> inloggen!';
}
else{
echo'Het wijzigen van uw wachtwoord is niet gelukt. Neem contact op met de webmaster.';
}
?>
if(mysql_query("UPDATE users SET pass_change=0, password='".md5($_POST['new_pass'])."' WHERE username='".$username."' AND id='".$id."'")){
echo'Uw wachtwoord is succesvol gewijzigd. U kunt <a href="http://www.site.com/inlog.php">hier</a> inloggen!';
}
else{
echo'Het wijzigen van uw wachtwoord is niet gelukt. Neem contact op met de webmaster.';
}
?>