Скрипт за забравена парола

Ето само си го оправи таблиците и останалите работи :)
Код:
<form action="form.php" method="POST">
<input type="text" name="user" /><br />
<input type="text" name="mail" /><br />
<input type="submit" name="submit" value="Изпрати!"/>
</form>
Код:
<?php
$user=$_POST['user'];
$mail=$_POST['mail'];
$link=mysql_connect('localhost','user','pass');
$dbmysql_select_db('database');
$q="SELECT * FROM table WHERE mail='$mail AND user='$user' ";
$result=mysql_query($q,$link);
if(mysql_num_rows($result)<1){echo "Няма такова потребителско име и мейл в нашата база данни ";exit();}
$newpass=substr (md5(rand()), 3, 10);
$q="UPDATE table SET password='$newpassword' WHERE user='$user' AND pass='$pass' "
$up=mysql_query($q,$link);
mail ($mail, 'Вашата нова парола', 'Здравейте $user вапата нова парола е $newpass ', 'From: admin@admin.bg');
echo "На вашия меил бе изпратена новата ви парола!";
?>
 
Да това е добре, но тогава трябва да правя и форма за смяна на парола. Паролата е в md5 формат. Мога ли директно да пратя вече съществуващата парола?
 
Msecurity каза:
Ето само си го оправи таблиците и останалите работи :)
Код:
<form action="form.php" method="POST">
<input type="text" name="user" /><br />
<input type="text" name="mail" /><br />
<input type="submit" name="submit" value="Изпрати!"/>
</form>
Код:
<?php
$user=$_POST['user'];
$mail=$_POST['mail'];
$link=mysql_connect('localhost','user','pass');
$dbmysql_select_db('database');
$q="SELECT * FROM table WHERE mail='$mail AND user='$user' ";
$result=mysql_query($q,$link);
if(mysql_num_rows($result)<1){echo "Няма такова потребителско име и мейл в нашата база данни ";exit();}
$newpass=substr (md5(rand()), 3, 10);
$q="UPDATE table SET password='$newpassword' WHERE user='$user' AND pass='$pass' "
$up=mysql_query($q,$link);
mail ($mail, 'Вашата нова парола', 'Здравейте $user вапата нова парола е $newpass ', 'From: admin@admin.bg');
echo "На вашия меил бе изпратена новата ви парола!";
?>
Това не трябва да се използва в никакъв случай докато не бъде оправено:
1. На а мейла ще бъде изпратена ХЕШИРАНАТА парола(ако се вгледате малко), а това не добре!
$newpass = md5(...);
mail(... новата ви парола е $newpass);
Освен това, ако ще пращаш мейли, по-добре напиши "вашата"
, а не
Msecurity каза:
вапата нова парола
:)
2. Препоръчително е използването на новите mysql функции в php - изрично в сайта на php пише(за mysql_connect):
This extension is deprecated as of PHP 5.5.0, and will be removed in the future.
Тоест трябва да използвашmysqli_connect(), mysqli_query(), mysqli_fetch_array() и т.н.
3. Петият ред от php-кода($dbmysql_select_db('database'); ) ще върне грешка - изпуснат е знак "=". Трябва да се поправи на mysqli_select_db($link,'database');
Не е необходимо да се присвоява на променлива, но трябва да се добави като първи параметър променливата, с която се свързваш към mysql. В случая $link.

ivo75 каза:
Мога ли директно да пратя вече съществуващата парола?
md5() не може да се декодира, така че или не трябва да използваш md5() за хеширане, или да правиш форма за промяна на паролата. Алтернативен вариант е да използваш функцията base64:
base64_encode() за кодиране и base64_decode() за декодиране.
 
Най-добре да генерираш някаква парола,да я смениш в базата данни и след това да я пратиш на потребителя.А той ако иска ще си я смени след това,след като се логне с тази генерирана парола.
 
fbian каза:
Най-добре да генерираш някаква парола,да я смениш в базата данни и след това да я пратиш на потребителя.А той ако иска ще си я смени след това,след като се логне с тази генерирана парола.
Очевидно форма за промяна на паролата не си е направил:

ivo75 каза:
Да това е добре, но тогава трябва да правя и форма за смяна на парола.

Но ще е хубаво да си направи - всеки потребител трябва да има възможност за промяна на данните. Освен това Msecurity му дава точно такъв код, само че проблема в неговото предложение е, че на потребителя се праща хешираната парола. Трябва да се направи например така:

PHP:
$newpass = array();
$newpass[0] = rand();
$newpass[1] = md5($newpass[0]);
mail(...паролата е $newpass[0]);
mysqli_query(... set `password` = ' ".$newpass[1]." ' ...);
Тоест да се запише $newpass[1], която е хеширана, а да се изпрати $newpass[0], която не е хеширана.
 
Да трябва да направя форма за редактиране на данни след регистрация
 
ivo75 каза:
Да трябва да направя форма за редактиране на данни след регистрация
Ми направи си :D

Добре де, ти за какво питаш - как да си направиш форма за промяна на данните или система за забравена парола? От коментара ти нищо не се разбира...
 
Исках скрипт за забравена парола, ама после се сетих, че ще е нужно и форма за редакция на данните :).
 

Back
Горе