[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регистрация пользователей!
PiratXXX
Доброго времени суток всем!!!
Я изучаю php! Начал писать регистрацию пользователей! В последствии буду выкладывать сдесь все остальные часть скрипта!

РАССМОТРИТЕ, РАСКРЕТИКУЙТЕ И Т.П. ПОЖАЛАЙСТА!

Вот файл обработчик! (скажите правильно ли код написан т.е. у меня все работает, но может можно как-то короче записать кот, или еще что-то!)


<?php
/* Подключаем файл конфигурации */
include "../config.php";

echo "<div class='borderradius'>";
echo "<img src='../img/registration.png' width='14' height='14' alt='Регистрация'> <b>Регистрация</b><br>";

/* Заносим информацию введенну в поле, в переменную , если поле пустое, то уничтожаем переменную */
if (isset($_POST['login'])) {$login = $_POST['login']; if ($login == '') {unset($login);}}
if (isset($_POST['password'])) {$password = $_POST['password']; if ($password == '') {unset($password);}}
if (isset($_POST['name'])) {$name = $_POST['name']; if ($name == '') {unset($name);}}
if (isset($_POST['sex'])) {$sex = $_POST['sex']; if ($sex == '') {unset($sex);}}
if (isset($_POST['orientation'])) {$orientation = $_POST['orientation']; if ($orientation == '') {unset($orientation);}}
if (isset($_POST['political_views'])) {$political_views = $_POST['political_views']; if ($political_views == '') {unset($political_views);}}
if (isset($_POST['religious_sights'])) {$religious_sights = $_POST['religious_sights']; if ($religious_sights == '') {unset($religious_sights);}}
if (isset($_POST['phone'])) {$phone = $_POST['phone']; if ($phone == '') {unset($phone);}}
if (isset($_POST['email'])) {$email = $_POST['email']; if ($email == '') {unset($email);}}
if (isset($_POST['icq'])) {$icq = $_POST['icq']; if ($icq == '') {unset($icq);}}
if (isset($_POST['site'])) {$site = $_POST['site']; if ($site == '') {unset($site);}}
if (isset($_POST['activity'])) {$activity = $_POST['activity']; if ($activity == '') {unset($activity);}}
if (isset($_POST['interest'])) {$interest = $_POST['interest']; if ($interest == '') {unset($interest);}}
if (isset($_POST['favourite_music'])) {$favourite_music = $_POST['favourite_music']; if ($favourite_music == '') {unset($favourite_music);}}
if (isset($_POST['favourite_films'])) {$favourite_films = $_POST['favourite_films']; if ($favourite_films == '') {unset($favourite_films);}}
if (isset($_POST['favourite_teleshows'])) {$favourite_teleshows = $_POST['favourite_teleshows']; if ($favourite_teleshows == '') {unset($favourite_teleshows);}}
if (isset($_POST['favourite_books'])) {$favourite_books = $_POST['favourite_books']; if ($favourite_books == '') {unset($favourite_books);}}
if (isset($_POST['favourite_games'])) {$favourite_games = $_POST['favourite_games']; if ($favourite_games == '') {unset($favourite_games);}}
if (isset($_POST['favourite_citations'])) {$favourite_citations = $_POST['favourite_citations']; if ($favourite_citations == '') {unset($favourite_citations);}}
if (isset($_POST['about_itself'])) {$about_itself = $_POST['about_itself']; if ($about_itself == '') {unset($about_itself);}}


if (empty($login) or empty($password))
{
exit ("<img src='../img/cancel.png' width='14' height='14'> Вы ввели не всю обязательную информацию для регистрации!<br>
<img src='../img/empty.png' width='14' height='14'> Пожалуйста, вернитесь <b><a href='registration.php'>назад</a></b> и заполните обязательную информацию!"
);
}
/* Есль все необходимые данные: логин и пароль, введены то отключаем теги и скрипты */
$login = stripslashes($login);
$login = htmlspecialchars($login);
$login = trim($login);
$password = stripslashes($password);
$password = htmlspecialchars($password);
$password = trim($password);
$name = stripslashes($name);
$name = htmlspecialchars($name);
$name = trim($name);
$religious_sights = stripslashes($religious_sights);
$religious_sights = htmlspecialchars($religious_sights);
$religious_sights = trim($religious_sights);
$phone = stripslashes($phone);
$phone = htmlspecialchars($phone);
$phone = trim($phone);
$email = stripslashes($email);
$email = htmlspecialchars($email);
$email = trim($email);
$icq = stripslashes($icq);
$icq = htmlspecialchars($icq);
$icq = trim($icq);
$site = stripslashes($site);
$site = htmlspecialchars($site);
$site = trim($site);
$activity = stripslashes($activity);
$activity = htmlspecialchars($activity);
$activity = trim($activity);
$interest = stripslashes($interest);
$interest = htmlspecialchars($interest);
$interest = trim($interest);
$favourite_music = stripslashes($favourite_music);
$favourite_music = htmlspecialchars($favourite_music);
$favourite_music = trim($favourite_music);
$favourite_films = stripslashes($favourite_films);
$favourite_films = htmlspecialchars($favourite_films);
$favourite_films = trim($favourite_films);
$favourite_teleshows = stripslashes($favourite_teleshows);
$favourite_teleshows = htmlspecialchars($favourite_teleshows);
$favourite_teleshows = trim($favourite_teleshows);
$favourite_books = stripslashes($favourite_books);
$favourite_books = htmlspecialchars($favourite_books);
$favourite_books = trim($favourite_books);
$favourite_games = stripslashes($favourite_games);
$favourite_games = htmlspecialchars($favourite_games);
$favourite_games = trim($favourite_games);
$favourite_citations = stripslashes($favourite_citations);
$favourite_citations = htmlspecialchars($favourite_citations);
$favourite_citations = trim($favourite_citations);
$about_itself = stripslashes($about_itself);
$about_itself = htmlspecialchars($about_itself);
$about_itself = trim($about_itself);


$check = mysql_query("SELECT id FROM users WHERE login = '$login'");
$row = mysql_fetch_array($check);
if (!empty($row['id']))
{
exit ("<img src='../img/cancel.png' width='14' height='14'> Извините, введенный Вами логин уже зарегистрирован!<br>
<img src='../img/empty.png' width='14' height='14'> Введите другой логин!"
);
}


/* Если введенный логин не занят, то сохраняем логин и пароль! */
$save = mysql_query ("INSERT INTO users (login, password, name,sex, orientation, political_views, religious_sights, phone, email, icq, site, activity, interest, favourite_music, favourite_films, favourite_teleshows, favourite_books, favourite_games, favourite_citations, about_itself) VALUES ('$login', '$password', '$name', '$sex', '$orientation', '$political_views', '$religious_sights', '$phone', '$email', '$icq', '$site', '$activity', '$interest', '$favourite_music', '$favourite_films', '$favourite_teleshows', '$favourite_books', '$favourite_games', '$favourite_citations', '$about_itself')");

/* Проверяем есть ли ошибки */
if ($save == 'TRUE')
{echo "Вы успешно зарегистрированы!";
}
else {
echo "<img src='../img/cancel.png' width='14' height='14'> <b>Ошибка!</b><br>
<img src='../img/empty.png' width='14' height='14'> Вы не зарегистрированы!"
;
}

echo "</div>";


?>[color=red][/color]




Спустя 2 минуты, 17 секунд (20.05.2010 - 08:44) PiratXXX написал(а):
Извините, забыл, про md5, капчу знаю! Но пока не хочу добовлять, но кто знает хорошие статьи по капче, киньте ссылка!

Зараннее все СПАСИБО!

Спустя 35 минут, 47 секунд (20.05.2010 - 09:20) Basili4 написал(а):
1. Не используй include лучше include_once;
2. if (isset($_POST['login']) and $_POST['login']!='') {$login = $_POST['login'];} - так как то веренее будет.
3. И все обработки можно сделать до присваения $_POST значениям переменных в цикле.
4. И я как то не понимю накой присваивать $_POST - переменным. Лишние операции.
5. и что то мне кажется подозрительным последовательность $login = stripslashes($login);
$login = htmlspecialchars($login); stripslashes- вообще ни к чему. Ну а так вроде все.
А не скажу что удивило. Удивило обилее полей для регистации. Вы уверены что всю эту инфу нужно хранить именно в таблице с юзерами. и паролями. Уж по мне тут явно лучше сделать 2 таблы но может я и не прав.

Спустя 10 секунд (20.05.2010 - 09:20) HardWoman написал(а):

Спустя 1 час, 3 минуты, 8 секунд (20.05.2010 - 10:23) ApuktaChehov написал(а):
Цитата (Basili4 @ 20.05.2010 - 09:20)
1. Не используй include  лучше include_once;

В одной книге, автор так же советовал использовать include_once.
Что в принцепе является оправданным поступком только в двух случаях:
1) Защита от дурака
2) При разработке крупных проектов с участием большого количества программистов.

А в маленьких скриптах это бессмысленно. Почему?
include работает быстрее чем include_once, за счет того, что include не проверяет списки уже подключенных файлов.

Если вы сами пишете не слишком большое приложение, то используйте include и будьте немного внимательнее, и будет вам и нам всем счастие! laugh.gif


Далее:
$login = htmlspecialchars($login);

Зачем вы заменяете html теги? Вы же пишете в БД, а не выводите из нее. htmlspecialchars нужно использовать при выводе информации и БД.
К тому же у вас SQL инъекция возможна. Все данные необходимо обработать функцией mysql_real_escape_string().

Спустя 4 часа, 24 минуты, 55 секунд (20.05.2010 - 14:48) PiratXXX написал(а):
Basili4
Спасибо!
А теперь по пунктам:

1. разобрал посмотре и понял когда что использовать.

2. так же разобрался...

3. это значит поставиь

$login = stripslashes($login);
$login = htmlspecialchars($login);
$login = trim($login);
вот это вначале старницы? да? а какая разница, объясните пожалуйста, я новичек!

4. объсните пож. как лучше, а еще лучше приведите пример!

5. а почему подозрительно? честно говоря и сам не поня к чему, делал по примеру...

Буду очень благодарен если отпишитесь по моим вопросам!!!

P.S. Спасибо, что прокоментировали!

Спустя 4 минуты, 52 секунды (20.05.2010 - 14:53) Семён написал(а):
$login = stripslashes($login);
$login = htmlspecialchars($login);
$login = trim($login);


такие вещи можно упростить до:

$login = trim(htmlspecialchars(stripslashes($login)));

Спустя 1 минута, 2 секунды (20.05.2010 - 14:54) PiratXXX написал(а):
ApuktaChehov
Далее:
$login = htmlspecialchars($login);

Зачем вы заменяете html теги? Вы же пишете в БД, а не выводите из нее. htmlspecialchars нужно использовать при выводе информации и БД.
К тому же у вас SQL инъекция возможна. Все данные необходимо обработать функцией mysql_real_escape_string().

На счет SQL иньекции сейчас буду разбиратся! Спасибо!

А, такой вопрос, а вот если я на этойже странице буду ввыводить логин и пароль, тогда $login = htmlspecialchars($login); нужно. да? и потом данные будут выводится из БД, а раз вы пишите что это нужно если выводишь данные, то почемубы их сразу туда не записать так(с заменой html тегов)?

Огромное спасибо!!!

Спустя 1 минута, 26 секунд (20.05.2010 - 14:56) PiratXXX написал(а):
Семён
спасибо! понял! а как вы считаете $login = trim(htmlspecialchars(stripslashes($login))); что из этого нужно а что нет?

Спустя 7 минут, 14 секунд (20.05.2010 - 15:03) Семён написал(а):
Ну смотри:

1) trim не нужен потомучто представь, человек заходит на сайт, пытается зарегистрироваться вводит
Василий Петрович
, а на выходе получает
ВасилийПетрович
, я бы мягко говоря был бы недоволен таким сайтом и быстро покинул его. Зачем экранировать символы? Тебе бы просто регулярку на проверку логина по маске например:
if(!preg_match("/^[\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]+$/mu",$valid['value'])) {
$valid_cn_msg[]['cn'] = "Допустимы только буквы и цифры";
}


И забыть про html символы...

Спустя 54 секунды (20.05.2010 - 15:04) PiratXXX написал(а):
ApuktaChehov

и еще по поводу mysql_real_escape_string, этоныжно прописать
$login = mysql_real_escape_string($login); и так со всеми переменными, да?

Спустя 12 минут, 30 секунд (20.05.2010 - 15:16) PiratXXX написал(а):
Семён

спасибо, ядума что
trim
убирает пробелы в начале и в конце!!!
if(!preg_match("/^[\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]+$/mu",$valid['value'])) {
$valid_cn_msg[]['cn'] = "Допустимы только буквы и цифры";
}


вот это:
[\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]
вот это я так понял языки, да?
+$/mu
А что это?

Вместо valid ставится имя переменной, да? а что это
$valid_cn_msg[]['cn'] =
?

Извини за наверное глупые вопросы!!!!!!!!!!!!!

Спустя 1 минута, 34 секунды (20.05.2010 - 15:18) PiratXXX написал(а):
Покаж на моем примере и где его прописывать!

Спустя 3 минуты, 27 секунд (20.05.2010 - 15:21) Семён написал(а):
Это регулярное выражение. (применимо для строки состоящей только из цифр и букв) Если для тебя сложно воспользуйся более лёгким примерно так: [a-z0-9]

Вместо этого:
$valid_cn_msg[]['cn'] =


Напиши
echo "Неправильный формат логина";

Спустя 5 минут, 17 секунд (20.05.2010 - 15:27) Семён написал(а):
Вот пример конкретно для тебя:
$login = $_POST['login'];
if($login != '') {
if(!preg_match("/^[\p{Ll}\p{Lm}\p{Lo}\p{Lt}\p{Lu}\p{Nd}]+$/mu",$valid['value'])) {
unset ($login);
}
}

else { unset ($login); }


Все остальные операции с переменной $login можно убрать (экранирование и т.д.)

Спустя 30 секунд (20.05.2010 - 15:27) PiratXXX написал(а):
Семён

покажи на моем примере! и еще по поводу Василия петровича, это ты хорошо подметил, а как сделать чтоб пробел можно было ставить!!!???

Спустя 13 минут, 37 секунд (20.05.2010 - 15:41) Семён написал(а):
Прояви свои умственные способности!
Если для тебе вышестоящая регулярка не подходит вот другая более лёгкая
preg_match('/^[a-z0-9]+([_.- ][a-z0-9]+)?$/', $login)

Спустя 15 минут, 13 секунд (20.05.2010 - 15:56) ApuktaChehov написал(а):
PiratXXX
>>то почемубы их сразу туда не записать так(с заменой html тегов)?<<

Вот пример из мой практики: Я сделал так же, как вы считаете. В итоге, у меня в БД строка <script> превратилась в &lt;script&gt;. А после мне понадобилось разбить эту строку регулярным выражением символам <> и что делать? &lt; и &gt; - переводить обратно. Это самый простой пример, дальше хуже.

Семён, а в честь чего, trim пробелы в середине строки режет?

preg_match('/^[a-z0-9]+([_.- ][a-z0-9]+)?$/i', $login)

Надо флаг i добавить что бы к регистру символов не было притензий. Это первое.

Воторое, такая практика не слишком удачна, у пользователей разные имена, и если юзер не сможет зарегистрироваться под своим ником, он вообще не зарегестрируется. По этому лучше не уменьшать диапазон символов, а только ограничить длину логина. К тому же в этой регулярке не подойдут имена начинаюшиеся и кончающиеся на _-.

Спустя 1 час, 24 минуты, 46 секунд (20.05.2010 - 17:21) PiratXXX написал(а):
ApuktaChehov

Спасибо за советы! Осталось пару вопросов!
Из этого всего я извлек:

Убираем stripslashes , htmlspecialchars !!!

Оставляем trim , ставим защиту от sql инъекции таким образом

$login = mysql_real_escape_string($login);

ДА???

И последний вопрос: вот если логин и еще др. данные бадут выводится на этой странице (Вы успешно зарегистрированы!
Ваш логин: такой
Ваш пароль: такой)

какой нибудь умник сможет прописать какой-то код и это повредит что-то?
НУ ВООБЩЕМ РЕГИСТРАЦИЯ БОЛЕЕ МЕНИЕ ЗАЩИЩИНА???

Спустя 10 минут, 52 секунды (20.05.2010 - 17:32) ApuktaChehov написал(а):
Если ты выводишь логин на страницу, то при выводе, его и нужно обрабатывать htmlspecialchars. И вообще не важно откудо ты его выводишь. Обработал - вывел. А так все верно и регистрация более-менее защищена.

Можно еще сделать, что бы скрипт работал без зависимости от "волшебных ковычек". Я чуть позже напишу.

Спустя 27 минут, 51 секунда (20.05.2010 - 17:59) Семён написал(а):
Цитата (ApuktaChehov @ 20.05.2010 - 16:56)
PiratXXX
>>то почемубы их сразу туда не записать так(с заменой html тегов)?<<

Вот пример из мой практики: Я сделал так же, как вы считаете. В итоге, у меня в БД строка <script> превратилась в &lt;script&gt;. А после мне понадобилось разбить эту строку регулярным выражением символам <> и что делать? &lt; и &gt; - переводить обратно. Это самый простой пример, дальше хуже.

Семён, а в честь чего, trim пробелы в середине строки режет?

preg_match('/^[a-z0-9]+([_.- ][a-z0-9]+)?$/i', $login)

Надо флаг i добавить что бы к регистру символов не было притензий. Это первое.

Воторое, такая практика не слишком удачна, у пользователей разные имена, и если юзер не сможет зарегистрироваться под своим ником, он вообще не зарегестрируется. По этому лучше не уменьшать диапазон символов, а только ограничить длину логина. К тому же в этой регулярке не подойдут имена начинаюшиеся и кончающиеся на _-.

Регулярка просто взята с случайного сайта.
Я ручался, за ту что дал перед этим, но она ему видишь не подходит.
С trim переработался )))

Спустя 32 минуты, 15 секунд (20.05.2010 - 18:32) PiratXXX написал(а):
ОГО!!!
Проблема! при регистрации если логин введен на русском данные заносятся повторно!!! что это? и как с этим боротся?

А ели на англ. то все нормально!

Спустя 1 минута, 23 секунды (20.05.2010 - 18:33) ApuktaChehov написал(а):
Что значит заносятся повторно?

Спустя 1 минута (20.05.2010 - 18:34) PiratXXX написал(а):
А и еще данные введенные на русском в бд отоброжаются как ?????????

Спустя 2 минуты, 1 секунда (20.05.2010 - 18:36) ApuktaChehov написал(а):
Если вопросами, то вы не указали кодировку соединения с БД.

Что бы все работало, нобходимо, чтобы:
кодировка страницы, кодировка соедениения с БД, кодировка базы и ячеек были одинаковыми.

Спустя 1 минута, 10 секунд (20.05.2010 - 18:37) PiratXXX написал(а):
ApuktaChehov

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

Спустя 2 минуты, 1 секунда (20.05.2010 - 18:39) ApuktaChehov написал(а):
Нужно ставить защиту от F5.
Я щас домой, часа через 2 все напишу.

Спустя 2 минуты, 35 секунд (20.05.2010 - 18:42) PiratXXX написал(а):
ApuktaChehov
кодировка соеденения стоит mysql_set_charset('utf8'); так же?
кодировка страници в дримривере стоитже автоматом утф8, да?
а как кодироку бд сделать? но вроде я читал что оно поумолчанию стоит тоже утф8!

Спустя 1 минута, 32 секунды (20.05.2010 - 18:43) PiratXXX написал(а):
ApuktaChehov

ну хорошо! напишишь пожалуйста! буду ждать! спасибо за помощь!

давай! щасливого пути!!

Спустя 3 минуты, 42 секунды (20.05.2010 - 18:47) PiratXXX написал(а):
ApuktaChehov

я наше бока!!! данные заносятся повторно если я прописываю
mysql_set_charset('utf8');
! че это за бред?????

Спустя 1 час, 42 минуты, 47 секунд (20.05.2010 - 20:30) ApuktaChehov написал(а):
И так:
Данные повторно заносятся, потому как скрипт повторно запускается. Что бы этого избежать нужно сделать вот так, в конце скрипта, а точнее там, где у тебя выводится сообщение о удачной регистрации ставим:
header('Location: '.$_SERVER['PHP_SELF']);

Как это работает: После того, как авторизация прошла успешно, в место того, что бы вывести сообщение об успехе, выполняется код, который выше. Он подразумевается переадресацию на этот же скрипт. Таким образом F5 работать больше не будет.

Что бы сменить кодировку запроса, нужно выполнить следующую команду:
mysql_query("set CHARACTER SET utf8") or die (mysql_error());


А чем вы пользуетесь, для редактирования БД?

Спустя 42 минуты, 41 секунда (20.05.2010 - 21:13) twin написал(а):
Немножко не дотянул. RFC требует в location полного пути, с протоколом.
       header('location: http://'. $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']);

Спустя 16 минут, 44 секунды (20.05.2010 - 21:29) ApuktaChehov написал(а):
хм. У меня и так работало. Но я понял, исправлюсь cool.gif

Спустя 1 час, 5 минут, 6 секунд (20.05.2010 - 22:34) PiratXXX написал(а):
ApuktaChehov
Поставил как сказал! и теперь данные заносятся в бд вообще как-то странно! поле логин остается пустое!

Спустя 17 минут, 43 секунды (20.05.2010 - 22:52) ApuktaChehov написал(а):
Код показывай

Спустя 15 минут, 13 секунд (20.05.2010 - 23:07) PiratXXX написал(а):
ApuktaChehov

Все! УРА!!!!!!!!!!!!!!!!!!! biggrin.gif biggrin.gif biggrin.gif

оГРОМное приогромное спасибо!!! все заработало все хорошо!!! там у меня кодировка бд, таблици и полей была не та, выбрал utf8_unicode_ci, и через Notepad++ поменял кодировка файлов (а то дрим загонял, утром была утф8, вечером левая какая-то) прописал кодировку передачи данных!!! и все ок!!!

Последний вопрос: выбивает такую ошибку при регистрации!
Цитата
Notice: Undefined variable: name in D:\WebServer\www\site\input\save_user.php on line 43

Notice: Undefined variable: religious_sights in D:\WebServer\www\site\input\save_user.php on line 45

Notice: Undefined variable: phone in D:\WebServer\www\site\input\save_user.php on line 47

Notice: Undefined variable: email in D:\WebServer\www\site\input\save_user.php on line 49

Notice: Undefined variable: icq in D:\WebServer\www\site\input\save_user.php on line 51

Notice: Undefined variable: site in D:\WebServer\www\site\input\save_user.php on line 53

Notice: Undefined variable: activity in D:\WebServer\www\site\input\save_user.php on line 55

Notice: Undefined variable: interest in D:\WebServer\www\site\input\save_user.php on line 57

Notice: Undefined variable: favourite_music in D:\WebServer\www\site\input\save_user.php on line 59

Notice: Undefined variable: favourite_films in D:\WebServer\www\site\input\save_user.php on line 61

Notice: Undefined variable: favourite_teleshows in D:\WebServer\www\site\input\save_user.php on line 63

Notice: Undefined variable: favourite_books in D:\WebServer\www\site\input\save_user.php on line 65

Notice: Undefined variable: favourite_games in D:\WebServer\www\site\input\save_user.php on line 67

Notice: Undefined variable: favourite_citations in D:\WebServer\www\site\input\save_user.php on line 69

Notice: Undefined variable: about_itself in D:\WebServer\www\site\input\save_user.php on line 71

Notice: Undefined variable: political_views in D:\WebServer\www\site\input\save_user.php on line 84
Вы успешно зарегистрированы! ЙЙ


А ВОТ КОД:
<?php
/* Подключаем файл конфигурации */
include_once "../config.php";

echo "<div class='borderradius'>";
echo "<img src='../img/registration.png' width='14' height='14' alt='Регистрация'> <b>Регистрация</b><br>";

/* Заносим информацию введенну в поле, в переменную , если поле пустое, то уничтожаем переменную */
if (isset($_POST['login']) and $_POST['login']!='') {$login = $_POST['login'];}
if (isset($_POST['password']) and $_POST['password']!='') {$password = $_POST['password'];}
if (isset($_POST['name']) and $_POST['name']!='') {$name = $_POST['name'];}
if (isset($_POST['sex']) and $_POST['sex']!='') {$sex = $_POST['sex'];}
if (isset($_POST['orientation']) and $_POST['orientation']!='') {$orientation = $_POST['orientation'];}
if (isset($_POST['political_views']) and $_POST['political_views']!='') {$political_views = $_POST['political_views'];}
if (isset($_POST['religious_sights']) and $_POST['religious_sights']!='') {$religious_sights = $_POST['religious_sights'];}
if (isset($_POST['phone']) and $_POST['phone']!='') {$phone = $_POST['phone'];}
if (isset($_POST['email']) and $_POST['email']!='') {$email = $_POST['email'];}
if (isset($_POST['icq']) and $_POST['icq']!='') {$icq = $_POST['icq'];}
if (isset($_POST['site']) and $_POST['site']!='') {$site = $_POST['site'];}
if (isset($_POST['activity']) and $_POST['activity']!='') {$activity = $_POST['activity'];}
if (isset($_POST['interest']) and $_POST['interest']!='') {$interest = $_POST['interest'];}
if (isset($_POST['favourite_music']) and $_POST['favourite_music']!='') {$favourite_music = $_POST['favourite_music'];}
if (isset($_POST['favourite_films']) and $_POST['favourite_films']!='') {$favourite_films = $_POST['favourite_films'];}
if (isset($_POST['favourite_teleshows']) and $_POST['favourite_teleshows']!='') {$favourite_teleshows = $_POST['favourite_teleshows'];}
if (isset($_POST['favourite_books']) and $_POST['favourite_books']!='') {$favourite_books = $_POST['favourite_books'];}
if (isset($_POST['favourite_games']) and $_POST['favourite_games']!='') {$favourite_games = $_POST['favourite_games'];}
if (isset($_POST['favourite_citations']) and $_POST['favourite_citations']!='') {$favourite_citations = $_POST['favourite_citations'];}
if (isset($_POST['about_itself']) and $_POST['about_itself']!='') {$about_itself = $_POST['about_itself'];}


if (empty($login) or empty($password))
{
exit ("<img src='../img/cancel.png' width='14' height='14'> Вы ввели не всю обязательную информацию для регистрации!<br>
<img src='../img/empty.png' width='14' height='14'> Пожалуйста, вернитесь <b><a href='registration.php'>назад</a></b> и заполните обязательную информацию!"
);
}
/* Убираем пробелы в начале и в конце, защищаемся от SQL инъекции */
$login = trim(mysql_real_escape_string($login));

$password = trim(mysql_real_escape_string($password));

$name = trim(mysql_real_escape_string($name));

$religious_sights = trim(mysql_real_escape_string($religious_sights));

$phone = trim(mysql_real_escape_string($phone));

$email = trim(mysql_real_escape_string($email));

$icq = trim(mysql_real_escape_string($icq));

$site = trim(mysql_real_escape_string($site));

$activity = trim(mysql_real_escape_string($activity));

$interest = trim(mysql_real_escape_string($interest));

$favourite_music = trim(mysql_real_escape_string($favourite_music));

$favourite_films = trim(mysql_real_escape_string($favourite_films));

$favourite_teleshows = trim(mysql_real_escape_string($favourite_teleshows));

$favourite_books = trim(mysql_real_escape_string($favourite_books));

$favourite_games = trim(mysql_real_escape_string($favourite_games));

$favourite_citations = trim(mysql_real_escape_string($favourite_citations));

$about_itself = trim(mysql_real_escape_string($about_itself));

/* Проверяем зарегистрирован ли пользователь с данным логином, если "да", тогда просим пользователя выбрать другой логин */
$check = mysql_query("SELECT id FROM users WHERE login = '$login'");
$row = mysql_fetch_array($check);
if (!empty($row['id']))
{
exit ("<img src='../img/cancel.png' width='14' height='14'> Извините, введенный Вами логин уже зарегистрирован!<br>
<img src='../img/empty.png' width='14' height='14'> Введите другой логин!"
);
}


/* Если введенный логин не занят, то сохраняем логин и пароль, и др. данные */
$save = mysql_query ("INSERT INTO users (login, password, name,sex, orientation, political_views, religious_sights, phone, email, icq, site, activity, interest, favourite_music, favourite_films, favourite_teleshows, favourite_books, favourite_games, favourite_citations, about_itself) VALUES ('$login', '$password', '$name', '$sex', '$orientation', '$political_views', '$religious_sights', '$phone', '$email', '$icq', '$site', '$activity', '$interest', '$favourite_music', '$favourite_films', '$favourite_teleshows', '$favourite_books', '$favourite_games', '$favourite_citations', '$about_itself')");

/* Проверяем есть ли ошибки */
if ($save == 'TRUE')
{echo "Вы успешно зарегистрированы! $login";
}
else {
echo "<img src='../img/cancel.png' width='14' height='14'> <b>Ошибка!</b><br>
<img src='../img/empty.png' width='14' height='14'> Вы не зарегистрированы!"
;
}

echo "</div>";

?>



эТО НАДО ПОСТАВИТЬ КАК ЕЕТАМ ИНДЕКСАЦИЮ ОШИБОК (вылетело как называется!), да!!!

буду шифровать данные, и еще может что-то сделаю, выложу сдесь же посмотрите!!???


Все ОГРОМНОЕ СПАСИБО!!!

Спустя 54 секунды (20.05.2010 - 23:08) PiratXXX написал(а):
ApuktaChehov

ОГРОМНОЕ СПАСИБО!!!

Спустя 7 минут, 59 секунд (20.05.2010 - 23:16) ApuktaChehov написал(а):
Такое большое? Куда мне столько wink.gif

А сообщения у вас эти от того, что вы явно не указываете переменные. Это можно сделать вот такой конструкцией:
$user_name = isset($user_name)? $user_name : NULL;


Которая обозначает:
Если $user_name существует, то он равен самому себе, т.е. мы его не трогаем. А вот если его вдруг нет, тогда мы говорим что он равен NULL.
Тогда ошибок этих больше не будет.

В принципе эти ошибки - не ошибки, скрипт и так работает корректно. Но их наличие - плохой тон.

Спустя 14 часов, 23 минуты, 25 секунд (21.05.2010 - 13:40) PiratXXX написал(а):
ApuktaChehov

День добрый!!!

Такой вопросик: как занести в бд день рождения пользователя? т.е. надо сделать три формы (день, месяц, год), обработать эти данные, ну а в бд их как в разные ячейки заносить???

Спустя 8 минут, 56 секунд (21.05.2010 - 13:49) ApuktaChehov написал(а):
Добрый. Можно соеденить их через точку, или тере. И записать единой датой в однй ячейку.

25.04.1985 - три поля для ввода, одно поле в БД.

Позже, как у меня будет время и у Вас будет желания я могу показать как оптимизировать код. Можно уменьшить кол-во кода и сделать его более грамотным.

Спустя 48 минут, 56 секунд (21.05.2010 - 14:38) PiratXXX написал(а):
ApuktaChehov

все сделал!
вот код:
if (isset($_POST['date']) and $_POST['date']!='') {$date = $_POST['date'];}
if (isset($_POST['month']) and $_POST['month']!='') {$month = $_POST['month'];}
if (isset($_POST['year']) and $_POST['year']!='') {$year = $_POST['year'];}
$date = isset($date)? $date : NULL;
$month = isset($month)? $month : NULL;
$year = isset($year)? $year : NULL;
$date_of_birth = "$date, $month, $year";


ну дальше $date_of_birth заносится в бд! НО есть проблема, месяц в бд не заносится в бд получается так: 19, ,1878!

в форме месяц у меня не в числовом выражении, а написан!

заранне спасибо!!!!!!

Спустя 19 часов, 32 секунды (22.05.2010 - 09:38) ApuktaChehov написал(а):
$date_of_birth = "$date, $month, $year"

тут не корректно
Если надо через запятую, то так:
$date_of_birth = $date .','. $month .','. $year;

Точка означает, что переменные следуют одна за другой, в том порядке, в котором мы их расположили в коде. А между ними мы еще символ запятую вставляем.

Вы неправильно поняли или совсем не поняли смысл этого:
$date = isset($date)? $date : NULL;

Она в любом случае определит переменную $date. Т.е. после ее работы $date будет существовать по любому.

Вот так можно корректно обработать переменную:
//Тут $date либо ровна тому, что прислали из формы, либо NULL, но она по любому есть.
$date = isset($_POST['date'])? $_POST['date'] : NULL;


//А тут мы проверяем ее на пустоту. Ведь NULL тоже пусто.
if (empty($date))
echo('Что то случилось!');


А то, что у вас пропадает месяц, нужно убедиться что он есть перед тем, как вы его пытаетесь в БД записать. Прямо перед записью попробуйте вывести его на экран с помощь echo().
Если месяца вдруг не будет, можно двигаясь в верх по коду, выводить на экран этот месяц до тех пор, пока он не появится. Так я обычно ошибки ловлю. Если что должно быть, а этого нет.

Спустя 2 дня, 7 часов, 53 минуты, 43 секунды (24.05.2010 - 17:32) PiratXXX написал(а):
ApuktaChehov

добрый день!!!

т.е. получается что
$date = isset($_POST['date'])? $_POST['date'] : NULL;

это одно и тоже что
if (isset($_POST['date']) and $_POST['date']!='') {$date = $_POST['date'];}
и
$date = isset($date)? $date : NULL;
! да?

Спустя 15 часов, 56 минут, 17 секунд (25.05.2010 - 09:28) ApuktaChehov написал(а):
нет. Я же выше написал, что вот это:
$date = isset($_POST['date'])? $_POST['date'] : NULL;

устанавливает переменную $date как NULL, если она не существует или же
она будет ровна тому, что пришло из формы.

А вот это:
if (empty($date))      
echo('Что то случилось!');


Проверяет не пустое ли поле. В итоге получается, если форма не пришла, то $date будет равен NULL, а если форма пришла, но юзер не заполнил поле, то конструкция empty($date)) проверит поле на пустоту и вернут отрицательный ответ - поле пусто.

ИТОГ: Если юзер не отпраил форму мы это форму ему предоставим, ориентируясь на первый код, т.е. если переменная $date = NULL.
А если юзер отправил форму, но не заполнил поле, то мы ему скажем, что он не заполнил поле, ориентируясь на второй код, т.е. empty($date). Вот и все.

А ваша конструкиця:
if (isset($_POST['date']) and $_POST['date']!='') {$date = $_POST['date'];}

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

Спустя 13 часов, 37 минут, 18 секунд (25.05.2010 - 23:05) PiratXXX написал(а):
ApuktaChehov

извините до меня туго доходит(((

приведите пожалуйста полный! пример обработки данных полученных изи формы!


и еще одна прозьба не могли бы вы подсказать хорошую статью или урок по капче подоходчевей, и про шифровку паролей md5.....................

Спустя 37 минут, 17 секунд (25.05.2010 - 23:43) Ice написал(а):
Привет, Пират! smile.gif Будем знакомы, я Дэн:)

На мой взгляд, да и как в большинстве случаев показывает практика, для корректной обработки всех данных, пришедших, скажем методом POST,
достаточно всего лишь удостовериться в этом самом методе POST:

if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$date = $_POST['date'];
}


Спустя 8 часов, 34 минуты, 20 секунд (26.05.2010 - 08:17) Basili4 написал(а):
Ice
Чето я не понял твой пост а значения передаваемые в методом пост проверять не надо
и спрашивается зачем проверять метод которым передавались переменные если достаточно проверить сами передаваемые переменные а другие методы забить. Я могу предположить что проверка может быть осуществлена только если одни и теже переменнные передаютя различным образом. Но в любом случае надо проверять их значения

Спустя 53 минуты, 43 секунды (26.05.2010 - 09:11) ApuktaChehov написал(а):
PiratXXX в асю стучи мне.
5шесть4 ноль46 27пять


_____________
http://flibro.com/
Быстрый ответ:

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