Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: сброс $_POST
 
 автор: Dinya_1   (17.05.2010 в 09:36)   письмо автору
 
 

Хочу вывести сообщение на форму при не заполненни пользователем
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.

  Ответить  
 
 автор: Tonik992   (17.05.2010 в 10:44)   письмо автору
 
   для: 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 параметры

  Ответить  
 
 автор: Dinya_1   (17.05.2010 в 11:50)   письмо автору
 
   для: Tonik992   (17.05.2010 в 10:44)
 

Спасибо получилось так

if(isset($_GET['pass']) && $_GET['pass'] == 1)

  Ответить  
 
 автор: Slo_Nik   (17.05.2010 в 10:50)   письмо автору
 
   для: 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;
}
?>

  Ответить  
 
 автор: Dinya_1   (17.05.2010 в 12:11)   письмо автору
 
   для: 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!");}

  Ответить  
 
 автор: Slo_Nik   (17.05.2010 в 17:10)   письмо автору
 
   для: Dinya_1   (17.05.2010 в 12:11)
 

проверять надо всегда и всё, а вот что и как, тут на форуме много раз обсуждалось, воспользуйтесь поиском.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования