Спустя 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 написал(а):
и то и то надо
Смотри. Алгоритм таков:
юзвер вводит регистрационные данные. Они через m_r_e_s записываются в БД.
Но это не касаеться пароля. Пароль необходимо хранить в захешированном виде, это мд5. Т.е. юзер вводит пас "123", а ты в БД кладёшь ".md5($_POST['Pass'])."
Это если очень кратко. На самом деле моментов очень много, но их нету смысла все СРАЗУ рассказывать - ибо просто запутаешься. Юзай эти основы и будет, для начала, норм. Когда их поймёшь почитаешь про "остальное".
А что касаемо авторизации, то там аналогично. Тот же пасс снова в мд5 и сравниваешь хеши. Если они совпали, при этом же логине - тогда всё норм.
Вот посмотри тему по данной тематике. Там есть и решения. http://phpforum.ru/index.php?showtopic=19168
Смотри. Алгоритм таков:
юзвер вводит регистрационные данные. Они через 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;
а это для чего? $id = !empty($_GET['id']) ? $_GET['id'] : NULL;
Спустя 4 минуты, 37 секунд (12.08.2010 - 15:25) DedMorozzz написал(а):
почитай про ф-ю "емпти" и думаю вопросы сами по себе отпадут
Спустя 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 написал(а):
кто-нить объясните, как это сделать...