metallphilin
старожил nulled
- Регистрация
- 25 Авг 2006
- Сообщения
- 680
- Реакции
- 212
- Автор темы
- #1
Форма смены пароля в tSite 6.0. Помогите разобраться.
скрипт tSite 6.0 имеет опцию "Забыл пароль". При клике появляется два окна: е-мейл(или логин), новый пароль.
вводим, на мыло приходит ссылка, при клике на которую скрипт должен присвоить новый пароль в хеше md5.
Алгоритм такой, что генерируется случайный код и записывается в таблицу users в ветку passreset, новый пароль, еще не подтвержденный ссылкой, в passreset2 - до этого доходит, пишет, с этим проблем нет. При переходе по ссылке, скрипт выводит, мол все хорошо, ваш новый пароль бла бла бла. Но в базе ровным счетом ничего не меняется. так и остается - хеш, пассресет, пассресет2 с теми же значениями.
ниже код всего файла pass.php
Добавлено через 8 минут
сам разобрался.
скрипт 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>
<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']."'");