<?php
if(isset($_POST['login']))
{
include "bdconnect.php";
$sql="SELECT * FROM users WHERE login=".$_POST['login'] ;
echo "ghbdtn";
$result = mysql_query($sql,$dbcnx) ;
$pravda=TRUE;
$pat="![А-Я][а-я]+!";
if($result)
{
echo "Этот ник уже занят.Пожалуйста выберите другой";
$pravda=FALSE;
}
if(!preg_match($pat,$_POST['name']))
{
echo "Проверьте правильность заполнения поля <font id=\"redko\">Имя</font>.Ведены недопустимые символы";
$pravda=FALSE;
}
if(!preg_match($pat,$_POST['family']))
{
echo "Проверьте правильность заполнения поля <font id=\"redko\">Фамилия</font>.Ведены недопустимые символы";
$pravda=FALSE;
}
if(!preg_match($pat,$_POST['father']))
{
echo "Проверьте правильность заполнения поля <font id=\"redko\">Отчество</font>.Ведены недопустимые символы";
$pravda=FALSE;
}
$pat="#^[a-z0-9]{1}[a-z0-9_.-]{1,15}$#i";
if(!preg_match($pat,$_POST['login']))
{
echo "Проверьте правильность заполнения поля <font id=\"redko\">Ник</font>.Ведены недопустимые символы";
$pravda=FALSE;
}
$pat="#^[^а-яё]{6,}$#i";
if(!preg_match($pat,$_POST['password']))
{
echo "Проверьте правильность заполнения поля <font id=\"redko\">Пароль</font>.Ведены недопустимые символы либо пароль слишком короткий.Пароль должен иметь длину не менее 6 символов";
$pravda=FALSE;
}
$pat="!\d{2,2}\.\d{2,2}\.\d{4,4}!";
if(!preg_match($pat,$_POST['born']))
{
echo "Проверьте правильность заполнения поля <font id=\"redko\">Дата рождения</font>.Рассмотрите внимательнее образец";
$pravda=FALSE;
}
$pat="!^\w+([\.\w]+)*\w@\w((\.\w)*\w+)*\.\w{2,3}$!";
if(!preg_match($pat,$_POST['e-mail']))
{
echo "Проверьте правильность заполнения поля <font id=\"redko\">E-mail</font>.Введённый e-mail не существует.";
$pravda=FALSE;
}
if($_POST['password']!=$_POST['repassword'])
{
echo "Введённые пароли не совпадают.Повторите ввод!";
$pravda=FALSE;
}
if($pravda)
{
$sql="INSERT INTO `users` (`login`,`password`,`name`,`family`,`father`,`born`,`e-mail`)
VALUES ('".$_POST['login']."','".$_POST['password']."','".$_POST['name']."','".$_POST['family']."','".$_POST['father']."','".$_POST['born']."','".$_POST['e-mail']."')";
$sql=mysql_real_escape_string($sql);
$result = mysql_query($sql,$dbcnx) or die( mysql_error() );
echo $sql;
if(!$result)
echo "Неизвестная ошибка.Свяжитесь с администрацией сайта";
else
echo "Регистрация прошла успешно";
}
}
?>
Спустя 3 минуты, 20 секунд (18.09.2010 - 01:28) twin написал(а):
Эк как ты хотел одним махом отделаться.
Функция эта обрабатывает данные по очереди, а не весь текст запроса.
Функция эта обрабатывает данные по очереди, а не весь текст запроса.
Спустя 3 часа, 48 минут, 52 секунды (18.09.2010 - 05:17) Ice написал(а):
переменная $pravda улыбнула
"Где правда, брат?"(с) Можно было бы с необычайной легкостью собрать ошибки и без нее.
по сабжу Твин уже отпостил, ну а мы пройдемся по регвырам, хотя нет,.. сперва потопчемся около них:
Этот кусок предполагает, что имя пользователя должно быть введено с большой буквы. не было бы более дружелюбным для пользователя пользовать вместо этой констры функцию ucfirst(), которая сама бы...?
То же самое и с фамилией, которая, кстати говоря, на буржуйском звучит, как surname, и с отчеством (patronymic).
А теперь регвыры:
Я кончил
"Где правда, брат?"(с) Можно было бы с необычайной легкостью собрать ошибки и без нее.
по сабжу Твин уже отпостил, ну а мы пройдемся по регвырам, хотя нет,.. сперва потопчемся около них:
$pat="![А-Я][а-я]+!";
...
...
...
if(!preg_match($pat,$_POST['name']))
{
...
}
Этот кусок предполагает, что имя пользователя должно быть введено с большой буквы. не было бы более дружелюбным для пользователя пользовать вместо этой констры функцию ucfirst(), которая сама бы...?
То же самое и с фамилией, которая, кстати говоря, на буржуйском звучит, как surname, и с отчеством (patronymic).
А теперь регвыры:
- #^[a-z0-9]{1}[a-z0-9_.-]{1,15}$#i - как этот паттерн можно было бы записать более правильно? Ответ:#^[a-z0-9][a-z0-9_.-]{1,15}$#i
- #^[^а-яё]{6,}$#i - поле бесконечной длины... Опасненько, а еще более опасно то, что потом переменная, проверяемая при помощи этого паттерна вставляется в БД нехешированной.
- !\d{2,2}\.\d{2,2}\.\d{4,4}! - поменялся ограничитель паттерна. Да и ладно, наверное, это был уже следующий день, другое настроение, все дела... Как можно переписать данный паттерн более доступно? Ответ: !(?:\d{2}\.){2}\d{4}!
- !^\w+([\.\w]+)*\w@\w((\.\w)*\w+)*\.\w{2,3}$! - этот паттерн, паттерн проверки мыла, очень далек от RFC5322. И как же быть тем, у кого ящик на домене coop, info, travel, museum..?
Я кончил
Спустя 1 час, 36 минут, 22 секунды (18.09.2010 - 06:53) twin написал(а):
Цитата |
не было бы более дружелюбным для пользователя пользовать вместо этой констры функцию ucfirst(), которая сама бы...? |
Добавлю. С логином нельзя делать ни того ни другого ни в коем случае.
Вот посмотри на мой ник. Он не просто так с маленькой буквы. Я не хочу, чтобы это было именем нарицательным, у меня есть имя. А это так, пропуск на форум.
А тут меня принуждают, или, что совсем недопустимо, делают это за меня.
Спустя 8 часов, 26 минут, 4 секунды (18.09.2010 - 15:19) Karpo написал(а):
Всем спасибо за замечания,всё исправлю.Получается,каждую переменную нужно отдельно пропускать через mysql_real_escape_string.
Спустя 14 минут, 18 секунд (18.09.2010 - 15:34) Michael написал(а):
Цитата (Karpo @ 18.09.2010 - 14:19) |
Всем спасибо за замечания,всё исправлю.Получается,каждую переменную нужно отдельно пропускать через mysql_real_escape_string. |
Если это вопрос, то уточню - не все, а те которые строкового типа.
Спустя 1 день, 5 часов, 23 минуты, 31 секунда (19.09.2010 - 20:57) Karpo написал(а):
Почему-то и такая конструкция не действует.
Использование функции mysql_real_escape_string() приводит к вызову обработчика
$sql="INSERT INTO `phpsite`.`users` (`login`, `password`, `name`, `family`, `father`, `born`, `e-mail`)
VALUES (".mysql_real_escape_string($_POST['login']).",".
mysql_real_escape_string($_POST['password']).",".
mysql_real_escape_string($_POST['name']).",".
mysql_real_escape_string($_POST['family']).",".
mysql_real_escape_string($_POST['father']).",".
mysql_real_escape_string($_POST['born']).",".
mysql_real_escape_string($_POST['e-mail']).")";
Использование функции mysql_real_escape_string() приводит к вызову обработчика
Спустя 7 минут, 40 секунд (19.09.2010 - 21:05) twin написал(а):
А апострофы где?
Спустя 2 минуты, 29 секунд (19.09.2010 - 21:07) Админ написал(а):
чё то тут с синтаксисом полный фарш - никогда такого не видел
Спустя 2 часа, 16 минут, 10 секунд (19.09.2010 - 23:23) Basili4 написал(а):
Цитата (Админ @ 19.09.2010 - 22:07) |
чё то тут с синтаксисом полный фарш - никогда такого не видел |
ага за неделю изучения пыхапе ты кода насмотрелся
По сабжу
и вот это делают обычно как то так
if(!preg_match($pat,$_POST['family']))но это не критично можно и так оставить
{
$error[]= "Проверьте правильность заполнения поля <font id=\"redko\">Фамилия</font>.Ведены недопустимые символы";
}
.....
if (!empty($error)){Выводим ошибки}
так просто строчек меньше.
Спустя 1 час, 34 минуты, 13 секунд (20.09.2010 - 00:58) Karpo написал(а):
Забыл про апострофы,но с ними mysql_real_escape_string тоже не работает.
Такой код работает
А такой почему-то нет
Такой код работает
$sql="INSERT INTO `phpsite`.`users` (`login`, `password`, `name`, `family`, `father`, `born`, `e-mail`)
VALUES ('".$_POST['login']."','".
$_POST['password']."','".
$_POST['name']."','".
$_POST['family']."','".
$_POST['father']."','".
$_POST['born']."','".
$_POST['e-mail']."')";
А такой почему-то нет
$sql="INSERT INTO `phpsite`.`users` (`login`, `password`, `name`, `family`, `father`, `born`, `e-mail`)
VALUES ('".mysql_real_escape_string($_POST['login'])."','".
mysql_real_escape_string($_POST['password'])."','".
mysql_real_escape_string($_POST['name'])."','".
mysql_real_escape_string($_POST['family'])."','".
mysql_real_escape_string($_POST['father'])."','".
mysql_real_escape_string($_POST['born'])."','".
mysql_real_escape_string($_POST['e-mail'])."')";
Спустя 6 минут, 5 секунд (20.09.2010 - 01:04) Ice написал(а):
ну, а пишет-то чего?
Спустя 25 минут, 9 секунд (20.09.2010 - 01:29) Karpo написал(а):
Ничего не пишет,скрипт аварийно завершает работу и запускается отладчик от Visual Studio
Спустя 10 минут, 57 секунд (20.09.2010 - 01:40) Ice написал(а):
Никогда не работал с РНР в этом редакторе, только с Сями. А отладчик тоже ничего не пишет?
Спустя 7 минут, 41 секунда (20.09.2010 - 01:47) Админ написал(а):
странно как-то всё вроде идентично - возможно что-то с конфигурацией
Спустя 6 часов, 13 минут, 34 секунды (20.09.2010 - 08:01) twin написал(а):
Цитата |
Ничего не пишет,скрипт аварийно завершает работу и запускается отладчик от Visual Studio |
А просто без этого наварота, на сервере проверял? Браузером?
Спустя 7 часов, 9 минут, 7 секунд (20.09.2010 - 15:10) Karpo написал(а):
Этот отладчик вообще не при кухне.я в нём проги по C++ для универа пишу.Он запускается как отладчик по умолчанию.Если б Visual установлен не был,была бы просто ошибка.
Цитата |
А просто без этого наварота, на сервере проверял? Браузером? |
Я и проверяю через браузер,отладчик запускается автоматически после ошибки.Я его сразу же выключаю
Спустя 1 час, 3 минуты, 16 секунд (20.09.2010 - 16:13) twin написал(а):
Так я не понял, ошибка есть или нет? В браузере. Не в отладчике, который тут вообще не при делах.
Спустя 3 часа, 52 минуты, 52 секунды (20.09.2010 - 20:06) Karpo написал(а):
отправляю форму регистрации и в браузере появляется пустая белая страница,браузер думает,запускается отладчик.Закрываю отладчик и браузер выдаёт : Веб-страница недоступна.
Спустя 17 часов, 36 минут, 25 секунд (21.09.2010 - 13:43) Karpo написал(а):
Спустя 9 минут, 7 секунд (21.09.2010 - 13:52) twin написал(а):
Ты делаешь какую то ересь. И ждешь совета... Какой нахрен еще отладчик.
Спустя 55 минут, 58 секунд (21.09.2010 - 14:48) Ice написал(а):
Дебаггир
Спустя 1 день, 11 часов, 1 минута, 36 секунд (23.09.2010 - 01:49) Karpo написал(а):
Понятно
Спустя 20 часов, 44 минуты, 48 секунд (23.09.2010 - 22:34) Karpo написал(а):
Так и не разобрался.Подозреваю,что что-то с кодировкой.Использую UTF-8.Наверно функция использует не ту кодировку, в которой записана строка.Не работает даже такой код:
неделю уже медитирую
$opa="Вот так вот";
$opa=mysql_real_escape_string($opa);
неделю уже медитирую
Спустя 1 день, 2 часа, 16 минут, 9 секунд (25.09.2010 - 00:50) Karpo написал(а):
Проблема решена.Удалил mysql,хорошенько почистил комп (обнаружил файлы двух ранее установленных баз).Установил свежий мускул и всё заработало.Ура!