[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проверка полей
Gans1g
Здраствуйте добрые люди! =) Всех с праздником 9 мая!Вот решил опять обратиться к вам за помощью думаю не откажете памочь =) так вот сделал вывод данных через $_GET,форму понятно как отоброжать но как там же и праверку полей сделать..не как чета не допру...если есть другие предложения на вывод всех выслушаю..заранее спасибо и еще раз с праздиком!..
PHP
<?php
       
if($_GET['action'] =='register')
{
       if(
$_POST['register'] =='')
{
        
printf('
       <form action="?action=register" method="post" name="register2">
       <label>Логин</label><input name="login" type="text" size="22" maxlength="22"><br><br>
       <label>Пароль</label><input name="password" type="password" size="22" maxlength="22"><br>
       <input name="register" type="submit" value="Регестрироваться">
       </form>'
);

}
}







Спустя 32 минуты, 27 секунд (9.05.2009 - 13:08) jetistyum написал(а):
PHP
<?php
       
if($_GET['action'] =='register')
{
       if(isset(
$_POST['register'])){
$login = (isset($_POS['login']) && $_POS['login'] !='')? strtolower(trim($_POS['login'] )):null;

$password = (isset($_POS['password']) && $_POS['password'] !='')? trim($_POS['password']):null;

if(
$login==null)
    echo 
'Заполните поле Login';
if (
$password == null)
    echo 
'Заполните поле Password';

}
else
{
        
printf('
       <form action="?action=register" method="post" name="register2">
       <label>Логин</label><input name="login" type="text" size="22" maxlength="22"><br><br>
       <label>Пароль</label><input name="password" type="password" size="22" maxlength="22"><br>
       <input name="register" type="submit" value="Регестрироваться">
       </form>'
);

}
}


Развивай мысль дальше...
Только подумай еще как отображать форму если поля заполнены с ошибками.

Спустя 4 минуты, 55 секунд (9.05.2009 - 13:13) twin написал(а):
Видно праздник начался biggrin.gif biggrin.gif
Это что за новый массив?
$_POS['password'] ???
А вместо этого:
PHP
(isset($_POS['login']) && $_POS['login'] !='')

проще наверно так написать:
PHP
(!empty($_POS['login'])

Спустя 3 минуты, 59 секунд (9.05.2009 - 13:17) Gans1g написал(а):
=)) буду виться дальше спасибо всегда знал что на этом свете еще остались хорошые людишки user posted image

Спустя 14 минут, 44 секунды (9.05.2009 - 13:32) jetistyum написал(а):
черт, не дошло сообщение мое - на счет $_POS опечатался и накопипастил tongue.gif
а на счет empty - согласен с близнецом smile.gif надо и себе на вооружение взять, не использовал раньше..

Спустя 1 день, 2 часа, 45 минут, 52 секунды (10.05.2009 - 16:18) Gans1g написал(а):
Здраствуйте вот опять проблемы возникают ошибки толька не могу понять почему.. и в базу добавляеться толька логин и остальные кроме пароля и у логина толька 1 символ заноситься хотя пишу 4-5

Notice: Uninitialized string offset: 0 in C:\Program Files\VertrigoServ\www\la2\register.php on line 38

Notice: Undefined variable: pasword in C:\Program Files\VertrigoServ\www\la2\register.php on line 38

Notice: Undefined index: do in C:\Program Files\VertrigoServ\www\la2\register.php on line 35

Notice: Undefined variable: q2 in C:\Program Files\VertrigoServ\www\la2\register.php on line 41

PHP
error_reporting(E_ALL);
//Данные для работы с MySQL
//Сервер, в большинстве случаев менять не требуется
$DBSERVER "localhost";
//Пользователь и пароль
$DBUSER "root";
$DBPASS "vertrigo";
//База данных
$DB "l2jdb";

$link mysql_connect($DBSERVER$DBUSER$DBPASS) or die("Не могу подключиться" );
// сделать $DB текущей базой данных
mysql_select_db($DB$link) or die ('Не могу выбрать БД');



       if(
$_GET['action'] =='register')
{
       if(isset(
$_POST['do']))
{




       if(empty(
$_POST['login']))
       echo 
'<li>Вы не ввели логин</li>';

       if(empty(
$_POST['password']) || empty($_POST['rpassword']) || $_POST['password'] != $_POST['rpassword'])
       echo 
'<li>Введенные пароли не совподают</li>';


}

      if(
$_POST['do'] ==true)
      {

      
$q2=mysql_query("INSERT INTO `accounts`(login,password,lastactive,access_level) VALUES ('".$login["login"]."','".$pasword["password"]."','0','0')");
      }
      if(
$q2)
      {
          echo 
'Вы успешно зарегестрировалис ';
          }

else
{
      
printf('
      <form action="?action=register" method="post" name="regform">
      <center>
      <div style="background-image:url(img/logo.gif); width:500px; height:51"></div>
      <div style=" background-image:url(img/center.gif); width:500px; height:24px; margin:0; padding:0; background-repeat:repeat-y;">
      <div>
      <table>
      <tr>
      <td style=" color:#FFF">Логин:</td>
      <td><input name="login" type="text" size="22" maxlength="22" style="border:1px solid color:#666;"></td>
      </tr>
      <td style=" color:#FFF">Пароль:</td>
      <td><input name="password" type="password" size="22" maxlength="22" style="border:1px solid color:#666;"></td>
      </tr>
      <td style=" color:#FFF" >Павторите пароль:</td>
      <td><input name="rpassword" type="password" size="22" maxlength="22" style="border:1px solid color:#666;"></td>
      </tr>
      <td></td>
      <td><input name="do" type="submit" value="Регестрироваться" style="border:1px solid color:#666;"></td>
      </tr>
      </table>
      </div>
      </div>
      <div style="background-image:url(img/foter.gif); width:500px; height:19px; margin:0; padding:0"></div>
      </center></form>'
);
}
}




Спустя 3 часа, 39 минут, 19 секунд (10.05.2009 - 19:57) waldicom написал(а):
Цитата (twin @ 9.05.2009 - 11:13)
А вместо этого:
PHP
(isset($_POS['login']) && $_POS['login'] !='')

проще наверно так написать:
PHP
(!empty($_POS['login'])

Если я не ошибаюсь, то такая конструкция будет кидать warnings, если переменная не определена. А так как крутые перцы пишут программы без единого warning, то приходится проверять каждую переменную.
Оно конечно долго и нудно, зато красиво в конечном итоге и безопаснее.

Спустя 23 минуты, 19 секунд (10.05.2009 - 20:21) twin написал(а):
Из мануала:
Цитата
empty() является противоположностью (boolean) var, за исключением того, что не появляется предупреждение, когда переменная не определена.

Спустя 14 минут, 10 секунд (10.05.2009 - 20:35) waldicom написал(а):
Цитата (twin @ 10.05.2009 - 18:21)
Из мануала:
Цитата
empty() является противоположностью (boolean) var, за исключением того, что не появляется предупреждение, когда переменная не определена.

О, не знал.
Спасибо!

Спустя 5 часов, 5 минут, 12 секунд (11.05.2009 - 01:40) Gans1g написал(а):
написал бред..условие постоянно иcтинно..буду разбераться..
PHP
if($_POST['do'] ==true)

Спустя 31 минута, 45 секунд (11.05.2009 - 02:12) anonymouse написал(а):
1.
PHP
if($_POST['do'] ==true)

А ты попробуй сделать так -
Галимо наверное но должно сработать правильно

PHP
if($_POST['do'] == 'Регестрироваться')

Тобишь он проверить если значение в массиве $_POST['do'] равно тому значению "VALUE" что у тебя заданно в форме )


2.
PHP
$q2=mysql_query("INSERT INTO `accounts`(login,password,lastactive,access_level) 
VALUES ('"
.$login["login"]."','".$pasword["password"]."','0','0')");


Это строка 38 -

Ток я так и не понял где у тебя есть переменная $login и $pasword

Спустя 6 часов, 29 минут, 19 секунд (11.05.2009 - 08:41) twin написал(а):
А вот так точно делать не желательно. Тут как раз и может произойти обращение к несуществующему элементу массива, что вызовет нотис. Наличие его нужно проверять функцией isset()

PHP
if(isset($_POST['do']))
{

Спустя 4 часа, 20 минут, 7 секунд (11.05.2009 - 13:01) Gans1g написал(а):
я хотел сделать вот что если истина то записываются данные в базу если нет отображается форма..правельно я хоть делал??

PHP
if($_POST['do'] ==true)

Спустя 26 минут, 40 секунд (11.05.2009 - 13:28) twin написал(а):
Обращение к переменной само по себе вернет истину, если переменная не пустая и ложь, если пустая. То есть равенство тут не нужно.
Достаточно
PHP
if($_POST['do'])
НО. В массиве $_POST по каким то причинам может не оказаться элемента 'do' и тогда обращение к этому элементу, хоть напрямую как у меня, хоть в условиях, как у тебя, может вызвать предупреждение интерпретатора, ноитс или варнинг, кто как называет. По этому нужно либо сначала определить переменную, объявить её явно:
PHP
$do = isset($_POST['do'])?$_POST['do']:NULL;
и тогда мы будем уверенны, что переменная $do существует и будем опираться на её содержимое. Если NULL, то есть переменная пуста, то она вернет false. А если в ней что то есть, то true.
Либо можно сразу проверить существование элемента в массиве, то есть
PHP
if(isset($_POST['do']))
. Но этот способ годится только для кнопок.
Теперь понятно?

Спустя 2 часа, 9 минут, 48 секунд (11.05.2009 - 15:38) Gans1g написал(а):
Выше написанное вами я понял..но все равно чета не как не пайму как осуществляют регестраю через браузерную строку...при нажатии на сылку реистрации выводиться форма при нажатии кнопки регестрироваться выводятся ошибки но в базу все равно добавляеться инфа и выводиться мол зарегестрировался.. тобиш истина..чета не так значит делаю.. wink.gif

Спустя 25 минут, 37 секунд (11.05.2009 - 16:03) Kuliev написал(а):
Цитата (Gans1g @ 11.05.2009 - 17:38)
Выше написанное вами я понял..но все равно чета не как не пайму как осуществляют регестраю через браузерную строку...при нажатии на сылку реистрации выводиться форма при нажатии кнопки регестрироваться выводятся ошибки но в базу все равно добавляеться инфа и выводиться мол зарегестрировался.. тобиш истина..чета не так значит делаю.. wink.gif

PHP
if(isset($_GET['action']) and $_GET['action'] =="register")
 {
       if(isset(
$_POST['do']))
{




       if(empty(
$_POST['login']))
       echo 
'<li>Вы не ввели логин</li>';

       if(empty(
$_POST['password']) || empty($_POST['rpassword']) || $_POST['password'] != $_POST['rpassword'])
       echo 
'<li>Введенные пароли не совподают</li>';
       exit();

}
else
{

      

   
$q2=mysql_query("INSERT INTO `accounts`(login,password,lastactive,access_level) VALUES ('".$login["login"]."','".$pasword["password"]."','0','0')") or die(mysql_error());
      
   if(
$q2)
   {
    echo 
'Вы успешно зарегестрировалис ';
   }

 }
}

else
{
      
printf('
      <form action="?action=register" method="post" name="regform">
      <center>
      <div style="background-image:url(img/logo.gif); width:500px; height:51"></div>
      <div style=" background-image:url(img/center.gif); width:500px; height:24px; margin:0; padding:0; background-repeat:repeat-y;">
      <div>
      <table>
      <tr>
      <td style=" color:#FFF">Логин:</td>
      <td><input name="login" type="text" size="22" maxlength="22" style="border:1px solid color:#666;"></td>
      </tr>
      <td style=" color:#FFF">Пароль:</td>
      <td><input name="password" type="password" size="22" maxlength="22" style="border:1px solid color:#666;"></td>
      </tr>
      <td style=" color:#FFF" >Павторите пароль:</td>
      <td><input name="rpassword" type="password" size="22" maxlength="22" style="border:1px solid color:#666;"></td>
      </tr>
      <td></td>
      <td><input name="do" type="submit" value="Регестрироваться" style="border:1px solid color:#666;"></td>
      </tr>
      </table>
      </div>
      </div>
      <div style="background-image:url(img/foter.gif); width:500px; height:19px; margin:0; padding:0"></div>
      </center></form>'
);
}


wink.gif

Спустя 49 минут, 39 секунд (11.05.2009 - 16:53) Gans1g написал(а):
я пробывал так но у меня ругался на else последнее постоянно..ваш работает biggrin.gif , видимо я не правельно помощь сформулировал..получилось не то что я хотел сделать..на некоторых сайтах проста на index-ой странице прекреплена регестрация..в адресную строку проста подстовляеться значение например ?action=register- получаеться index.php?action=register и на index странице ссылка на регу при нажатие ее поевляеться форма на этой же странице с регой..ладно буду сам разбераться а то наверное уже замучал вас biggrin.gif буду пытаться делать а то нагло уже как то получаеться..
Быстрый ответ:

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