[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Пишу сайт для заказчика, такая регистрация пойдет?
vinnie

<?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 />
<input
type="text" name="login" maxlength="30" value="<?php echo strip_tags ($login); ?>"/>
</p>
и так далее. Тут нужно htmlspecialchars(), а не strip_tags(). Про эту функцию вообще забудь, она нужна только в парсерах, к защите отношения никакого не имеет.

Спустя 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) убрал
что еще не так?

Спустя 11 минут, 11 секунд (27.11.2010 - 19:22) twin написал(а):
Для начала пойдет. Если заказчик не прихотлив.
Многие начинают гораздо хуже. smile.gif

Спустя 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`, то скрипт будет быстрее

Спустя 2 минуты, 46 секунд (27.11.2010 - 19:38) twin написал(а):
Всё так, успокойся. smile.gif
Работает, дыр нет - знач гут. Потом сам перепишешь. Такова тяжелая доля программиста, всегда писать лучше чем вчера и смеятся над собой. Говнокод.ру не зря придуман. smile.gif
Ты на верном пути.

Спустя 10 минут, 58 секунд (27.11.2010 - 19:49) kovaldm написал(а):
Вот это добавь.
error_reporting (E_ALL) 


_____________
Меньше теории, больше практики...
Быстрый ответ:

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