[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как сделать поле необязательное для заполнения?
philcrosoft
Привет народ! начал изучать PHP
делаю небольшую регистрацию PHP + MySQL

использую такой код:

<?
include_once("connect.php");
if (isset($_POST['submit']))
{
if(empty($_POST['login']))
{
echo 'Вы не ввели логин';
}
elseif(empty($_POST['password']))
{
echo 'Вы не ввели пароль';
}
elseif(empty($_POST['password2']))
{
echo 'Вы не ввели подтверждение пароля';
}
elseif($_POST['password'] != $_POST['password2'])
{
echo 'Введенные пароли не совпадают';
}
elseif(empty($_POST['email']))
{
echo 'Вы не ввели E-mail';
}
elseif(empty($_POST['email2']))
{
echo 'Вы не ввели подверждение e-mail';
}
elseif($_POST['email'] != $_POST['email2'])
{
echo 'Ваш e-mail не совпадает';
}
else
{
$login = $_POST['login'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$email = $_POST['email'];
$email2 = $_POST['email2'];

$query = "SELECT `id`
FROM `users`
WHERE `login`='
{$login}'";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) > 0)
{
echo 'Такой логин уже существует';
}

else
{
$query = "INSERT INTO users(login , password , email ,

$query = "SELECT `id`
FROM `users`
WHERE `login`
='{$login}'";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows(
$sql) > 0)
{
echo 'Такой логин уже существует';
}

else
{

$query = "INSERT INTO users(login , password , email )
VALUES ('$login', '$password', '$email')";
$result = mysql_query($query) or die(mysql_error());;
echo 'Регистрация успешно прошла';
}
}
}
?>


У меня два вопроса:
хочу вставить поле, скажем "Additional Info" и чтобы оно не было обязательным для заполнения, если заполненное, то соотвествено данные заносятся в базу, если нет, то в базе данных пустое значение!

Вопрос второй:
как грамотно прописать, чтобы была проверка по базе данных e-mail

Спасибо



Спустя 17 минут, 59 секунд (7.10.2010 - 19:27) Игорь_Vasinsky написал(а):
просто не проверяй данные из этого поля в обработчике, и пропиши - если null -то null

Спустя 1 минута, 18 секунд (7.10.2010 - 19:28) Игорь_Vasinsky написал(а):
делай запрос к базе - и если совпадение найдено - то выдавай предупреждение о наличии этого майла

Спустя 10 минут, 7 секунд (7.10.2010 - 19:38) philcrosoft написал(а):
а кодом можно помочь! а то я ток учусь )))

Спустя 13 минут, 57 секунд (7.10.2010 - 19:52) Игорь_Vasinsky написал(а):
что именно кодом?

Спустя 1 минута, 37 секунд (7.10.2010 - 19:54) Игорь_Vasinsky написал(а):
а с БД MySQL ты умеешь?

Спустя 29 секунд (7.10.2010 - 19:54) Xpund написал(а):
      
$additional_info = mysql_real_escape_string($_POST['additional_info']);
$query = "SELECT `id`
FROM `users`
WHERE `AdditionalInfo`='
{$additional_info}'";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) > 0)
{
echo 'Такой additional_info уже существует';
}

Ну скорее всего так

Спустя 25 минут, 12 секунд (7.10.2010 - 20:19) philcrosoft написал(а):
у меня там проверка ещё и логина есть
вставляю так как вы подсказали

  $query = "SELECT `id`
FROM `users`
WHERE `login`='{$login}'";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) > 0)
{
echo 'логин есть такой';
}


$query = "SELECT `id`
FROM `users`
WHERE `email`='{$email}'";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) > 0)
{
echo 'email есть такой';
}

после регистрации пишет что логин есть такой, и регистрация прошла успешно )))) брррр что ж делать?

Спустя 46 минут, 49 секунд (7.10.2010 - 21:06) Игорь_Vasinsky написал(а):
ага а в email java script, тогда уж опишите как обезопаситься...

Спустя 19 минут, 24 секунды (7.10.2010 - 21:26) philcrosoft написал(а):
не вы всё такие скажите где ошибка то? у меня проверяет наличие логина и e-mail и пишет что логин есть такой, а регистрация проходит всё равно брррр

Спустя 2 минуты, 1 секунда (7.10.2010 - 21:28) arvitaly написал(а):
Покажите весь код

Спустя 10 минут, 50 секунд (7.10.2010 - 21:38) philcrosoft написал(а):
<?
include_once("connect.php");
if (isset($_POST['submit']))
{
if(empty($_POST['login']))
{
echo 'Вы не ввели логин';
}
elseif(empty($_POST['password']))
{
echo 'Вы не ввели пароль';
}
elseif(empty($_POST['password2']))
{
echo 'Вы не ввели подтверждение пароля';
}
elseif($_POST['password'] != $_POST['password2'])
{
echo 'Введенные пароли не совпадают';
}
elseif(empty($_POST['email']))
{
echo 'Вы не ввели E-mail';
}
elseif(empty($_POST['email2']))
{
echo 'Вы не ввели подверждение e-mail';
}
elseif($_POST['email'] != $_POST['email2'])
{
echo 'Ваш e-mail не совпадает';
}

else
{
$login = $_POST['login'];
$password = $_POST['password'];
$password2 = $_POST['password2'];
$email = $_POST['email'];
$email2 = $_POST['email2'];

$query = "SELECT `id`
FROM `users`
WHERE `login`='
{$login}'";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) > 0)

$query = "SELECT `id`
FROM `users`
WHERE `email`='
{$email}'";
$sql = mysql_query($query) or die(mysql_error());
if (mysql_num_rows($sql) > 0)


{
echo 'Такой логин уже существует, регистрация не прошла!';
}

else
{
$query = "INSERT INTO users(login , password , email )
VALUES ('
$login', '$password', '$email')";
$result = mysql_query($query) or die(mysql_error());;
echo 'Регистрация успешно прошла';
}
}
}

?>

Спустя 9 минут, 31 секунда (7.10.2010 - 21:48) arvitaly написал(а):
<?

include_once ( "connect.php" ) ;
if ( isset( $_POST['submit'] ) )
{
if ( empty( $_POST['login'] ) )
{
echo 'Вы не ввели логин' ;
} elseif ( empty( $_POST['password'] ) )
{
echo 'Вы не ввели пароль' ;
} elseif ( empty( $_POST['password2'] ) )
{
echo 'Вы не ввели подтверждение пароля' ;
} elseif ( $_POST['password'] != $_POST['password2'] )
{
echo 'Введенные пароли не совпадают' ;
} elseif ( empty( $_POST['email'] ) )
{
echo 'Вы не ввели E-mail' ;
} elseif ( empty( $_POST['email2'] ) )
{
echo 'Вы не ввели подверждение e-mail' ;
} elseif ( $_POST['email'] != $_POST['email2'] )
{
echo 'Ваш e-mail не совпадает' ;
}

else
{
$login = $_POST['login'] ;
$password = $_POST['password'] ;
$password2 = $_POST['password2'] ;
$email = $_POST['email'] ;
$email2 = $_POST['email2'] ;

$query = "SELECT `id` FROM `users` WHERE `login`='{$login}'" ;
$sql = mysql_query( $query ) or die( mysql_error() ) ;
if ( mysql_num_rows( $sql ) > 0 )
{
echo 'Такой логин уже существует, регистрация не прошла!' ;
}
else
{
$query = "SELECT `id` FROM `users` WHERE `email`='{$email}'" ;
$sql = mysql_query( $query ) or die( mysql_error() ) ;
if ( mysql_num_rows( $sql ) > 0 )
{
echo 'Такой логин уже существует, регистрация не прошла!' ;
}

else
{
$query = "INSERT INTO users(login , password , email )VALUES ('$login', '$password', '$email')" ;
$result = mysql_query( $query ) or die( mysql_error() ) ;
echo 'Регистрация успешно прошла' ;
}
}
}
}


?>


Хотя конечно все это ужасно

Спустя 6 минут, 52 секунды (7.10.2010 - 21:55) philcrosoft написал(а):
почему ужасно? как сделать лучше то?

Спустя 23 минуты, 25 секунд (7.10.2010 - 22:18) arvitaly написал(а):
<?php
class
ExceptReg extends Exception {}
try
{
include_once ( "connect.php" ) ;
if ( isset( $_POST['submit'] ) )
{
if ( empty( $_POST['login'] ) )
{
throw new ExceptReg( 'Вы не ввели логин' ) ;
}

if ( empty( $_POST['login'] ) )
{
throw new ExceptReg( 'Вы не ввели логин' ) ;
}

if ( empty( $_POST['password'] ) )
{
throw new ExceptReg( 'Вы не ввели пароль' ) ;
}

if ( empty( $_POST['password2'] ) )
{
throw new ExceptReg( 'Вы не ввели подтверждение пароля' ) ;
}

if ( $_POST['password'] != $_POST['password2'] )
{
throw new ExceptReg( 'Введенные пароли не совпадают' ) ;
}

if ( empty( $_POST['email'] ) )
{
throw new ExceptReg( 'Вы не ввели E-mail' ) ;
}

if ( empty( $_POST['email2'] ) )
{
throw new ExceptReg( 'Вы не ввели подверждение e-mail' ) ;
}

if ( $_POST['email'] != $_POST['email2'] )
{
throw new ExceptReg( 'Ваш e-mail не совпадает' ) ;
}
$login = $_POST['login'] ;
$password = $_POST['password'] ;
$password2 = $_POST['password2'] ;
$email = $_POST['email'] ;
$email2 = $_POST['email2'] ;
$query = "SELECT `id` FROM `users` WHERE `login`='{$login}'" ;
$sql = mysql_query( $query ) or die( mysql_error() ) ;
if ( mysql_num_rows( $sql ) > 0 )
{
throw new ExceptReg( 'Такой логин уже существует, регистрация не прошла!' ) ;
}

$query = "SELECT `id` FROM `users` WHERE `email`='{$email}'" ;
$sql = mysql_query( $query ) or die( mysql_error() ) ;
if ( mysql_num_rows( $sql ) > 0 )
{
throw new ExceptReg( 'Такой логин уже существует, регистрация не прошла!' ) ;
}
$query = "INSERT INTO users(login , password , email )VALUES ('$login', '$password', '$email')" ;
$result = mysql_query( $query ) or die( mysql_error() ) ;
echo 'Регистрация успешно прошла' ;

}
}

catch ( ExceptReg $e )
{
echo '<font color="red">Ошибка регистрации: ' . $e->getMessage() . '</font>';
}


Ну хотя б так. Ну еще конечно передаваемые параметры надо проверять на корректность (я про логин, емайл и др.). die лучше не использовать - как вариант _die()

function _die()
{
/*Запись в файл логов mysql error
*/
header("Location:" . на страницу сервер недоступен);
}


Спустя 22 часа, 43 минуты, 48 секунд (8.10.2010 - 21:02) philcrosoft написал(а):
а как проверять на корректоность передаваемые параметы? можно ссылками!

Спустя 2 месяца, 27 дней, 10 минут, 47 секунд (5.01.2011 - 22:13) philcrosoft написал(а):
Вопрос поднимаю в связи с тем, что не знаю как сделать переход по ссылке скажем через пару секунд после того, как регистрация прошла успешно

заканчивается она у меня так:

$query = "INSERT INTO users(login , password , email)VALUES ('$login', '$password', '$email')" ;$result = mysql_query( $query ) 
or die( mysql_error() ) ;
echo 'Регистрация прошла успешно' ;}


как сделать? спасибо!

Спустя 3 минуты, 23 секунды (5.01.2011 - 22:16) waldicom написал(а):
Почему бы сразу не перекинуть пользователя куда надо, и там уже ему сказать спасибо за регистрацию?
В таком случае можно было бы воспользоваться
header('Location: ' . $yourAddress);

Хотя можно и такой конечно:
header ('Refresh: 5; url=' . $yourAddress);

Спустя 2 минуты, 25 секунд (5.01.2011 - 22:19) philcrosoft написал(а):
Цитата (waldicom @ 5.01.2011 - 19:16)
Почему бы сразу не перекинуть пользователя куда надо, и там уже ему сказать спасибо за регистрацию?
В таком случае можно было бы воспользоваться
header('Location: ' . $yourAddress);

Хотя можно и такой конечно:
header ('Refresh: 5; url=' . $yourAddress);

да нет мне надо чтобы было чтобы после регистрации спасибо! а потом на его страницу переход допустим )!
так как грамотно вставить то? а то я пишу у меня ошибку пишет! (((

Спустя 9 минут, 14 секунд (5.01.2011 - 22:28) waldicom написал(а):
Цитата (philcrosoft @ 5.01.2011 - 20:19)
так как грамотно вставить то? а то я пишу у меня ошибку пишет! (((

А ошибка случайно не такого типа:
headers already sent

Спустя 10 минут, 43 секунды (5.01.2011 - 22:39) philcrosoft написал(а):
Цитата (waldicom @ 5.01.2011 - 19:28)
Цитата (philcrosoft @ 5.01.2011 - 20:19)
так как грамотно вставить то? а то я пишу у меня ошибку пишет! (((

А ошибка случайно не такого типа:
headers already sent

нет! неправильно прописал как-то (
Быстрый ответ:

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