[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Регистрация на php
beginner95
Форма регистрации

<?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">
E-mail
<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 написал(а):
Так со всеми
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']);
f(empty($_POST['login'])) exit('Не заполнено поле логина');


И удалить ХТМЛ теги, ну или хтя бы тег <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 написал(а):
После этого блока
		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, что фу-то? Человек для каждой ошибки выводит свой ответ, а не ответ типа "Где-то произошла ошибка, берите микроскоп и ищите ее!" laugh.gif


Спустя 1 минута, 6 секунд (7.03.2012 - 19:42) m4a1fox написал(а):
johniek_comp
Цитата
if( ! isset($_POST['login'],$_POST['pass'],$_POST['email'],$_POST['res']))
    echo 'что-то не так';

Ага.... smile.gif А как ты поймешь какое поле не заполнено? А? Если тебе надо уточнить, что бы юзеру выдалось сообщение: "Вы не заполнили поле пароль".

P.S. Черт Visman опередил уже smile.gif

Спустя 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 может быть отключен или форму заполняет бот, как он узнает, где допустил ошибку? biggrin.gif

Спустя 1 минута, 19 секунд (7.03.2012 - 19:49) beginner95 написал(а):
Цитата (Visman @ 7.03.2012 - 16:35)
После этого блока
  if(empty($_POST['login'])) exit('Не заполнено поле логина');
  if(empty($_POST['pass'])) exit('Не заполнено поле пароля');
  if(empty($_POST['email'])) exit('Не заполнено поле емайла');
  if(empty($_POST['res'])) exit('Не введен ответ');

else и внешнии {} можно не писать, так как если хотя бы одно условие выполнится, то код дальше выполняться не будет.

А тогда как я узнаю на каком именно поле допустили ошибку ? если не писать else и проверять каждое поле на соответствие ?

Спустя 1 минута, 27 секунд (7.03.2012 - 19:50) m4a1fox написал(а):
johniek_comp
Цитата
js для этого существует, имхо php не для таких банальных целей

Я отрубаю JS. Что теперь ты будешь делать?

Спустя 1 минута, 27 секунд (7.03.2012 - 19:52) beginner95 написал(а):
Ну ребята значит моя первая форма регистрации вполне рабочая и можно применять ? smile.gif

Спустя 1 минута, 41 секунда (7.03.2012 - 19:53) Ser18 написал(а):
Цитата (m4a1fox @ 7.03.2012 - 19:50)
johniek_comp
Цитата
js для этого существует, имхо php не для таких банальных целей

Я отрубаю JS. Что теперь ты будешь делать?

Тогда вам такой ответ "Где-то произошла ошибка" и пустую форму

Спустя 1 минута, 37 секунд (7.03.2012 - 19:55) johniek_comp написал(а):
m4a1fox
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 к четвертому условию tongue.gif

Спустя 2 минуты, 46 секунд (7.03.2012 - 20:00) johniek_comp написал(а):
Visman
Чего прицепился как пьяный до радио? mad.gif
Я код через твиновую штуку прогнал...

Спустя 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)
Я код через твиновую штуку прогнал...

Первый раз слышу о такой штуке biggrin.gif

Спустя 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 проверять?

Спустя 3 минуты, 56 секунд (7.03.2012 - 20:18) beginner95 написал(а):
Visman

Чтобы один и тот же емал не водили 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

Не мог бы подсказать как это сделать вот тут


$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 Спасибо большое теперь более понято smile.gif


_____________
Лучший хостинг
Быстрый ответ:

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