<?php
//Уровень вывода ошибок
error_reporting (0);
//Если юзер нажал кнопку отправки
if (isset ($_POST['ok']))
{
//Инициализируем переменные
$login = !empty ($_POST['login']) ? trim ($_POST['login']) : NULL;
$pass = !empty ($_POST['pass']) ? trim ($_POST['pass']) : NULL;
$pass2 = !empty ($_POST['pass2']) ? trim ($_POST['pass2']) : NULL;
$email = !empty ($_POST['email']) ? trim ($_POST['email']) : NULL;
//Массивы ошибок
$error = array;
$error2 = array;
//Если юзер ничего не вписал в поля, выводим сообщение об ошибке
if ($login == "" or $pass == "" or $pass2 == "")
$error[] = "Заполните все поля";
elseif ($pass !== $pass2)
$error[] = "Пароли не совпадают";
//Если введенный юзером e-mail не совпадает шаблону, опять выводим сообщение об ошибка
if (!preg_match ("#^([a-z0-9\_\-\.])+@(a-z0-9\_\-\.)\.([a-z]{2,6})$#i", $email))
$error[] = "Неправильный формат e-mail";
//Если нет ошибок, едем дальше
if (count ($error) == 0)
{
//Подключаемся
mysql_connect ("localhost", "root") or die ("Невозможно подключиться к серверу");
mysql_select_db ("php") or die ("Невозможно выбрать базу данных");
//Проверка на занятость введенного логина
$sql = "SELECT COUNT(*) AS `cnt` FROM `users`
WHERE `login` = '".mysql_real_escape_string ($login)."'";
$query = mysql_query ($sql);
if (mysql_result ($query, 0) > 0)
$error2[] = "Юзер с таким логином уже есть";
//Проверка на занятость введенного e-mail
$sql2 = "SELECT COUNT(*) AS `cnt` FROM `users`
WHERE `email` = '".mysql_real_escape_string ($email)."'";
$query2 = mysql_query ($sql2);
if (mysql_result ($query2, 0) > 0)
$error2[] = "Юзер с таким e-mail уже есть";
//Если все ок, топаем дальше
if (count ($error2) == 0)
{
$sql3 = "INSERT INTO `users` (`login`, `pass`, `email`)
VALUES ('".mysql_real_escape_string ($login)."',
'".md5($pass)."',
'".mysql_real_escape_string ($email)."')";
$query3 = mysql_query ($sql3);
if ($query3)
echo "Вы успешно зарегистрированы";
else
echo "Ошибка во время регистрации";
}
else
{
foreach ($error2 as $error_echo2)
echo $error_echo2."<br />";
}
}
else
{
foreach ($error as $error_echo)
echo $error_echo."<br />";
}
}
?>
<form action="" method="post">
<p><label>Желаемый логин</label><br />
<input type="text" name="login" maxlength="30" value="<?php echo strip_tags ($login); ?>"/>
</p>
<p><label>Пароль</label><br />
<input type="password" name="pass" maxlength="30" value="<?php echo strip_tags ($pass); ?>/>
</p>
<p><label>Подтвердите пароль</label><br />
<input type="password" name="pass2" maxlength="30" value="<?php echo strip_tags ($pass2); ?>/>
</p>
<p><label>E-mail</label><br />
<input type="text" name="email" maxlength="50" value="<?php echo strip_tags ($email); ?>/>
</p>
<p><input type="submit" name="ok" value="Зарегистрироваться" />
</p>
</form>
Спустя 14 минут, 22 секунды (27.11.2010 - 17:36) aH6y написал(а):
vinnie
Да
Да
Спустя 1 минута, 44 секунды (27.11.2010 - 17:38) vinnie написал(а):
косяки в любом случае есть, наверное) пишем...
Спустя 9 минут, 12 секунд (27.11.2010 - 17:47) Lenarfate написал(а):
для чего тебе strip_tags?
Спустя 56 секунд (27.11.2010 - 17:48) vinnie написал(а):
htmlspecialchars юзать?
Спустя 1 минута, 34 секунды (27.11.2010 - 17:50) Lenarfate написал(а):
и вот это
Цитата |
$error = array; |
вот так надо $error = array();
и все запросы можно сразу в переменную толкать, а не так длинно
Цитата |
$sql2 = "SELECT COUNT(*) AS `cnt` FROM `users` WHERE `email` = '".mysql_real_escape_string ($email)."'"; $query2 = mysql_query ($sql2); |
Спустя 41 секунда (27.11.2010 - 17:51) Lenarfate написал(а):
Цитата |
htmlspecialchars юзать? |
конечно
Спустя 38 секунд (27.11.2010 - 17:51) vinnie написал(а):
$error = array;
невнимательность
а насчет запросов ты прав... лучше в переменную
Спустя 27 секунд (27.11.2010 - 17:52) twin написал(а):
Смотря какой заказчик...
За вот это
Откровенная дырка на вскидку одна, тут
За вот это
error_reporting (0);пальцы отламывать по саму майку.
Откровенная дырка на вскидку одна, тут
<p><label>Желаемый логин</label><br />и так далее. Тут нужно htmlspecialchars(), а не strip_tags(). Про эту функцию вообще забудь, она нужна только в парсерах, к защите отношения никакого не имеет.
<input type="text" name="login" maxlength="30" value="<?php echo strip_tags ($login); ?>"/>
</p>
Спустя 27 секунд (27.11.2010 - 17:52) vinnie написал(а):
а какая разница? стрип_таг или хтмлспециалчарс?????? смысл один
Спустя 1 минута, 1 секунда (27.11.2010 - 17:53) vinnie написал(а):
error_reporting (0);
почему нельзя использовать?
Спустя 2 минуты, 11 секунд (27.11.2010 - 17:55) Lenarfate написал(а):
стрип_тагс удаляет теги, хтмлспециалчарс заменяет спецсимволы
Спустя 47 секунд (27.11.2010 - 17:56) vinnie написал(а):
ясно... исправил уже. а че TWIN ругался за error_reporting (0);????? не в курсе?
Спустя 6 минут, 24 секунды (27.11.2010 - 18:02) twin написал(а):
Спустя 1 час, 7 минут, 54 секунды (27.11.2010 - 19:10) vinnie написал(а):
заменил strip_tags на htmlspecialchars
error_reporting (0) убрал
что еще не так?
error_reporting (0) убрал
что еще не так?
Спустя 11 минут, 11 секунд (27.11.2010 - 19:22) twin написал(а):
Для начала пойдет. Если заказчик не прихотлив.
Многие начинают гораздо хуже.
Многие начинают гораздо хуже.
Спустя 43 секунды (27.11.2010 - 19:22) vinnie написал(а):
а что еще не так? скажи
Спустя 13 минут, 5 секунд (27.11.2010 - 19:35) inpost написал(а):
Если не:
$sql = "SELECT COUNT(*) AS `cnt` FROM `users` WHERE `login` = '".mysql_real_escape_string ($login)."'";
А брать только одно поле `id`, то скрипт будет быстрее
$sql = "SELECT COUNT(*) AS `cnt` FROM `users` WHERE `login` = '".mysql_real_escape_string ($login)."'";
А брать только одно поле `id`, то скрипт будет быстрее
Спустя 2 минуты, 46 секунд (27.11.2010 - 19:38) twin написал(а):
Всё так, успокойся.
Работает, дыр нет - знач гут. Потом сам перепишешь. Такова тяжелая доля программиста, всегда писать лучше чем вчера и смеятся над собой. Говнокод.ру не зря придуман.
Ты на верном пути.
Работает, дыр нет - знач гут. Потом сам перепишешь. Такова тяжелая доля программиста, всегда писать лучше чем вчера и смеятся над собой. Говнокод.ру не зря придуман.
Ты на верном пути.
Спустя 10 минут, 58 секунд (27.11.2010 - 19:49) kovaldm написал(а):
Вот это добавь.
error_reporting (E_ALL)
_____________
Меньше теории, больше практики...