[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Объясните толком про регистрация и авторизацию
Вежливый гость
Доброго дня всем! Перерыл кучу инфы о том, как сделать регистрацию и авторизацию на PHP. Везде по-разному все написано, то md5, то myslq_real_escape_string... Пожалуйста, толком объясните мне, что да как... чтобы было безопасно сделано все,



Спустя 5 минут, 22 секунды (12.08.2010 - 14:51) twin написал(а):
Основные принципы описаны тут.

Спустя 4 минуты, 1 секунда (12.08.2010 - 14:55) Guest написал(а):
<?php
// Подключение к хосту
include("config.php");



$login = trim($_POST['login']);
$pass = trim(md5($_POST['pass']));
$sub = $_POST['sub'];

$res = "SELECT * FROM users
WHERE login = '"
.mysql_real_escape_string($_POST['login'])."'";

$query = mysql_query($res);
$b = mysql_fetch_array($query);

if ($sub)
{
if(mysql_num_rows($query)>0)
{
echo "Такой юзер есть в системе";
}
else
{
$ins = "INSERT INTO users
SET login = '"
.mysql_real_escape_string($_POST['login'])."',
pass = '"
.mysql_real_escape_string(md5($_POST['pass']))."'";
if (mysql_query($ins)) {echo "Успешно";}
}
}

?>


<h3>Авторизация</h3>

<form action="index.php" method="post">

<!-- Поле для ввода логина-->
<p><label>Введите логин<br/></label>
<input type="text" name="login"/>
</p>

<!-- Поле для ввода пароля-->
<p><label>Введите пароль<br/></label>
<input type="password" name="pass"/>
</p>

<!-- Кнопка отправки данных-->
<p><input type="submit" value="Войти" name="sub"/>
</p>
</form>

РЕГИСТРАЦИЯ ПРАВИЛЬНАЯ?

Спустя 2 минуты, 21 секунда (12.08.2010 - 14:57) DedMorozzz написал(а):
и то и то надо smile.gif
Смотри. Алгоритм таков:
юзвер вводит регистрационные данные. Они через m_r_e_s записываются в БД.
Но это не касаеться пароля. Пароль необходимо хранить в захешированном виде, это мд5. Т.е. юзер вводит пас "123", а ты в БД кладёшь ".md5($_POST['Pass'])."
Это если очень кратко. На самом деле моментов очень много, но их нету смысла все СРАЗУ рассказывать - ибо просто запутаешься. Юзай эти основы и будет, для начала, норм. Когда их поймёшь почитаешь про "остальное".

А что касаемо авторизации, то там аналогично. Тот же пасс снова в мд5 и сравниваешь хеши. Если они совпали, при этом же логине - тогда всё норм.
Вот посмотри тему по данной тематике. Там есть и решения. http://phpforum.ru/index.php?showtopic=19168

Спустя 2 минуты, 5 секунд (12.08.2010 - 14:59) Guest написал(а):
DedMorozzz
Спасибо тебе, БРАТАН

Спустя 26 секунд (12.08.2010 - 15:00) Guest написал(а):
А тот код, который я написал выше, корректный?

Спустя 3 минуты, 14 секунд (12.08.2010 - 15:03) DedMorozzz написал(а):
Как минимум
Цитата
pass = '".mysql_real_escape_string(md5($_POST['pass']))."'";
заменить на
pass='".md5($_POST['pass'])."'";

Спустя 2 минуты, 12 секунд (12.08.2010 - 15:05) Guest написал(а):
а что ещё? мне надо раз и навсегда запомнить и больше не возвращаться к этому

Спустя 1 минута, 21 секунда (12.08.2010 - 15:06) DedMorozzz написал(а):
ну я же дал тему. Там все моменты есть.

Спустя 46 секунд (12.08.2010 - 15:07) Guest написал(а):
Спасибо! А когда надо использовать magic_quotes?

Спустя 1 минута, 34 секунды (12.08.2010 - 15:09) DedMorozzz написал(а):
Никогда. От них лишь надо избавляться. Если они вдруг включены. Но если искажение данных - это не существенно, тогда можно и не избавляться.

Спустя 3 минуты, 5 секунд (12.08.2010 - 15:12) Guest написал(а):
а обратные кавычки одинарные... вот эти ```` в каком случае надо ставить? всегда? я имею выборка из БД, вставка..

Спустя 1 минута, 41 секунда (12.08.2010 - 15:14) DedMorozzz написал(а):
` - таблица, поле
' - значение.

Спустя 1 минута, 46 секунд (12.08.2010 - 15:15) Guest написал(а):
ясно... все становится на свои места))) а зачем ставят @? например: @mysql_connect и т.д

Спустя 3 минуты, 38 секунд (12.08.2010 - 15:19) DedMorozzz написал(а):
Подавление вывода ошибок. В данном случае - не лучший вариант её так использовать.

Спустя 1 минута, 25 секунд (12.08.2010 - 15:20) Guest написал(а):
представляю, как я те надоел(((

а это для чего? $id = !empty($_GET['id']) ? $_GET['id'] : NULL;

Спустя 4 минуты, 37 секунд (12.08.2010 - 15:25) DedMorozzz написал(а):
почитай про ф-ю "емпти" и думаю вопросы сами по себе отпадут smile.gif

Спустя 3 минуты, 34 секунды (12.08.2010 - 15:29) Guest написал(а):
я имел ввиду тернарный оператор ?

вот так правильно?


$login = !empty($_POST['login']) ? trim($_POST'[login']) : NULL;
$pass = !empty(($_POST['pass'])) ? trim(md5($_POST['pass'])) : NULL;
$sub = !empty($_POST['sub']) ? $_POST['sub'] : NULL;

Спустя 1 минута, 34 секунды (12.08.2010 - 15:30) DedMorozzz написал(а):
trim(md5($_POST['pass'])) - здесь ф-я "трим" лишняя.

Спустя 1 минута, 3 секунды (12.08.2010 - 15:31) Guest написал(а):
в пароле trim не нужен ваще?

Спустя 13 минут, 18 секунд (12.08.2010 - 15:44) DedMorozzz написал(а):
нет. Ты сперва хешируешь, а после "тримуешь". После хеширования пробелов и так не будет.

Спустя 3 минуты, 3 секунды (12.08.2010 - 15:48) Guest написал(а):
а вот время последнего посещения как замутить?

Спустя 4 минуты, 34 секунды (12.08.2010 - 15:52) DedMorozzz написал(а):
как вариант - при любом действии - записывать в БД, в нужное поле NOW()

Спустя 2 минуты, 5 секунд (12.08.2010 - 15:54) Guest написал(а):
для начала нужно создать поле, например, lasttime тип TIMESTAMP, так?

Спустя 16 часов, 46 минут, 57 секунд (13.08.2010 - 08:41) Guest написал(а):
кто-нить объясните, как это сделать...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.