Wachtwoord wijzigen
Hoe de code er in grote lijnen uit komt te zien.
Een formuliertje en een query.
met zo een antwoord weet ik nog niks
Als ik nog meer vertel is het al voor je gemaakt en dat lijkt mij niet de bedoeling.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
$sql = "UPDATE table_name
SET
password= '".md5($_POST['password'])."'
WHERE
email = '".mysql_real_escape_string($_POST['email'])."'
";
$result = mysql_query($sql);
?>
$sql = "UPDATE table_name
SET
password= '".md5($_POST['password'])."'
WHERE
email = '".mysql_real_escape_string($_POST['email'])."'
";
$result = mysql_query($sql);
?>
Gewijzigd op 14/07/2012 09:53:36 door Bart V B
Wil je bijvoorbeeld dat iemand zijn wachtwoord kan wijzigen door enkel zijn e-mailadres en gebruikersnaam op te geven? (Nee! Dat wil je niet!)
Je kan zelf wel een veiligere manier bedenken.
Of wil je gewoonweg dat iemand die ingelogd is zijn wachtwoord kan wijzigen? Dan kan je ook weer een aantal kanten op. Je zou kunnen vragen het huidige wachtwoord op te geven en dan pas een nieuw in te stellen.
Nu, tegenwoordig is dat niet meer de veiligste methode. Stel ik ben jouw broer en ik wil even met je account prutsen. Jij hebt je wachtwoord opgeslagen in een beheerder (browser). Dan is het vrij simpel voor mij om het zonder je huidige wachtwoord te kennen het aan te passen. Gelukkig zijn er wel eenvoudige oplossingen. Je kan een mailtje sturen (maar deze oplossing vind ik persoonlijk niet altijd even handig) maar je zou het veld waarin het wachtwoord moet opgegeven worden ook een random naam kunnen geven.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
//sessie starten & andere code ...
$_SESSION['password_change'] = time()/rand(); //als het maar random is
$pC = $_SESSION['password_change'];
echo '<input type="password" name="'.$pc.'" />';
/* als je het formulier controleert, mag je uiteraard
$_SESSION['password_change'] niet aanpassen.
Want anders weet je niet welk POST veld je moet controleren.
*/
$sql = 'SELECT password FROM table WHERE ...';
if($_POST[sha1($_SESSION['password_change'].md5($salt))) == $pass) {
echo 'Huidige password is niet correct!';
}
?>
//sessie starten & andere code ...
$_SESSION['password_change'] = time()/rand(); //als het maar random is
$pC = $_SESSION['password_change'];
echo '<input type="password" name="'.$pc.'" />';
/* als je het formulier controleert, mag je uiteraard
$_SESSION['password_change'] niet aanpassen.
Want anders weet je niet welk POST veld je moet controleren.
*/
$sql = 'SELECT password FROM table WHERE ...';
if($_POST[sha1($_SESSION['password_change'].md5($salt))) == $pass) {
echo 'Huidige password is niet correct!';
}
?>
Gewijzigd op 14/07/2012 18:36:22 door Write Down
@Write Down: Er klopt niet veel van jouw voorbeeldscriptje.
mag ik weten wat er niet aan klopt?Write Down verzint dit toch niet zomaar mag ik hopen
if($_POST[sha1($_SESSION['password_change'].md5($salt))) == $pass) {
Ik weet niet wat hier de bedoeling van is, maar op het eerste gezicht ziet het eruit als complete onzin. Een POST key gemaakt van een hash van de naam van het password veld uit de SESSION????
Lijkt erop dat het inderdaad 'zomaar verzonnen' is.
Gewijzigd op 14/07/2012 11:31:13 door Erwin H
Wij kunnen 100 voorbeelden maken, maar dat zal nooit zijn wat jij voor ogen hebt.
Je leert er ook niets mee, dus kijk eens naar mijn voorbeeld, en bedenk daar eens wat dingen omheen.
<ul><li><a href="changepassword.php?p=4">Wachtwoord</a></li></ul>
Wanneer de mensen op de link klikken moet dit tevoorschijn komen:
Oud Wachtwoord:<input type =password name="passwordold">........./>
Nieuw Wachtwoord:<input type =password name="passwordnew">........./>
Bevestig nieuw Wachtwoord:<input type =password name="passwordnew">....../>
Gewijzigd op 14/07/2012 11:45:36 door Niels Cup
1. Eerst kijken of het oud wachtwoord gelijk is aan het huidig wachtwoord.
2. Kijken of het wachtwoord voldoet aan jouw eisen (lengte, tekens,...)
3. Als dit alles juist is: UPDATEN naar je database?
Toevoeging op 14/07/2012 13:04:02:
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
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
<?php
# De verbinding met de database, config file...
include 'config.php';
# Als er op submit gedrukt is...
if($_SERVER['REQUEST_METHOD'] === 'POST')
{
# Ophalen van de oude pass...
$sql_get_pass = "SELECT password
FROM leden
WHERE user=...
";
#foutafhandeling
if (($result_get_pass = mysql_query($sql_get_pass)) === false)
{
echo 'Er is een fout opgetreden tijden het veranderen van je wachtwoord.';
}
elseif (mysql_num_rows($result_get_pass) == 0)
{
echo 'Er is een fout opgetreden tijden het veranderen van je wachtwoord.';
}
else
{
$row_pass = mysql_fetch_assoc($result_get_pass);
$post_pass = md5($_POST["huidig_pass"])
if($post_pass == $row_pass['password'])
{
#Wachtwoorden zijn gelijk, dus nu gaan we nieuwe password updaten.
$sql_update_pass = "UPDATE leden
SET pass = '".mysql_real_escape_string($_POST['new'])."'
WHERE user = ...
";
if(!$res_update_pass = mysql_query($sql_update_pass))
{
echo 'Fout tijdens het wijzigen van je wachtwoord!'.
}
else
{
echo 'Wachtwoord succesvol veranderd';
}
}
}
# Als er niet op submit gedrukt is.
else
{
// formulier ...
}
# De verbinding met de database, config file...
include 'config.php';
# Als er op submit gedrukt is...
if($_SERVER['REQUEST_METHOD'] === 'POST')
{
# Ophalen van de oude pass...
$sql_get_pass = "SELECT password
FROM leden
WHERE user=...
";
#foutafhandeling
if (($result_get_pass = mysql_query($sql_get_pass)) === false)
{
echo 'Er is een fout opgetreden tijden het veranderen van je wachtwoord.';
}
elseif (mysql_num_rows($result_get_pass) == 0)
{
echo 'Er is een fout opgetreden tijden het veranderen van je wachtwoord.';
}
else
{
$row_pass = mysql_fetch_assoc($result_get_pass);
$post_pass = md5($_POST["huidig_pass"])
if($post_pass == $row_pass['password'])
{
#Wachtwoorden zijn gelijk, dus nu gaan we nieuwe password updaten.
$sql_update_pass = "UPDATE leden
SET pass = '".mysql_real_escape_string($_POST['new'])."'
WHERE user = ...
";
if(!$res_update_pass = mysql_query($sql_update_pass))
{
echo 'Fout tijdens het wijzigen van je wachtwoord!'.
}
else
{
echo 'Wachtwoord succesvol veranderd';
}
}
}
# Als er niet op submit gedrukt is.
else
{
// formulier ...
}
Hoe krijgt ie het voor elkaar.... toch nog gewoon volledig voor hem gemaakt zonder zelf iets te doen :D.
Erwin H op 14/07/2012 11:30:36:
Afgezien van de ontbrekende quote in het begin gaat het voornamelijk om deze regel:
if($_POST[sha1($_SESSION['password_change'].md5($salt))) == $pass) {
Ik weet niet wat hier de bedoeling van is, maar op het eerste gezicht ziet het eruit als complete onzin. Een POST key gemaakt van een hash van de naam van het password veld uit de SESSION????
Lijkt erop dat het inderdaad 'zomaar verzonnen' is.
if($_POST[sha1($_SESSION['password_change'].md5($salt))) == $pass) {
Ik weet niet wat hier de bedoeling van is, maar op het eerste gezicht ziet het eruit als complete onzin. Een POST key gemaakt van een hash van de naam van het password veld uit de SESSION????
Lijkt erop dat het inderdaad 'zomaar verzonnen' is.
Is het ook. En is inderdaad niet al te correct. Maar goed, ik denk dat de tekst erboven voldoende duidelijk is. Ik ben niet het type dat kant en klare code post. Daarmee leer je vaak niets. Toch niet over zo'n relatief onderwerp als dit.
Toevoeging op 14/07/2012 18:40:26:
Eddy Erkelens op 14/07/2012 16:57:25:
Hoe krijgt ie het voor elkaar.... toch nog gewoon volledig voor hem gemaakt zonder zelf iets te doen :D.
Ja, en dat vind ik dus zeer jammer. Wat heeft de TS nu geleerd? Wellicht hoe hij copy-paste moet gebruiken.
Zo zijn we toch allemaal begonnen.
Bart V B op 14/07/2012 18:42:14:
och jongens..
Zo zijn we toch allemaal begonnen.
Zo zijn we toch allemaal begonnen.
Misschien wel. Het probleem is echter dat ik hier veel mensen op het forum zie die eigenlijk niet de intentie tonen om het echt te leren. Ik zie nergens een concreet probleem waar de TS vast liep. Ik zie zelfs geen letter PHP door hem geschreven in dit topic. Dan denk ik toch dat ik als beginner eerder geneigd was om zelf toch eerst een paar lijnen te typen.
Aan de code die Dem heeft geschreven heeft hij ook totaal nog niets.
Het is totaal anders dan wat de TS voor ogen heeft.
Dus laten we nu eerst eens afwachten wat de TS ervan heeft opgestoken zonder meteen een conclusie te trekken of hij al een antwoord heeft op zijn vraag. ;)
En als hij inderdaad wat meer moeite deed, en zocht op google:
php change password script
Write Down op 14/07/2012 18:39:49:
Is het ook. En is inderdaad niet al te correct. Maar goed, ik denk dat de tekst erboven voldoende duidelijk is. Ik ben niet het type dat kant en klare code post. Daarmee leer je vaak niets. Toch niet over zo'n relatief onderwerp als dit.
Niet al te correct.... eufemisme voor volstrekt fout? Post het dan niet. Hier heeft echt helemaal niemand iets aan. Alles voorkauwen doe ik normaal gesproken ook niet, maar volstrekt foute code posten is wel weer het andere uiterste.