|
|
|
| Хочу вывести сообщение на форму при не заполненни пользователем
1. Не заполнено поле Login
2.Не заполненно поле пароль
(файла 2, форма и обработчик )
обработчик
<?
//Проверки на заполнение, если нет - перенаправление назад в форму с выводом сообщен.
if (empty($login))
{
echo "<html><head>
<meta http-equiv='Refresh' content='0; URL=reg.php?login=1'>
</head></html>";
exit();
if (empty($password))
{
echo "<html><head>
<meta http-equiv='Refresh' content='0; URL=reg.php?pass=1'>
</head></html>";
exit();?>
|
форма
<form action="reg.php" method="post">
<?php//
if(isset($login) == '1' )
{echo " <div ><span class='error_1'>!Не заполненно поле</span> <span class='error_2'>Login</span></div>"; }
?>
<label>Ваш логин:*<br></label>
<input name="login" type="text" size="15" maxlength="15">
<?php
if(isset($pass) == '1' )
{echo " <div ><span class='error_1'>!Не заполненно поле</span> <span class='error_2'>Пороль</span></div>"; }
?>
<label>Ваш пароль:<br></label>
<input name="password" type="password" size="15" maxlength="15">
label>
<input type="submit" name="submit" value="Зарегистрироваться">
</form>
|
проблема в том, что после заполнения поля Login, и пустом $password, $login все равно остается, и выводятся сообщениями форме вместе с $pass. | |
|
|
|
|
|
|
|
для: Dinya_1
(17.05.2010 в 09:36)
| | Попробуй такую условную конструкцию вместо isset($login)==1
if(!empty($_POST['login'])){...}
if(!empty($_POST['password'])){...}
Если не сработает, попробуй так:
if(strlen($_POST['login']<1)){логин пустой}
if(strlen($_POST['password']<1)){пароль пустой}
Если это у тебя POST переменные, так ты их и используй только таким образом:
$_POST['']... А если GET - соответсвенно $_GET['']....
никаких глобальных переменных, как ты только что пытался сделать... Слишком уязвимо всё будет, и логин и пароль можно подбирать будет через url, подменяя лишь GET параметры | |
|
|
|
|
|
|
|
для: Tonik992
(17.05.2010 в 10:44)
| | Спасибо получилось так
if(isset($_GET['pass']) && $_GET['pass'] == 1) | |
|
|
|
|
|
|
|
для: Dinya_1
(17.05.2010 в 09:36)
| |
<?php
// Попробуйте заменить
if(isset($pass) == '1' )
// На
if(isset($pass) && $pass == 1)
// Так же и для логина
?>
|
хотя я бы делал чуть по другому. так как делаете Вы, то получается, что Вы перегружаете страницу, если одно из полей не заполнено
можно сделать вот так
<?php
// массив для ошибок
$error = array();
if(empty($_POST['login'])){
$error[] = "Пустое поле для логина";
}
/*так же сделать и для пароля
далее проверяете $error на пустоту
и если нет ошибок, то обрабатываете данные формы,
а если есть ошибки, то показываете их пользователю*/
if(empty($error)){
// обрабатываем данные
}
.............................................
if(!empty($error)){
foreach($error as $ err)
echo $err;
}
?>
|
| |
|
|
|
|
|
|
|
для: Slo_Nik
(17.05.2010 в 10:50)
| | Если переменная (./reg.php?login=1) не отправляется с формы,
а только приходит, нужно ли делать проверки на то, что :
1. являетсяли она числом
if (!isset($login)) {$login=1;}
|
2.если в запросе есть теги
//не пропускает при переходу к форме по прямой ссылке ../reg.php
if (!preg_match("|^[\d]+$|", $login)) {exit ("<p>Неверный формат запроса! Проверьте URL!");}
|
| |
|
|
|
|
|
|
|
для: Dinya_1
(17.05.2010 в 12:11)
| | проверять надо всегда и всё, а вот что и как, тут на форуме много раз обсуждалось, воспользуйтесь поиском. | |
|
|
|