{% else-1 %}
Hatsune Miku * [мошенник] 22.23
(20 фев 2014, 21:20) (0/0) [0]
Nevin_MC, ты не паверишь проверил и всё работает я же канал автора чтоб он скорее написал
Hatsune Miku * [мошенник] 22.23
(20 фев 2014, 21:19) (0/0) [0]
Islamfon, ты сперва прочитай ты говорил что крупные сайты хранят данные в куках вот тебе докозательства обратного
Hatsune Miku * [мошенник] 22.23
(20 фев 2014, 21:16) (0/0) [0]
Вася Кимо, там мысли умного человека что за бесплатно показывает таким ишакам как марк и исламфон какие они дауны и кнопочницы обоссаные *
Hatsune Miku * [мошенник] 22.23
(20 фев 2014, 21:14) (0/0) [0]
так теперь вы хоть зассытесь и заспорьтесь раз вы можете токо молоть языком спорить я небуду и отвечать на уведомления тоже и так читайте и покажите мне где хранятся данные в куках *
create_site / Форум / »Стaтьи/Информaция
← »Стaтьи/Информaция
15:10
keovken : 15:10Простая регистрация на PHP. Часть 2
Итак продолжим.
Наступает ответственный момент - нам нужно запомнить нашего юзера и его куки как нельзя лучше подойдут для этого. Запомните раз и навсегда
ПАРОЛЬ В КУКАХ ХРАНИТЬ НЕЛЬЗЯ!!!
их не так уж сложно украсть и все - хана учетной записи! Вместо него мы создадим уникальный хэш и будем обновлять его при каждой авторизации, как в базе так и в куках. Если его украдут это конечно неприятно, но не смертельно. Юзер заново авторизируется и все в порядке - хакер идет лесом. Ему опять нужно воровать куку. Разумеется полностью защититься от взлома нереально, наша задача сделать этот процесс как можно нерентабельнее, чтоб в итоге злоумышленник просто махнул рукой и ушел. Итак хэш. Дабы не изобретать велосипед я надыбал очень не плохую функцию которая генерирует уникальный ключ абсолютно случайным образом (нечто похожее на md5()). Совпадения практически исключены. Вот она

function randStr($num = 10)
{
$arr = array_merge(range(0, 9), range(\'!\', \'Удалён range(\'A\', \'Z\'));
$arr = array_merge($arr, $arr);

$key = \'\';
$rand = microtime(true);

for($i = 0; $i < $num; $i++)
{
$key .= $arr[(round(($rand * 1000 - floor($rand * 1000)),2) * 100 )];
$rand = microtime(true);
}

return $key;
}

Результат ее работы зависит от расположения планет, метода тыка, предсказаний оракулов вместе взятых. На него так же частично влияют температура процессора, степень нагруженности сервера... Словом шанс что в следующий раз выпадет такой же ключ почти нулевой. Ну а чтоб окончательно сделать его уникальным добавим к нему id записи нашего юзера (помните я говорил что пригодится)
И напишем еще одну функцию-обертку для установки уже окончательного хэша

function setAutologin($id)
{

$hash = md5(randStr() . $id);
return $hash;
}

ну вот теперь это хозяйство можно записывать и в базу и в куки. и узнавать соответственно по ним

$hash = setAutologin($id); //установка куки
setcookie(\'login\', $login, time() + 3600 * 24 * 30, \'/\');
setcookie(\'hash\', $hash, time() + 3600 * 24 * 30, \'/\');

$res = mysql_query(\"UPDATE `users`
SET `hash` = \'\". $hash .\"\',`code` = \'\".$hash.\"\'
WHERE `id` = \". (int)$id
);

Вуаля! И никакого пароля! Обратите внимание что в поле `code` мы поместили тот же хэш - он и будет ключом активации! Осталось отправить письмо на мыло и дело в шляпе!

//подготавливаем письмо
$to = $email;
$subject = \'Регистрация на сайте\';
$from = \'masterУдалён
$headers = \"Content-type: text/html; charset=\\\"utf-8\\\"\\r\\n\";
$headers .= \"From: <\". $from .\">\\r\\n\";
$headers .= \"MIME-Version: 1.0\\r\\n\";
$headers .= \"Date: \". date(\'D, d M Y h:i:s O\') .\"\\r\\n\";
$message = \'С Вашего электронного почтового адреса поступила заявка на
aктивацию учетной записи на сайте <b>\'. $_SERVER[\'HTTP_HOST\'] .\'</b><br>
Для доступа в аккаунт пройдите по <a href=\"\'.$_SERVER[\'HTTP_HOST\'].\'/activ.php\" >этой ссылке</a><br />
и введите в поле активации этот код: <b>\'. $hash .\'</b>
Код действителен до \'. date(\'d.m.Y\', time() + 60 * 60 * 24 * 3);
//отправляем мыло
mail($to, $subject, $message, $headers, $from);

ну вот и все! Дальше будет проще
  • 1 из 1