Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: PHP/MySQL [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Без описания
JoyStick
Отправлено: 28 Января, 2012 - 12:27:23
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Саныч пишет:
Проверили на существование, проверили на пустоту. Если все ОК добавили, иначе - ошибка.


Напишите пример, буду очень благодарен...
для одного поля)
 
 Top
Panoptik
Отправлено: 28 Января, 2012 - 12:34:05
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




в идеале я сделал примерно так. так как если не существует хотябы одной переменной, то нам не имеет смысла продолжать - то делаем проверку на существование всех сразу:
PHP:
скопировать код в буфер обмена
  1.     if(isset($_POST['name'], $_POST['texnika'], $_POST['id_podxod'], $_POST['sex'], $_POST['kol_people'], $_POST['age'], $_POST['dostup'])) {
  2.   //все значения пришли, можно проверять их на непустоту
  3.         if(empty($_POST['name']))
  4.            {echo 'field name - fill!';}
  5.         elseif(empty($_POST['texnika']))
  6.               {echo 'field texnika - fill';}
  7.         elseif(empty($_POST['id_podxod']))
  8.               {echo 'field id_podxod - fill';}
  9.         elseif(empty($_POST['options'])){
  10.               $options = mysql_real_escape_string(implode(', ',$_POST['options']));
  11.               echo 'field options - fill';}
  12.         elseif(empty($_POST['sex']))
  13.               {echo 'field sex - fill';}
  14.         elseif(empty($_POST['kol_people']))
  15.               {echo 'field kol_people - fill';}
  16.         elseif(empty($_POST['age']))
  17.               {echo 'field age - fill';}
  18.         elseif(empty($_POST['dostup']))
  19.               {echo 'field dostup - fill ';}  
  20.         else {
  21.               //и тут мы вставляем данные в базу
  22.         }
  23. } else {
  24.   //не существует одного и более значения - если данные пришли не из формы - это значит что ктото хочет нас хакнуть
  25. }


-----
Just do it
 
 Top
JoyStick
Отправлено: 28 Января, 2012 - 12:34:14
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Panoptik пишет:
if(!isset($_POST['name']))
//в этих местах вместо фразы ниже лучше бы написать какое именно поле не заполнено например "не заполнено поле name"
{echo 'заполнены не все поля';}
elseif(!isset($_POST['texnika']))
{echo 'заполнены не все поля';}
elseif(!isset($_POST['id_podxod']))
{echo 'заполнены не все поля';}
elseif(isset($_POST['options'])){
$options = mysql_real_escape_string(implode(', ',$_POST['options']));
echo 'заполнены не все поля';}
elseif(!isset($_POST['sex']))
{echo 'заполнены не все поля';}
elseif(!isset($_POST['kol_people']))
{echo 'заполнены не все поля';}
elseif(!isset($_POST['age']))
{echo 'заполнены не все поля';}
elseif(!isset($_POST['dostup']))
{echo 'заполнены не все поля';}
else {
if($_POST['name'] && $_POST['texnika'] && $_POST['id_podxod'] && $_POST['sex'] && $_POST['kol_people'] && $_POST['age'] && $_POST['dostup']) {
//все поля заполнены можно добавлять данные
} else {
//заполнены не все поля
}


}


Пишет "не заполнено поле options" и данные не добавляет соответственно.
 
 Top
Panoptik
Отправлено: 28 Января, 2012 - 12:40:55
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




каждый тип данных проверяется по своему. если это строка - то проверяется например с помощью mysql_real_escape_string, если число - то например intval. можете конечно убрать проверки - но тогда ваш сайт будет уязвим даже для школьника

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


-----
Just do it
 
 Top
JoyStick
Отправлено: 28 Января, 2012 - 12:48:41
Post Id


Новичок


Покинул форум
Сообщений всего: 29
Дата рег-ции: Янв. 2012  


Помог: 0 раз(а)




Сделал) Респект Panoptik) и спасибо difight)
 
 Top
difight
Отправлено: 28 Января, 2012 - 13:37:39
Post Id



Посетитель


Покинул форум
Сообщений всего: 355
Дата рег-ции: Нояб. 2011  


Помог: 3 раз(а)




не за что Улыбка
 
My status
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB