<?php
session_start();
header("Content-type:text/html; charset=utf-8");
echo '<link rel="stylesheet" type="text/css" href="style.css">';
?>
<div id="conteiner">
<div class="loform">
<form method="post" action="insert.php">
login
<input type="text" name="login">
pass
<input type="text" name="pass">
<input type="text" name="email">
<?php
$a = rand(1,9);
$b = rand(1,9);
$_SESSION['res'] = $a + $b;
echo '<h2>'.$a.'+'.$b.'<br></h2>';
echo 'Введите ответ';
?>
<input type="text" name="res">
<input type="submit" name="submit" value="Регистрация">
</form>
<a href="enter.php"><b>У меня уже есть рега</b></a>
</div>
</div>
А вот файл insert.php
<?php
session_start();
header("Content-type:text/html; charset=utf-8");
error_reporting(E_ALL);
include './db.php';
if(isset($_POST['submit']))
{
if(empty($_POST['login'])) exit('Не заполнено поле логина');
if(empty($_POST['pass'])) exit('Не заполнено поле пароля');
if(empty($_POST['email'])) exit('Не заполнено поле емайла');
if(empty($_POST['res'])) exit('Не введен ответ');
else
{
$login = mysql_real_escape_string($_POST['login']);
$pass = mysql_real_escape_string($_POST['pass']);
$email = mysql_real_escape_string($_POST['email']);
$res = mysql_real_escape_string($_POST['res']);
$query = "SELECT `id` FROM `users`
WHERE `login`='{$login}'
";
$sql = mysql_query($query) or die (mysql_error());
if(mysql_num_rows($sql)>0)
exit('Такой логин к сожалению занят');
else
if($res != $_SESSION['res'])
echo 'Не верно веден ответ';
else
if(!preg_match('/^[0-9a-z]{3,20}$/i',$login))
echo 'Не верно задан логин';
else
if(!preg_match('/^[a-z0-9]{8,20}$/i',$pass))
echo 'Пароль должен состоят из латинских букв от 8 до 20 символов';
else
if(!preg_match('/^[-0-9a-z_.]+@[-0-9a-z^.]+.[a-z]{2,4}$/i',$email))
echo 'email введен не верно';
else
$query = "INSERT INTO users(login , pass , email )
VALUES ('$login', '".md5($pass)."', '$email')";
$sql1 = mysql_query($query) or die (mysql_error());
if($sql1 == true)
echo 'все прошо удачно <a href="enter.php"><b>Войти на сайт</b></a>';
else
echo 'все фигово';
}
}
?>
Скажите пожалуйста на этой стаде у меня все нормально, или же нужно было писать не так а по другому ?
Спустя 10 минут (7.03.2012 - 19:15) Ser18 написал(а):
Так со всеми
И удалить ХТМЛ теги, ну или хтя бы тег <script type="javascript"></script>
trim($_POST['login']);
if(empty($_POST['login'])) exit('Не заполнено поле логина');
И удалить ХТМЛ теги, ну или хтя бы тег <script type="javascript"></script>
Спустя 12 минут, 2 секунды (7.03.2012 - 19:27) Visman написал(а):
Ser18, что за хитрый план в коде из твоего сообщения?
Спустя 3 минуты, 54 секунды (7.03.2012 - 19:31) beginner95 написал(а):
Цитата (Ser18 @ 7.03.2012 - 16:15) |
Так со всемиtrim($_POST['login']); И удалить ХТМЛ теги, ну или хтя бы тег <script type="javascript"></script> |
$login = mysql_real_escape_string(trim($_POST['login']));
$pass = mysql_real_escape_string(trim($_POST['pass']));
$email = mysql_real_escape_string(trim($_POST['email']));
Извините это я просто забыл :(
но знал что нужно удалять пробелы :)
Спустя 4 минуты, 22 секунды (7.03.2012 - 19:35) Visman написал(а):
После этого блока
else и внешнии {} можно не писать, так как если хотя бы одно условие выполнится, то код дальше выполняться не будет.
if(empty($_POST['login'])) exit('Не заполнено поле логина');
if(empty($_POST['pass'])) exit('Не заполнено поле пароля');
if(empty($_POST['email'])) exit('Не заполнено поле емайла');
if(empty($_POST['res'])) exit('Не введен ответ');
else и внешнии {} можно не писать, так как если хотя бы одно условие выполнится, то код дальше выполняться не будет.
Спустя 3 минуты, 30 секунд (7.03.2012 - 19:39) Ser18 написал(а):
Прошу прощения на счет тегов, Я что то на регулярные выражения не обратил внимание
Спустя 17 секунд (7.03.2012 - 19:39) johniek_comp написал(а):
if(empty($_POST['login'])) exit('Не заполнено поле логина');
if(empty($_POST['pass'])) exit('Не заполнено поле пароля');
if(empty($_POST['email'])) exit('Не заполнено поле емайла');
if(empty($_POST['res'])) exit('Не введен ответ');
фу....
if( ! isset($_POST['login'],$_POST['pass'],$_POST['email'],$_POST['res']))
echo 'что-то не так';
найс...
Спустя 59 секунд (7.03.2012 - 19:40) m4a1fox написал(а):
Я наверно один не пользуюсь exit() для прерывания работы скрипта?
Спустя 47 секунд (7.03.2012 - 19:41) Visman написал(а):
johniek_comp, что фу-то? Человек для каждой ошибки выводит свой ответ, а не ответ типа "Где-то произошла ошибка, берите микроскоп и ищите ее!"
Спустя 1 минута, 6 секунд (7.03.2012 - 19:42) m4a1fox написал(а):
johniek_comp
Цитата |
if( ! isset($_POST['login'],$_POST['pass'],$_POST['email'],$_POST['res'])) echo 'что-то не так'; |
Ага.... А как ты поймешь какое поле не заполнено? А? Если тебе надо уточнить, что бы юзеру выдалось сообщение: "Вы не заполнили поле пароль".
P.S. Черт Visman опередил уже
Спустя 3 минуты, 4 секунды (7.03.2012 - 19:45) johniek_comp написал(а):
m4a1fox
Цитата |
Я наверно один не пользуюсь exit() для прерывания работы скрипта? |
нет! ты не один! держись брат!
Цитата |
Если тебе надо уточнить, что бы юзерц выдалось сообщение: "Вы не заполнили поле пароль". |
js для этого существует, имхо php не для таких банальных целей
Спустя 9 секунд (7.03.2012 - 19:45) Ser18 написал(а):
Я тоже не прерываю, просто ставлю переадресацию обратно, в гете код ошибки, мол пользователь с таким именем уже существует или что то другое
Спустя 2 минуты, 9 секунд (7.03.2012 - 19:47) Visman написал(а):
Цитата (johniek_comp @ 8.03.2012 - 00:45) |
js для этого существует, имхо php не для таких банальных целей |
js может быть отключен или форму заполняет бот, как он узнает, где допустил ошибку?
Спустя 1 минута, 19 секунд (7.03.2012 - 19:49) beginner95 написал(а):
Цитата (Visman @ 7.03.2012 - 16:35) |
После этого блокаif(empty($_POST['login'])) exit('Не заполнено поле логина'); else и внешнии {} можно не писать, так как если хотя бы одно условие выполнится, то код дальше выполняться не будет. |
А тогда как я узнаю на каком именно поле допустили ошибку ? если не писать else и проверять каждое поле на соответствие ?
Спустя 1 минута, 27 секунд (7.03.2012 - 19:50) m4a1fox написал(а):
johniek_comp
Цитата |
js для этого существует, имхо php не для таких банальных целей |
Я отрубаю JS. Что теперь ты будешь делать?
Спустя 1 минута, 27 секунд (7.03.2012 - 19:52) beginner95 написал(а):
Ну ребята значит моя первая форма регистрации вполне рабочая и можно применять ?
Спустя 1 минута, 41 секунда (7.03.2012 - 19:53) Ser18 написал(а):
Цитата (m4a1fox @ 7.03.2012 - 19:50) | ||
johniek_comp
Я отрубаю JS. Что теперь ты будешь делать? |
Тогда вам такой ответ "Где-то произошла ошибка" и пустую форму
Спустя 1 минута, 37 секунд (7.03.2012 - 19:55) johniek_comp написал(а):
m4a1fox
Visman тебя опять опередил :) А если у пользователя нету интернета что делать? идти ему его подключать?
ТС-су, учись писать код "правильно" читабельно
Visman тебя опять опередил :) А если у пользователя нету интернета что делать? идти ему его подключать?
ТС-су, учись писать код "правильно" читабельно
Свернутый текст
<?php
session_start();
header("Content-type:text/html; charset=utf-8");
error_reporting(E_ALL);
include './db.php';
if(isset($_POST['submit']))
{
if(empty($_POST['login']))
{
exit('Не заполнено поле логина');
}
if(empty($_POST['pass']))
{
exit('Не заполнено поле пароля');
}
if(empty($_POST['email']))
{
exit('Не заполнено поле емайла');
}
if(empty($_POST['res']))
{
exit('Не введен ответ');
}
else
{
$login = mysql_real_escape_string($_POST['login']);
$pass = mysql_real_escape_string($_POST['pass']);
$email = mysql_real_escape_string($_POST['email']);
$res = mysql_real_escape_string($_POST['res']);
$query = "SELECT `id` FROM `users`
WHERE `login`='{$login}'
";
$sql = mysql_query($query) or die(mysql_error());
if(mysql_num_rows($sql) > 0)
{
exit('Такой логин к сожалению занят');
}
else
if($res != $_SESSION['res'])
{
echo 'Не верно веден ответ';
}
else
if(!preg_match('/^[0-9a-z]{3,20}$/i', $login))
{
echo 'Не верно задан логин';
}
else
if(!preg_match('/^[a-z0-9]{8,20}$/i', $pass))
{
echo 'Пароль должен состоят из латинских букв от 8 до 20 символов';
}
else
if(!preg_match('/^[-0-9a-z_.]+@[-0-9a-z^.]+.[a-z]{2,4}$/i', $email))
{
echo 'email введен не верно';
}
else
{
$query = "INSERT INTO users(login , pass , email )
VALUES ('$login', '".md5($pass)."', '$email')";
}
$sql1 = mysql_query($query) or die(mysql_error());
if($sql1 == true)
{
echo 'все прошо удачно <a href="enter.php"><b>Войти на сайт</b></a>';
}
else
{
echo 'все фигово';
}
}
}
?>
Спустя 1 минута, 40 секунд (7.03.2012 - 19:57) Visman написал(а):
Цитата (beginner95 @ 8.03.2012 - 00:49) |
А тогда как я узнаю на каком именно поле допустили ошибку ? если не писать else и проверять каждое поле на соответствие ? |
esle в твоем случае не нужен, так как код в нем будет выполнен только тогда, когда ни одно сообщение об ошибке не будет выведено на экран из этих 4х условий.
Тем более этот else по твоей записи относится только к четвертому if, а не ко всем четырем.
Спустя 53 секунды (7.03.2012 - 19:57) Visman написал(а):
johniek_comp, аналогичная ошибка с else к четвертому условию
Спустя 2 минуты, 46 секунд (7.03.2012 - 20:00) johniek_comp написал(а):
Visman
Чего прицепился как пьяный до радио?
Я код через твиновую штуку прогнал...
Чего прицепился как пьяный до радио?
Я код через твиновую штуку прогнал...
Спустя 1 минута, 58 секунд (7.03.2012 - 20:02) beginner95 написал(а):
Visman А что если else для 4 условия то это ошибка ведь если все условия пройдут только после этого будет работать else мне казалось все правильно и как же по другому все таки сделать ?
Спустя 1 минута, 27 секунд (7.03.2012 - 20:04) Ser18 написал(а):
Нету проверки Существует ли уже такой пользователь
Спустя 2 минуты, 8 секунд (7.03.2012 - 20:06) Visman написал(а):
beginner95, использовать ты его можешь как использовал, но как я выше написал оно там вообще ненужно по логике работы скрипта.
Цитата (johniek_comp @ 8.03.2012 - 01:00) |
Я код через твиновую штуку прогнал... |
Первый раз слышу о такой штуке
Спустя 3 минуты, 53 секунды (7.03.2012 - 20:10) beginner95 написал(а):
Цитата (Ser18 @ 7.03.2012 - 17:04) |
Нету проверки Существует ли уже такой пользователь |
$query = "SELECT `id` FROM `users`
WHERE `login`='{$login}'
";
$sql = mysql_query($query) or die(mysql_error());
if(mysql_num_rows($sql) > 0)
{
exit('Такой логин к сожалению занят');
}
А что это по вашему ? :)
Спустя 2 минуты, 23 секунды (7.03.2012 - 20:12) johniek_comp написал(а):
Visman
ТЫЦ
ТЫЦ
Спустя 1 минута, 49 секунд (7.03.2012 - 20:14) Visman написал(а):
johniek_comp, ясно.
beginner95, может быть следовало еще и уникальность email проверять?
beginner95, может быть следовало еще и уникальность email проверять?
Спустя 3 минуты, 56 секунд (7.03.2012 - 20:18) beginner95 написал(а):
Visman
Чтобы один и тот же емал не водили 2 и более раз ?
Чтобы один и тот же емал не водили 2 и более раз ?
Спустя 2 минуты, 18 секунд (7.03.2012 - 20:20) Visman написал(а):
Цитата (beginner95 @ 8.03.2012 - 01:18) |
Чтобы один и тот же емал не водили 2 и более раз ? |
Да.
Спустя 8 минут, 40 секунд (7.03.2012 - 20:29) beginner95 написал(а):
Visman
Не мог бы подсказать как это сделать вот тут
как то так возможно ли это ? я еще не столь силен в php :(
Не мог бы подсказать как это сделать вот тут
$query = "SELECT `id` FROM `users`
WHERE `login`='{$login}' and `email` = '{$mail}'
";
как то так возможно ли это ? я еще не столь силен в php :(
Спустя 3 минуты, 36 секунд (7.03.2012 - 20:32) Visman написал(а):
beginner95, вместо and ставим or, но тогда ответ юзеру будет Такой логин или email уже используется.
Спустя 5 минут, 24 секунды (7.03.2012 - 20:38) beginner95 написал(а):
Visman Спасибо большое теперь более понято
_____________
Лучший хостинг