[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Готовый скрипт регистрации
Dimaz
Написал наконец таки скрипт регистрации!!! biggrin.gif Хочу услышать ваше мнение , о нем, а также критику(может чего не хватает или есть какие-нибудь недоработки).
Вот собственно сам скрипт:
Свернутый текст

 <?php
//подключение файла конфигурации
include'./config.inc.php';
if($_POST)
{
//проверка данных
$login = htmlspecialchars(stripslashes($_POST['login']));
$pass = htmlspecialchars(stripslashes($_POST['pass']));
define('SALT','b$Rh^1');
if (empty($login))
{
echo "Не заполенно поле логин!";
exit();
}
else {
if(!preg_match('/^[a-z][a-z0-9]+$/i', $login)) {
echo "Введены недопустимые символы в поле логин!";
exit();
}
}

if(empty($pass))
{
echo "Не заполнено поле пароль!";
exit();
}
else {
if(!preg_match('/[a-z0-9!@$%^&*]/i', $pass)) {
echo "Введены недопустимые символы в поле пароль";
exit();
}
}

//соединение с сервером базы данных
if(!$link = mysql_connect($db_server_name, $user_name, $user_password))
{
echo "Не могу соединиться с сервером базы данных";
exit();
}
//выбираем базу данных
if(!mysql_select_db($db_name, $link))
{
echo "Не могу выбрать базу данных";
exit();
}
//строка запроса
$res = "SELECT COUNT(*)
FROM `users`
WHERE `user_name` = '"
.mysql_real_escape_string($login) ."'
"
;
$sql=mysql_query($res);
if(mysql_result($sql,0)>0)
{
echo "Пользователь с таким логином уже существует!";
exit();
}

$str_sql_string = "INSERT INTO `users`
SET `user_name` = '"
.mysql_real_escape_string($login) ."',
`password` = '"
. md5($pass . SALT) ."'
"
;
if(!mysql_query($str_sql_string, $link))
{
echo "Не могу выполнить запрос";
exit();
}
echo "Вы успешно зарегестрированы на сайте!";
//закрытие соединения с сервером базы данных
mysql_close($link);
}
?>

Не обращайте особого внимания на регулярные выражения, просто они еще не совсем доработаны до конца, а также на то, что полей так мало(ну придумаю потом, что еще запросить у юзеров wink.gif )
Вот файл конфигурации:
Свернутый текст

<?php
//Данные для работы с MySQL
$db_server_name = "localhost";
//Пользователь и пароль
$user_name = "root";
$user_password = "";
//База данных
$db_name = "test_db";
?>

Следующая жертва-авторизация! biggrin.gif



Спустя 7 часов, 8 минут, 49 секунд (11.02.2010 - 02:06) inpost написал(а):
echo "Введены недопустимые символы в поле пароль"; exit();

Тоесть ты что-то не так сделал, и тебе на чисто белом экране пишут, ты не прав? smile.gif)) Сделай оформление для таких сообщений!

Спустя 3 часа, 10 минут, 17 секунд (11.02.2010 - 05:17) NewBePhp написал(а):
учится учится и еще раз учится писать скрипты... оптимизировать и таХ далее... есть лишние моменты...

Спустя 48 минут, 56 секунд (11.02.2010 - 06:05) qpayct написал(а):
Цитата (inpost @ 11.02.2010 - 01:06)
echo "Введены недопустимые символы в поле пароль"; exit();

Тоесть ты что-то не так сделал, и тебе на чисто белом экране пишут, ты не прав? smile.gif))

Во первых правильно так
exit("Введены недопустимые символы в поле пароль");
и действительно зачем так делать тоже не вижу смысла.

Во вторых нету капчи, а значит автоматическую регистрацию сделать, как 2 пальца об асфальт

Спустя 5 часов, 16 минут, 53 секунды (11.02.2010 - 11:22) Dimaz написал(а):
Есть лишние моменты, это мне ни о чем не говорит. На счет оформления, так это само собой, я не буду на чистый экран выводить сообщение, это уже потом когда дизайн буду делать. А на счет капчи спасибо, совсем про нее забыл. И еще я не понял зачем круглые скобки после оператора echo, что они изменят? Вот еще что хочу спросить, я правильно делаю, что после каждой ошибки вставляю оператор exit? Насколько я знаю он завершает работу скрипта когда его..

Спустя 2 минуты, 49 секунд (11.02.2010 - 11:25) Dimaz написал(а):
когда его продолжение бессмысленно. А в моем случаи продолжение действительно бессмысленно. Извините что написал во втором сообщении, просто в первое не влезло. С мобильника я.

Спустя 10 минут, 3 секунды (11.02.2010 - 11:35) qpayct написал(а):
ещё кстати htmlspecialchars надо использовать с ENT_QUOTES иначе одинарная ковычка не будет фильтроваться
$var=stripslashes(htmlentities($var, ENT_QUOTES));

Спустя 1 минута, 12 секунд (11.02.2010 - 11:36) DedMorozzz написал(а):
А что значит "бессмысленно"? Пользователь должен видеть все ошибки! А не заполняя форму из 20и полей каждый раз узнавая о след ошибке, тока тогда когда я уже отправил все данные. После 3й попытки я с сайта уже уйду. Отображай все ошибки!

Спустя 5 минут, 53 секунды (11.02.2010 - 11:42) Dimaz написал(а):
То есть exit убрать нужно, чтобы все ошибки выводил?

Спустя 5 минут, 15 секунд (11.02.2010 - 11:48) DedMorozzz написал(а):
как вариант в случае ошибки в переменную добавлять запись об этой ошибке. После отработки скрипта - проверять пуская ли эта переменая. Если да - всё норм, иначе - вывод этой переменой в которой храняться все ошибки, буть там 1 иль 100 сразу. Можно создать неск переменых, что бы красивее оформить. Решений куча. Есть ещё и AJAX - на лету отображать возможность регистрации. А не подбирать ник надеясь, что такого нету. Конечно, по поводу АЯКСА - для системы где будет от силы 1000 человек - такового мона не делать - не актуально, а в ином случае - посмотри как при регистрации мыла у яндекса, гугла сделано.

Спустя 30 минут, 57 секунд (11.02.2010 - 12:19) Dimaz написал(а):
DedMorozzz, как насчет библиотеки jQuery? Там просто сделать проверку на лету. Только все хотел узнать, эта библиотека загружается в браузер или на сервере все обрабатывает?

Спустя 4 минуты, 50 секунд (11.02.2010 - 12:23) DedMorozzz написал(а):
Аякс - загружает. Да и то, для регистрации - нагрузка смешная. Её (авторизацию) будет делать 1-2 человека одновременно и единаразово. А джекваери - на стороне клиента. Т.е. проверка будет происходить до отправки, что явно лучше, чем отправить и получить отказ. У некоторых после такого случаются психические расстройства. Мы веть этого не хотим, верно? Поэтому проверка до отправки - весьма позитивно. Но учти, что ява скрипт может быть отключён.

Спустя 10 минут, 49 секунд (11.02.2010 - 12:34) Dimaz написал(а):
Библиотека весит 55 килобайт, это получается, что она каждый раз в браузер будет загружаться.

Спустя 5 минут, 24 секунды (11.02.2010 - 12:40) DedMorozzz написал(а):
Нет, ты что! Только по четвергам!

Спустя 3 минуты, 31 секунда (11.02.2010 - 12:43) Dimaz написал(а):
Цитата (DedMorozzz @ 11.02.2010 - 09:40)
Нет, ты что! Только по четвергам!

biggrin.gif Это вообще не будет или только при первой загрузке сайта?

Спустя 15 минут, 2 секунды (11.02.2010 - 12:58) DedMorozzz написал(а):
Ну если это выполняется на стороне клиента. Ему необходимо передать инструкции что и как делать. Значит - да, передаются. И поверь, не тока по четвергам (выходные тоже считаются).
З.Ы.: и день железно дорожника

Спустя 6 минут, 23 секунды (11.02.2010 - 13:04) Mizka написал(а):
вообще-то не хорошо держать подключение к базе данных в скрипте регистрации, нету обработки поля подтверждения пароля. Нету возможности выводить ошибки в том месте, где тебе надо, да и после вывода ошибки останавливать скрипт через exit() как-то не красиво.

Спустя 26 минут, 49 секунд (11.02.2010 - 13:31) Dimaz написал(а):
Цитата (Mizka @ 11.02.2010 - 10:04)
вообще-то не хорошо держать подключение к базе данных в скрипте регистрации, нету обработки поля подтверждения пароля. Нету возможности выводить ошибки в том месте, где тебе надо, да и после вывода ошибки останавливать скрипт через exit() как-то не красиво.

А где же тогда держать подключение к БД? И почему через exit() не красиво, а как иначе то?

Спустя 17 минут, 44 секунды (11.02.2010 - 13:49) Gabriel написал(а):
$login = htmlspecialchars(stripslashes($_POST['login']));

это че за жуть такая? зачем на входе пихать данные в htmlspacialchars? да еще и пароль О_о

Спустя 1 час, 4 минуты, 34 секунды (11.02.2010 - 14:54) Mizka написал(а):
Цитата
А где же тогда держать подключение к БД

подключение к базе данных не имеет никакого отношения к модулю регистрации на сайте...
Цитата
И почему через exit() не красиво

потому что функция exit() заканчивает выполнение скрипта. а это не всегда корректно
Цитата
а как иначе то?

ну к примеру можно добавлять ошибки в переменную/массив и проверять если ли они перед добавлением пользователя в БД. если есть - показывать их пользователю, если нету - добавлять его в базу и говорить, что все прошло успешно...

Спустя 18 часов, 18 минут, 56 секунд (12.02.2010 - 09:13) samstepan написал(а):
=)

Спустя 3 минуты, 30 секунд (12.02.2010 - 09:16) qpayct написал(а):
Цитата (Gabriel @ 11.02.2010 - 12:49)
$login = htmlspecialchars(stripslashes($_POST['login']));

это че за жуть такая? зачем на входе пихать данные в htmlspacialchars? да еще и пароль О_о

на всякий случай. мало ли.
это я под вчерашним воздействием написал, а сегодня я уже умный tongue.gif

Спустя 4 часа, 32 минуты, 49 секунд (12.02.2010 - 13:49) Dimaz написал(а):
Цитата (Gabriel @ 11.02.2010 - 10:49)
$login = htmlspecialchars(stripslashes($_POST['login']));

это че за жуть такая? зачем на входе пихать данные в htmlspacialchars? да еще и пароль О_о

А чем на входе обрабатывать подскажи пожалуйста smile.gif

Спустя 6 минут, 59 секунд (12.02.2010 - 13:56) Gabriel написал(а):
Dimaz
три муллиарда тем на форуме.... на входе все стринги mysql_real_escape_string(), целые числа intval() и тд , и тп.
Быстрый ответ:

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