Перейти к публикации

Продвинутое Восстановление Пароля


Рекомендованные сообщения

Данный хак(модуль) даёт возможность восстановление пароля не только через мыло, но и посредством секретного вопроса. вообщем в архиве есьт док по установки, но написан уже для немного опытных людей которые знаю как сделать запрос в базу и что такое прификс.

Вообще если посмотреть то он будет работать с весрии после которой стали применять двойное хэширование md5(md5()), по моему это 4-ка с чем-то была, точнее посмотерл это 4.3

Скачать

P.S. возможны небольшие ошибки, так как сильно не гонял, написал, поставил, проверил работает и всё. Так что тестирование возлогаю на всех вас. Пишите всё что найдёте исправлю.

Ссылка на сообщение
Поделиться на других сайтах
  • 3 месяца спустя...

3. Открыть файл modules/register.php

Найти:

if(!defined('DATALIFEENGINE'))

{

die("Hacking attempt!");

}

Ниже сделать копию настройек из 1-ого файла.

Из какого первого, и какие настройки? :) не по русски, нет завязки в предложении с вышенаписанным

Ссылка на сообщение
Поделиться на других сайтах

suslik

как я понял имелось ввиду:

// Module Configuration

$lost_advance = 1; // 1-выключить модуль, 0-выключить

$requred_answer = 1; //Поле ответа будет обязательным для заполнения

$question_array = array(

"Девичья фамилия матери",

"Любимое блюдо",

"Почтовый индекс родителей",

"Дата рождения бабушки",

"Любимый номер телеофна",

"Номер паспорта",

);

$lost_method = 1; // 1-пользователь сам водит новый пароль, 0-пароль генерируется автоматически

////////////////////////

из файла lost_advance.php

так оно и есть :)

теперь вопрос:

это работает для пользователей который зарегистрируются после установки данного модуля.

как добавить эти поля тем кто уже зарегистрирован?

Ссылка на сообщение
Поделиться на других сайтах

это работает для пользователей который зарегистрируются после установки данного модуля.

угу

как добавить эти поля тем кто уже зарегистрирован?

Поля у них есть, только они пустые. Если добавить еще 2 поля в профеле, это вопрос и ответ для восттановления и чтобы старые пользователи их заполнили.

Ссылка на сообщение
Поделиться на других сайтах

kaliostro,

добавил, в нужное место по дизайну, в userinfo.tpl:

<tr>

<td width="130" height="25">Вопрос для восстановления пароля</td>

<td>{questions}</td>

</tr>

<tr>

<td width="130" height="25">ответ на вопрос</td>

<td><input type="text" name="answer" class="f_input" /></td>

</tr>

а вот как правильно добавить в engine\modules\profile.php?

Ссылка на сообщение
Поделиться на других сайтах

Открыть файл modules/profile.php

Найти:

if(!defined('DATALIFEENGINE'))

{

  die("Hacking attempt!");

}
Ниже сделать копию настройек из файла lost_advance.CODE. После
$tpl->set('{edituser}',"[ <a href=\"java script:ShowOrHide('options')\">".$lang['news_option']."</a> ]");
Вставить такое
		if ($lost_advance && $question_array)

		{

			$questions = "<select name=\"question\" >\n";

			foreach ($question_array as $num=>$quest)

			{

				$questions .= "<option value=\"$num\"".(($quest == $row['question'])?' checked="checked" ':'')." >$quest</option>";

			}

			$questions .= "</select>";

			$tpl->set("{questions}", $questions);

		}

		$tpl->set("{answer}", $row['answer']);
Найти
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq', email='$email', info='$info', signature='$signature', password='$password1', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' where name='$user'";
Заменить на
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq', email='$email', info='$info', signature='$signature', password='$password1', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip', question='".$db->safesql($question_array[intval($_REQUEST['question'])])."',  answer='".$db->safesql(trim($_REQUEST['answer']))."' where name='$user'";
Найти
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq', email='$email', info='$info', signature='$signature', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip' where name='$user'";
Заменить на
$sql_user = "UPDATE " . USERPREFIX . "_users set fullname='$fullname', land='$land', icq='$icq', email='$email', info='$info', signature='$signature', allow_mail='$allow_mail', xfields='$filecontents', allowed_ip='$allowed_ip', question='".$db->safesql($question_array[intval($_REQUEST['question'])])."',  answer='".$db->safesql(trim($_REQUEST['answer']))."' where name='$user'";
в шаблоне вместо
<tr>

<td width="130" height="25">ответ на вопрос</td>

<td><input type="text" name="answer" class="f_input" /></td>

</tr>
Вставь
<tr>

<td width="130" height="25">ответ на вопрос</td>

<td><input type="text" name="answer" value="{answer}" class="f_input" /></td>

</tr>

Ссылка на сообщение
Поделиться на других сайтах

kaliostro,

спасибо! работает!

единственное неудобство: при последующем редактировании профиля сбрасывается опять на первый вариант вопроса.

может сделать первую строку вариантов пустой? и при редактировании профиля проверку вставить - если пустая строка в вопросе то не изменять этот параметр?

Ссылка на сообщение
Поделиться на других сайтах

Посомтри я уже поправил у себя, 1-ая вставка уже другая, теперь он должен ставит нужный вопрос.

Ссылка на сообщение
Поделиться на других сайтах

к сожалению тоже самое...

После:

if (!$icq) $icq = "";
Вставить:
$question = $db->safesql($question_array[intval($_REQUEST['question'])]);

$answer = $db->safesql(trim($_REQUEST['answer']));
После
xfields='$filecontents', allowed_ip='$allowed_ip'
Добавить:(2 раза)
, question='$question', answer='$answer'
Это вместо:
question='".$db->safesql($question_array[intval($_REQUEST['question'])])."',  answer='".$db->safesql(trim($_REQUEST['answer']))."'

Так просто немножко красивше будет :) и не будет сильно выделятся от стиля кода в движке

Ссылка на сообщение
Поделиться на других сайтах

ну да, вот немного ошибся.

Смени это

$questions .= "<option value=\"$num\"".(($quest == $row['question'])?' checked="checked" ':'')." >$quest</option>";
на
$questions .= "<option value=\"$num\"".(($quest == $row['question'])?' selected ':'')." >$quest</option>";

Ссылка на сообщение
Поделиться на других сайтах
  • 10 месяцев спустя...

хм... ссылка на скачивание битая... есть у кого нибудь данный хак?

http://forum.kaliostro.net/announcement.php?f=13&a=8

Ссылка на сообщение
Поделиться на других сайтах

Архивировано

Эта тема находится в архиве и закрыта для публикации сообщений.

×
×
  • Создать...