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

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


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

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

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

Скачать

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

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

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

Найти:

if(!defined('DATALIFEENGINE'))

{

die("Hacking attempt!");

}

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

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

Изменено пользователем suslik
Ссылка на сообщение
Поделиться на других сайтах

suslik

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

// Module Configuration

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

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

$question_array = array(

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

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

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

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

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

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

);

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

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

из файла lost_advance.php

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

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

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

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

Изменено пользователем MSW
Ссылка на сообщение
Поделиться на других сайтах

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

угу

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

Поля у них есть, только они пустые. Если добавить еще 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
Ссылка на сообщение
Поделиться на других сайтах

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']))."'

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

Изменено пользователем MSW
Ссылка на сообщение
Поделиться на других сайтах

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

Смени это

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

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

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

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

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

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

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