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 :: никак $_POST

 PHP.SU

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


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

> Описание: $_POST
bustez
Отправлено: 09 Февраля, 2015 - 19:40:45
Post Id


Новичок


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


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




ребята помогите вопрос заезженный! вот есть много чужого кожа работающего-но я упростил форму какого не работает ( надо когда загружаем форму - только форма , если не ввели данные - ошибка , если введены данные - то ок! почему не работает
PHP:
скопировать код в буфер обмена
  1.  
  2.         $name_user =$_POST['name_user'];
  3.  
  4.  
  5.    if (!isset($name_user))
  6.   {
  7.     echo '<h1> Вы забыли ввести ваше имя </h1>';
  8.     echo get_Form();
  9.  
  10.   }else{
  11.         echo '<h1> все ок </h1>';
  12.     echo get_Form();
  13.   }
  14.  
  15. function get_Form(){
  16.         $html.= '<form method="post" action="test.php">';
  17.         $html.= '<h1><b>ВВЕДИТЕ СООБЩЕНИЕ</b></h1>';
  18.         $html.= '<p> <input type="text" name="name_user" /></p>';
  19.         $html.= '<p><input type="submit"></p>';
  20.         $html.= '</form>';
  21.         echo $html;
  22. }
  23.  
 
 Top
exlant
Отправлено: 09 Февраля, 2015 - 20:23:46
Post Id



Посетитель


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


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




скорей всего ругается на несуществующую $_POST['name_user'];
попробуй сделать так
PHP:
скопировать код в буфер обмена
  1.  
  2. $name_user = (isset($_POST['name_user'])) ? $_POST['name_user'] : NULL;
  3. if(empty($name_user)){
  4. //код
  5. }else{
  6. //код
  7. }
  8.  

или
PHP:
скопировать код в буфер обмена
  1.  
  2. if(isset($_POST['name_user'])){
  3. $name_user = $_POST['name_user'];
  4. }
  5.  
  6. if(!isset($name_user)){
  7. //код
  8. }else{
  9. //код
  10. }
  11.  
  12.  
 
 Top
ytrewq123
Отправлено: 09 Февраля, 2015 - 20:50:46
Post Id


Посетитель


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


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




Да нет Просто isset он там как-то понимает что что-то есть поменяйте на empty.
И всё получается. Для красоты предложу вообще так. Но не настаиваю ибо тоже только учусь.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function get_Form(){
  4.          $html.= '<form method="post" action="test.php">';
  5.         $html.= '<h1><b>ВВЕДИТЕ СООБЩЕНИЕ</b></h1>';
  6.         $html.= '<input type="text" name="name_user" />';
  7.         $html.= '<input type="submit" name="knopka">';
  8.         $html.= '</form>';
  9.         echo $html;
  10. }      
  11.        
  12.         $name_user =$_POST['name_user'];
  13.     $knopka =$_POST['knopka'];
  14.     if(isset($knopka)){
  15.    if (empty($name_user))
  16.   {
  17.  
  18.     echo '<h1> Вы забыли ввести ваше имя </h1>';
  19.    
  20.  
  21.   }else{
  22.         echo '<h1> все ок </h1>';
  23.    
  24.   }}
  25.  
  26.  
  27. get_Form();
  28. ?>
  29.  
  30.  

(Отредактировано автором: 09 Февраля, 2015 - 21:40:41)

 
 Top
qtk
Отправлено: 09 Февраля, 2015 - 20:52:51
Post Id


Частый гость


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


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




PHP:
скопировать код в буфер обмена
  1. function get_Form(){
  2.         $html.= '<form method="post" action="test.php">';
  3.         $html.= '<h1><b>ВВЕДИТЕ СООБЩЕНИЕ</b></h1>';
  4.         $html.= '<p> <input type="text" name="name_user" /></p>';
  5.         $html.= '<p><input type="submit"></p>';
  6.         $html.= '</form>';
  7.         return $html;
  8. }

(Добавление)
Функцию get_form перенести на место сразу после $name_user
 
 Top
ytrewq123
Отправлено: 09 Февраля, 2015 - 21:28:25
Post Id


Посетитель


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4.       $name_user =$_POST['name_user'];
  5.       $knopka =$_POST['knopka'];
  6.   function get_Form(){
  7.         global $knopka;
  8.         if(!isset($knopka)){  
  9.          $html.= '<form method="post" action="test.php">';
  10.         $html.= $tekst = '<h1><b>ВВЕДИТЕ СООБЩЕНИЕ</b></h1>';
  11.         $html.= '<input type="text" name="name_user" />';
  12.         $html.= '<input type="submit" name="knopka">';
  13.         $html.= '</form>';
  14.         echo $html;
  15. }  }    
  16.      
  17.   function get_Fo(){
  18.         $html.= '<form method="post" action="test.php">';
  19.         $html.= '<input type="text" name="name_user" />';
  20.         $html.= '<input type="submit" name="knopka">';
  21.         $html.= '</form>';
  22.         echo $html;
  23. }  
  24.  
  25.     if(isset($knopka)){
  26.    if (empty($name_user))
  27.   {
  28.   $tekst = '<h1><b>ВВЕДИТЕ СООБЩЕНИЕ</b></h1>';
  29.     echo '<h1> Вы забыли ввести ваше имя </h1>',$tekst;
  30.    echo get_Fo();
  31.  
  32.   }else{
  33.     $tekst = '<h1><b>ВВЕДИТЕ СЛЕДУЮЩИЕ СООБЩЕНИЕ</b></h1>';
  34.     echo '<h1> все ок </h1>',$tekst;
  35.    echo get_Fo();
  36.   }}
  37.  
  38.  
  39. get_Form();
  40. ?>
  41.  
  42.  



Ещё маленькое добавление. Я просто учусь.

(Отредактировано автором: 09 Февраля, 2015 - 21:41:05)

 
 Top
exlant
Отправлено: 09 Февраля, 2015 - 21:48:21
Post Id



Посетитель


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


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




ytrewq123 пишет:
Да нет Просто isset он там как-то понимает что что-то есть поменяйте на empty.
И всё получается. Для красоты предложу вообще так. Но не настаиваю ибо тоже только учусь.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. function get_Form(){
  4.          $html.= '<form method="post" action="test.php">';
  5.         $html.= '<h1><b>ВВЕДИТЕ СООБЩЕНИЕ</b></h1>';
  6.         $html.= '<input type="text" name="name_user" />';
  7.         $html.= '<input type="submit" name="knopka">';
  8.         $html.= '</form>';
  9.         echo $html;
  10. }      
  11.        
  12.         $name_user =$_POST['name_user'];
  13.     $knopka =$_POST['knopka'];
  14.     if(isset($knopka)){
  15.    if (empty($name_user))
  16.   {
  17.  
  18.     echo '<h1> Вы забыли ввести ваше имя </h1>';
  19.    
  20.  
  21.   }else{
  22.         echo '<h1> все ок </h1>';
  23.    
  24.   }}
  25.  
  26.  
  27. get_Form();
  28. ?>
  29.  
  30.  


Если поставить выводить все ошибки на вашу конструкцию, когда форма еще не была отправлена, php будет выводить предупреждение e_notice(8), я бы так не писал...
PHP:
скопировать код в буфер обмена
  1.  
  2.  $name_user =$_POST['name_user'];   // здесь будет e_notice, если форма не была отправлена
  3.     $knopka =$_POST['knopka'];          // здесь будет e_notice, если форма не была отправлена
  4.  

как и вот так вот
PHP:
скопировать код в буфер обмена
  1.  
  2. function get_Form(){
  3.          $html.= '<form method="post" action="test.php">'; // здесь будет e_notice
  4.         $html.= '<h1><b>ВВЕДИТЕ СООБЩЕНИЕ</b></h1>';
  5.         $html.= '<input type="text" name="name_user" />';
  6.         $html.= '<input type="submit" name="knopka">';
  7.         $html.= '</form>';
  8.         echo $html;
  9. }      
  10.  

на первое приклеивание переменной $html, php тоже ругнется, e_notice, так как $html еще не существует

переменную $_POST[] желательно проверить на ее существование
(Добавление)
и еще:
PHP:
скопировать код в буфер обмена
  1.  
  2. $knopka = $_POST['knopka'];
  3. if(isset($knopka))
  4.  

вы в коде с начало сами создаете переменную $knopka, а потом проверяете ее существование, она в любом случаи будет существовать, то есть вы в любом случаи зайдете в блок if(isset($knopka))

(Отредактировано автором: 09 Февраля, 2015 - 22:08:20)

 
 Top
skiphog
Отправлено: 09 Февраля, 2015 - 22:30:10
Post Id



Частый гость


Покинул форум
Сообщений всего: 139
Дата рег-ции: Дек. 2014  
Откуда: Киров, Россия


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




exlant пишет:
вы в коде с начало сами создаете переменную $knopka, а потом проверяете ее существование, она в любом случаи будет существовать, то есть вы в любом случаи зайдете в блок if(isset($knopka))

Ложь Улыбка

PHP:
скопировать код в буфер обмена
  1. $knopka = $_POST['abyrvalg']; // null
  2. var_dump(isset($knopka));

(Отредактировано автором: 09 Февраля, 2015 - 22:37:16)

 
My status
 Top
bustez
Отправлено: 09 Февраля, 2015 - 22:30:49
Post Id


Новичок


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


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




(Добавление)
ВСЕМ СПАСИБО ЗА ВКЛ. в диалог (проверка на существование, объявление переменной это все понятно - данный код упрощен) Вопрос: не работает условие если в форму ничего не введено - то должно выводиться echo '<h1> Вы забыли ввести ваше имя </h1>'; если все введено -то echo '<h1> все ок </h1>'; И может есть знающие люди подскажут (как сделать, чтобы форма не отправлялась если не введено ничего!)
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3.         global $name_user;
  4.         $name_user =$_POST['name_user'];
  5.         get_Form();
  6.  
  7.    if (!isset($name_user))
  8.   {
  9.     echo '<h1> Вы забыли ввести ваше имя </h1>';
  10.  
  11.  
  12.   }else{
  13.         echo '<h1> все ок </h1>';
  14.  
  15.   }
  16.  
  17. function get_Form(){
  18.         $html.= '<form method="post" action="test.php">';
  19.         $html.= '<h1><b>ВВЕДИТЕ СООБЩЕНИЕ</b></h1>';
  20.         $html.= '<p> <input type="text" name="name_user" /></p>';
  21.         $html.= '<p><input type="submit"></p>';
  22.         $html.= '</form>';
  23.         echo $html;
  24. }
  25.  
  26.  
  27.  

(Добавление)
как сделать чтобы не отправлялось ничего (т.е. данные методом $_POST - тупо тормозились и не передавались ) если хотя бы одно поле не заполнено!

(Отредактировано автором: 09 Февраля, 2015 - 22:35:37)

 
 Top
ytrewq123
Отправлено: 09 Февраля, 2015 - 22:45:44
Post Id


Посетитель


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


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




Я конечно извиняюсь, может я чего-то не понимаю. Но если Вы возьмёте написанный мною код, там всё работает. И если не заполнено, ничего ни куда не отсылается.

И если же не желаете в своём поменяйте.

if (!isset($name_user))

НА

if (empty ($name_user))

Просто там разница что при isset ПХП видит другое чем при empty

(Отредактировано автором: 09 Февраля, 2015 - 22:50:16)

 
 Top
bustez
Отправлено: 09 Февраля, 2015 - 23:05:56
Post Id


Новичок


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


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




да действительно работает ( но если ничего не введено и нажата кнопка ) все равно сам запрос отработает (в массив попадет пустая строка и например укажите функцию записи в файл + время когда отражена ) и если потом данные записывать в файл и выводить будут пустые строки ( а я спрашиваю как предотвратить посылку самой формы, если не введено ничего!

но ваш код работает)правда выравнивание неахти!
я тоже учусь!
 
 Top
exlant
Отправлено: 10 Февраля, 2015 - 02:05:58
Post Id



Посетитель


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


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




ytrewq123 пишет:
Я конечно извиняюсь, может я чего-то не понимаю. Но если Вы возьмёте написанный мною код, там всё работает. И если не заполнено, ничего ни куда не отсылается.

И если же не желаете в своём поменяйте.

if (!isset($name_user))

НА

if (empty ($name_user))

Просто там разница что при isset ПХП видит другое чем при empty


я ни слова не написал, что код не будет работать! я написал, что если запросить не существующую переменную которой в данном случаи, при не отправленной форме, является $_POST['name_user'] и $_POST['knopka'], то php, опять же если включено отображать все ошибки, выдаст предупреждение Undefined index, если отключено выводить notice, что стоит по умолчания на большинстве виртуальных серверов, таких как denver, open_server, то ничего не выведет, но это не означает, что нотиса нет, а только то, что пхп его не выведет! Вот о чем я писал!
И та же строчка
PHP:
скопировать код в буфер обмена
  1. $html.= '<form method="post" action="">';

тоже выведет предупреждение, так как .= означает приклеить что то уже к существующей переменной, то есть $html уже должна существовать
PHP:
скопировать код в буфер обмена
  1. $html= '<form method="post" action="">'; // без точки
  2. //а остальные уже c точкой, что бы не писать $html = $html.'<h1><b>ВВЕДИТЕ СООБЩЕНИЕ</b></h1>';
  3.  $html.= '<h1><b>ВВЕДИТЕ СООБЩЕНИЕ</b></h1>';
  4.         $html.= '<p> <input type="text" name="name_user" /></p>';
  5.         $html.= '<p><input type="submit"></p>';
  6.         $html.= '</form>';
  7.  


А $_POST['name_user'] хотя бы проверить на существование функцией isset,
а потом уже присваивать другой переменной, вот и все!
Чем плохо с начало проверить на существование $_POST['name_user']?
PHP:
скопировать код в буфер обмена
  1.  
  2. $name_user = (isset($_POST['name_user'])) ? $_POST['name_user'] : NULL;
  3.  

а потом уже проверять на пустоту функцией empty?


Цитата:

Просто там разница что при isset ПХП видит другое чем при empty

ну понятно что при isset ПХП видит другое чем при empty...
isset проверяет переменную на существование
а empty на пустоту

(Отредактировано автором: 10 Февраля, 2015 - 02:40:42)

 
 Top
ytrewq123
Отправлено: 10 Февраля, 2015 - 20:16:22
Post Id


Посетитель


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


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




...Позволю себе продолжить беседу. Для того что бы понять и что-то узнать.
ДЛЯ bustez Не знаю. Может и в массив попадет пустая строка.
Хочу только сказать. Я для того чтобы вообще не отсылалось до того как заполнят. Я использую HTMLый required. То есть как бы ничего не случится жми, дави пока не заполнено что либо.
…………………………………………………
exlant..............«я ни слова не написал, что код не будет работать!»
ytrewq123....... Извините, но я и не говорю что это сказали Вы.
exlant.............«выдаст предупреждение Undefined index, если отключено выводить notice»
ytrewq123........ Полностью с Вами согласен и я вижу эти Ошибки предупреждения.
Но я не как не понимал почему они и как от них избавится. Люди у которых я спрашивал. Отвечали. «Это не страшно» «Отключи эти ошибки» .
exlant............«не существующую переменную которой в данном случаи, при не отправленной форме, является $_POST['name_user'] и $_POST['knopka'],»
ytrewq123...... Я извиняюсь , но Вы утверждали что эти переменная $knopka существуют и глупо проверять их на существование.
exlant........... «вы в коде с начало сами создаете переменную $knopka, а потом проверяете ее существование,»
 
 Top
bustez
Отправлено: 10 Февраля, 2015 - 20:30:19
Post Id


Новичок


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


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




Цитата:
Я использую HTMLый required.
да действительно вариант!
от всех ошибок нужно избавляться ( просто сначала объявляйте сначала переменные и используйте их в функциях и никакой НОТИЦЫ не будет!
А если в рабочем проекте будут ошибки( их будет много) - они попадают в логи и уже через неделю этот файл (в котором они сохраняются будет весить несколько GB) ! как-то так! А это место на сервере..............
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. /**
  4.  *$name_user имя
  5.  *$email_user емаил
  6.  *$text_user текст
  7.  *функция возвращения введеной инфо
  8.  */
  9.         function get_text($name_user, $email_user, $text_user){
  10.                 if($name_user == "" || $email_user == "" || $text_user == ""){
  11.                         return; //останавливаем если хоть что-то пусто в форме
  12.                 }else{
  13.                         $html='<h2>'."$name_user<br>".'</h2>';
  14.                         $html.= "$email_user<br>";
  15.                         $html.= "$text_user<br>";
  16.                         $html.='<i>'.'<b>'.date('H-i-d-m-Y').'</b>'.'<i>';
  17.                         $html.= '<hr>'.'|||';
  18.                         return $html;
  19.                 }      
  20. }      
  21. $get_text_peremennaa = get_text($name_user, $email_user, $text_user);// возвращаем все что пришло из формы
  22.  


решил проблему - строка в массив не попадает, но это не очень правильно!
Цитата:
return; //останавливаем если хоть что-то пусто в форме
 
 Top
GoDr
Отправлено: 10 Февраля, 2015 - 20:51:15
Post Id



Посетитель


Покинул форум
Сообщений всего: 446
Дата рег-ции: Янв. 2015  
Откуда: Тамбов


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




bustez, так ты решил вопрос? просто из обсуждения я вообще потерял суть Радость Если отталкиваться только от вопроса, то вообще нет проблем, но дальнейшие рассуждения что-то такое натворили...... Хорошо


-----
Система управления веб-содержимым Lotos CMS
 
 Top
exlant
Отправлено: 10 Февраля, 2015 - 21:26:24
Post Id



Посетитель


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


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




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

Насчет того, что $knopka = $_POST['knopka'] существует, если даже $_POST['knopka'] не существует, и вы уже проверяете существующую переменную, да ошибся, я не спорю, я как раз думал по другому, и наверное с самого начала изучения php думал, что она будет определена, не знаю и не помню от куда я это взял! Но все равно переменную $_POST[index] лучше проверить на существование, а потом уже присваивать другой переменной, во избежание нотисов.

Я вот еще точно не помню, но вроде старые php версии(или это в директивах прописывается), так же выводили нотисы, если сразу проверить несуществующую $_POST функцией empty(). Я когда первый раз столкнулся с php, то у меня с этим были проблемы, на виртуальном хосте было все ок, перевел сайт на локальный то было куча нотисов. На текущей версии и конфигурации моего сервера на if(empty($_POST['undefined'])) нотисы не выводит, проверил

(Отредактировано автором: 10 Февраля, 2015 - 21:29:31)

 
 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