Systeem wachtwoord wijzigen met link in mailbox.
Ik probeer al een tijdje om een systeempje te maken waarbij een gebruiker zijn wachtwoord kan wijzigen als hij/zij dat wil.
de gebruiker krijgt netjes de mail met de link om zijn wachtwoord te wijzigen. alles lijkt goed te gaan maar als ik dan klik op de knop "Wijzig wachtwoord!", dan krijg ik steeds een foutmelding namelijk: Notice: Undefined index: mail in /public/sites/www.onlineuitzenders.nl/changepassword.php on line 29.
is er iemand die mij kan vertellen wat ik fout doe ?
Het formulier voor het emailadres waar de mail heen kan.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<head>
<title>Wachtwoord wijzigen</title>
<link rel="stylesheet" type="text/css" href="maai.css" />
</head>
<body bgcolor="#F0F0F0">
<div class="register-form">
<h1>Mail mijn wachtwoord</h1>
<form action="wwvergeten.php" method= "GET" >
<p><label>Emailadres:</label>
<input type = text name = emailadres placeholder="Emailadres" /></p>
<input class="btn register" type="submit" name="submit" value="Verzend" />
</form>
</div>
</body>
</html>
<title>Wachtwoord wijzigen</title>
<link rel="stylesheet" type="text/css" href="maai.css" />
</head>
<body bgcolor="#F0F0F0">
<div class="register-form">
<h1>Mail mijn wachtwoord</h1>
<form action="wwvergeten.php" method= "GET" >
<p><label>Emailadres:</label>
<input type = text name = emailadres placeholder="Emailadres" /></p>
<input class="btn register" type="submit" name="submit" value="Verzend" />
</form>
</div>
</body>
</html>
hier het script om een paar dingen te updaten.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
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
56
57
58
59
60
61
62
63
64
65
66
67
<?php
ob_start();
session_start();
error_reporting(E_ALL);
$Emailadres = ($_GET['emailadres']);
$password_level = 1;
mysql_connect("");
mysql_select_db("");
if (isset ($_POST ['submit']));
$query = mysql_query ("SELECT * FROM alle_gebruikers WHERE Emailadres ='". $Emailadres."'")or die (mysql_error());
$result= ($query);
$count = mysql_num_rows($result);
if($count==1)
{
//genereer niew wachtwoord
$random = rand (102548633,525686441);
$new_password = $random;
//encrypt het nieuwe wachtwoord
$new_password = ($new_password);
//update de DB
mysql_query ("UPDATE alle_gebruikers SET Wachtwoord= '".$new_password."' WHERE Emailadres ='". $Emailadres."'") or die (mysql_error());
mysql_query ("UPDATE alle_gebruikers SET Passwordrecovery = '".$password_level."' WHERE Emailadres = '". $Emailadres."'") or die (mysql_error());
//verzend het wachtwoord naar de gebruiker
ini_set('SMTP','smtp.ziggo.nl');
ini_set('smtp_port',25);
$subject ="Wijzig uw Wachtwoord";
$msg = "U kunt uw wachtwoord wijzigen door op de onderstaande link te klikken. \n\n http://www.onlineuitzenders.nl/changepassword.php?mail=$Emailadres&passwd=$new_password \n\nDit is een automatisch gegenereerd bericht u kunt hierdoor niet op dit bericht reageren.\n\n\n";
$from = "Van: ";
mail($Emailadres,$subject,$msg,$from);
echo "We hebben u een mail gestuurd.<a href='home.html'>Ok!</a>";
}elseif($count==0){echo"dit Emailadres komt niet voor in de database, probeer het opnieuw!";}
?>
ob_start();
session_start();
error_reporting(E_ALL);
$Emailadres = ($_GET['emailadres']);
$password_level = 1;
mysql_connect("");
mysql_select_db("");
if (isset ($_POST ['submit']));
$query = mysql_query ("SELECT * FROM alle_gebruikers WHERE Emailadres ='". $Emailadres."'")or die (mysql_error());
$result= ($query);
$count = mysql_num_rows($result);
if($count==1)
{
//genereer niew wachtwoord
$random = rand (102548633,525686441);
$new_password = $random;
//encrypt het nieuwe wachtwoord
$new_password = ($new_password);
//update de DB
mysql_query ("UPDATE alle_gebruikers SET Wachtwoord= '".$new_password."' WHERE Emailadres ='". $Emailadres."'") or die (mysql_error());
mysql_query ("UPDATE alle_gebruikers SET Passwordrecovery = '".$password_level."' WHERE Emailadres = '". $Emailadres."'") or die (mysql_error());
//verzend het wachtwoord naar de gebruiker
ini_set('SMTP','smtp.ziggo.nl');
ini_set('smtp_port',25);
$subject ="Wijzig uw Wachtwoord";
$msg = "U kunt uw wachtwoord wijzigen door op de onderstaande link te klikken. \n\n http://www.onlineuitzenders.nl/changepassword.php?mail=$Emailadres&passwd=$new_password \n\nDit is een automatisch gegenereerd bericht u kunt hierdoor niet op dit bericht reageren.\n\n\n";
$from = "Van: ";
mail($Emailadres,$subject,$msg,$from);
echo "We hebben u een mail gestuurd.<a href='home.html'>Ok!</a>";
}elseif($count==0){echo"dit Emailadres komt niet voor in de database, probeer het opnieuw!";}
?>
hier het script om het wachtwoord te wijzigen.
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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
56
57
58
59
60
61
62
63
64
65
<head>
<link rel="stylesheet" type="text/css" href="maai.css" />
</head>
<body>
<div class="register-form">
<h1>Wachtwoord veranderen</h1>
<form action="changepassword.php" method="POST">
<p><label>Nieuw wachtwoord:</label>
<input id= Wachtwoord type= password name= wachtwoord placeholder= Wachtwoord /></p>
<p><label>Herhaal nieuw wachtwoord: </label>
<input id= WACHTWOORD type= password name= WACHTwoord placeholder= Wachtwoord /></p>
<input class="btn register" type= submit name= submit value="Verander!" />
</form>
</div>
</body>
</html>
<?php
ob_start();
error_reporting(E_ALL);
if (isset ($_POST ['submit'])){
$password_level = 0;
$Emailadres = ($_GET['mail']);
$Wachtwoord = ($_POST['wachtwoord']);
$WACHTWOORD = ($_POST['WACHTwoord']);
$conx = mysqli_connect("");
if($Wachtwoord != $WACHTWOORD){echo"
De Wachtwoorden komen niet overeen, probeer het opnieuw!<br>";
}else{
if(strlen($Wachtwoord)< 5 ){
echo "Het wachtwoord moet minmaal 5 karakters lang zijn, probeer het opnieuw!<br>";
}else{
if(strlen($Wachtwoord)> 20 ){
echo "Het wachtwoord mag maximaal uit 20 tekens bestaan, probeer het opnieuw!<br>";
}else{
mysqli_query ($conx, "UPDATE alle_gebruikers SET Wachtwoord= '".$Wachtwoord."' WHERE Emailadres ='". $Emailadres."'") or die (mysql_error());
mysqli_query ($conx, "UPDATE alle_gebruikers SET Passwordrecovery = '".$password_level."' WHERE Emailadres = '". $Emailadres."'") or die (mysql_error());
echo "Uw wachtwoord is bijgewerkt!<a href='inloggen.html'>Ok!</a>";
}
}
}
}
?>
<link rel="stylesheet" type="text/css" href="maai.css" />
</head>
<body>
<div class="register-form">
<h1>Wachtwoord veranderen</h1>
<form action="changepassword.php" method="POST">
<p><label>Nieuw wachtwoord:</label>
<input id= Wachtwoord type= password name= wachtwoord placeholder= Wachtwoord /></p>
<p><label>Herhaal nieuw wachtwoord: </label>
<input id= WACHTWOORD type= password name= WACHTwoord placeholder= Wachtwoord /></p>
<input class="btn register" type= submit name= submit value="Verander!" />
</form>
</div>
</body>
</html>
<?php
ob_start();
error_reporting(E_ALL);
if (isset ($_POST ['submit'])){
$password_level = 0;
$Emailadres = ($_GET['mail']);
$Wachtwoord = ($_POST['wachtwoord']);
$WACHTWOORD = ($_POST['WACHTwoord']);
$conx = mysqli_connect("");
if($Wachtwoord != $WACHTWOORD){echo"
De Wachtwoorden komen niet overeen, probeer het opnieuw!<br>";
}else{
if(strlen($Wachtwoord)< 5 ){
echo "Het wachtwoord moet minmaal 5 karakters lang zijn, probeer het opnieuw!<br>";
}else{
if(strlen($Wachtwoord)> 20 ){
echo "Het wachtwoord mag maximaal uit 20 tekens bestaan, probeer het opnieuw!<br>";
}else{
mysqli_query ($conx, "UPDATE alle_gebruikers SET Wachtwoord= '".$Wachtwoord."' WHERE Emailadres ='". $Emailadres."'") or die (mysql_error());
mysqli_query ($conx, "UPDATE alle_gebruikers SET Passwordrecovery = '".$password_level."' WHERE Emailadres = '". $Emailadres."'") or die (mysql_error());
echo "Uw wachtwoord is bijgewerkt!<a href='inloggen.html'>Ok!</a>";
}
}
}
}
?>
- Aar -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 02/10/2014 17:55:52 door - Ariën -
In het script hierboven is regel 29 leeg, dus hierboven staat een niet compleet/onvolledig script.
Dump je complete script eens op ergens, bijvoorbeeld op http://codepad.org/
En dan krijg je een adres als http://codepad.org/Ghcawnfe (bijvoorbeeld).
Toevoeging op 02/10/2014 17:39:26:
Je verstuurt op de eerste pagina het emaildres door naar wwvergeten.php via $_GET, dus [email protected]
Dus op wwvergeten.nl toon je een formulier, maar vanaf daar stuur je geen emailadres meer door naar changepassword.php
Oplossing:
Zet in changepassword dit in je <form> erbij:
En in changepassword.php verander je:
Naar:
Zorg er tevens voor dat je je GET en POST variabelen in je query beveiligt met mysqli_real_escape_string(). Nu ben je behoorlijk vatbaar voor hacking via SQL-injection.
Let ook goed op dat je consistent de functies van mysqli gebruikt in plaats van mysql
Toevoeging op 02/10/2014 18:17:05:
Het wachtwoord wijzigen werkt nu, bedankt voor de hulp!
gr
Wouter van op 02/10/2014 18:02:39:
oke.. wat moet ik mij precies voorstellen bij een SQL-injection ?
Even Googlen en je vindt dit: http://nl.wikipedia.org/wiki/SQL-injectie ;-)