Форма смены пароля. Помогите разобраться.

Статус
В этой теме нельзя размещать новые ответы.

metallphilin

старожил nulled
Регистрация
25 Авг 2006
Сообщения
680
Реакции
212
Форма смены пароля в tSite 6.0. Помогите разобраться.

скрипт tSite 6.0 имеет опцию "Забыл пароль". При клике появляется два окна: е-мейл(или логин), новый пароль.
вводим, на мыло приходит ссылка, при клике на которую скрипт должен присвоить новый пароль в хеше md5.
Алгоритм такой, что генерируется случайный код и записывается в таблицу users в ветку passreset, новый пароль, еще не подтвержденный ссылкой, в passreset2 - до этого доходит, пишет, с этим проблем нет. При переходе по ссылке, скрипт выводит, мол все хорошо, ваш новый пароль бла бла бла. Но в базе ровным счетом ничего не меняется. так и остается - хеш, пассресет, пассресет2 с теми же значениями.
ниже код всего файла pass.php
if(isset($_GET['smarty_myinfo'])) $smarty_myinfo=$_GET['smarty_myinfo'];
include('config.php');
include('smarty_cp.php');
$t=$smarty->get_config_vars('lang_get_pass');
include("head.php");
if($_POST['submit'] AND !$_GET['reset']){
$query = mysql_query("SELECT * FROM users WHERE login = '".mysql_real_escape_string($_POST['email'])."' or email='".mysql_real_escape_string($_POST['email'])."'");
if(mysql_num_rows($query)==0) $error=$smarty->get_config_vars('lang_passerror_1');
if(!$error) {
$user_email=mysql_result($query,0,'email');
$tekens=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z");
$code;
for($c = 0; $c < 12; $c++){
srand((double)microtime() * 100000000000000);
$pass = $tekens[rand(0, 62)];
$code = $code.$pass;
}
$query = mysql_query("UPDATE users SET passreset = '$code',
passreset2 = '".$_POST['new']."'
WHERE (login = '".$_POST['email']."' or email='".$_POST['email']."')");
$message = "Здравствуйте коллега,\n<br>\n<br>Вы запросили изменение пароля на сайте <b>$topsite_name</b>.
Для изменения пароля нажмите на указанную ниже ссылку. Если Вы хотите оставить старый пароль, просто удалите это письмо.\n<br>\n<br>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href=\"".$webmaster_url."pass.php?reset=$code\">".$webmaster_url."pass.php?reset=$code</a>\n<br>\n<br>
<br>";
email2user($user_email,$smarty->get_config_vars('lang_passerror_2'),$message);
$error=$smarty->get_config_vars('lang_passerror_3');
}
}
if($_GET["reset"]){
$query = mysql_query("SELECT * FROM users WHERE passreset = '".$_GET['reset']."'");
if(mysql_num_rows($query)==0) $error='error';
else {
while($object = mysql_fetch_object($query)){
$old=$object->passreset2;
$new = md5($object->passreset2);
}
mysql_query("UPDATE users SET passreset = NULL,
passreset2 = NULL,
password = '$new'
WHERE passreset = '".$_GET['reset']."'");
$error=$smarty->get_config_vars('lang_passerror_4') . ' <b>'.$old.'</b>';
}
}
$smarty->assign('error',$error);
$smarty->display('pass.tpl');
include('foot.php');
где ошибка, помогите пожалуйста.
Добавлено через 8 минут
сам разобрался.:-]
mysql_query("UPDATE users SET passreset = NULL,
passreset2 = NULL,
password = '$new'
WHERE passreset = '".$_GET['reset']."'");
заменить на
mysql_query("UPDATE users SET
password = '$new'
WHERE passreset = '".$_GET['reset']."'");
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху