Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 7

Проблемы при проверке данных методом POST

18.09.2013, 08:50. Показов 1551. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток! Возникла такая проблема: есть форма отправки сообщения form.php
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
<form action="index.php?page=action" method="post">  
   <table width="90%" border="0" cellpadding="0" cellspacing="5" id="form_table">
      <tr>
         <td colspan="2" align="center"><h3>Заполните, пожалуйста, форму:</h3></td>
      </tr>
      <tr>
         <td class="text_cell">Ваше имя:</td>
         <td><input type="text" name="user_name" size="50" value="<?=value_write($_POST["user_name"]);?>"/></td>
      </tr>
      <tr>
         <td class="text_cell">Тема письма:</td>
         <td><input type="text" name="user_subject" size="50" value="<?=value_write($_POST["user_subject"]);?>"/></td>
      </tr>
      <tr>
         <td class="text_cell">Ваш e-mail:</td>
         <td><input type="text" name="user_mail" size="50" value="<?=value_write($_POST["user_mail"]);?>" /></td>
      </tr>
      <tr>
         <td class="text_cell">Текст письма:</td>
         <td>
            <textarea name="user_text" cols="40" rows="15" value="<?=value_write($_POST["user_text"]);?>"></textarea>
         </td>
      </tr>
      <tr>
         <td colspan="2" align="center">
            <input type="submit" name="submit" value="Отправить" id="submit" />
         </td>
      </tr>
   </table>
</form>

И есть две функции; одна из них проверяет заполнено ли поле, а вторая отображает текст на заполненных полях

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
function exist_field($the_field) {
    if (isset($the_field) && !empty($the_field)) {
        return true;
    } else { return false;}
}
 
function value_write($input_value) {
   if (exist_field($input_value))   {
      $output_value = $input_value;
   } else {
      $output_value = "Заполните форму";
   } 
   return $output_value;         
}
Но браузер ругается на POST в форме отправки: Notice: Undefined index: user_name in C:\wamp\www\mysite\form.php on line 8

При этом если во второй функции меняю exist_file на empty или isset браузер перестает ругаться

Наверное это всем приевшаяся фраза, но я новичок в php и недавно начал изучение и не знаю всех тонкостей суперглобальных массивов. Заранее буду благодарен за помощь или совет
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2013, 08:50
Ответы с готовыми решениями:

Жесткие диски начали щелкать при POST проверке.
Доброго времени суток! В общем такая ситуация: стоит 2 хдд по 1Тб. seagate barracuda ST31000340NS Последнее время оба начали щелкать...

при передачи данных методом POST не преобразует в верхний регистр
Прошу помощи в решении следующей проблемы: при передачи данных методом POST не преобразует в верхний регистр $familiya =...

Проблемы при проверке пароля (Encrypt)
Возникла следующая проблема.Работаю используя Java. Есть БД под MySQL. В ней хранится информация про пользователей, в том числе и их...

13
6 / 6 / 0
Регистрация: 17.08.2013
Сообщений: 50
18.09.2013, 08:59
Я так понял, тут не весь код.
Ругается не браузер, а интерпретатор
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 7
18.09.2013, 09:22  [ТС]
Цитата Сообщение от theDimZone Посмотреть сообщение
Я так понял, тут не весь код.
Весь, дальше я не стал писать, решил сначала с этим разобраться. В принципе, можно было бы как-нибудь по-другому обмозговать эти функции, но я думаю, что будет полезно узнать в чем же все-таки проблема
Цитата Сообщение от theDimZone Посмотреть сообщение
Ругается не браузер, а интерпретатор
Да, спасибо, именно он
0
weboman
 Аватар для Schtrich
210 / 195 / 63
Регистрация: 13.08.2010
Сообщений: 1,531
Записей в блоге: 6
18.09.2013, 11:13
Цитата Сообщение от Nephalem Посмотреть сообщение
Notice: Undefined index: user_name in C:\wamp\www\mysite\form.php on line 8
В массиве не существует ключа user_name.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.09.2013, 11:29
Цитата Сообщение от Nephalem Посмотреть сообщение
PHP
1
2
3
4
5
function exist_field($the_field) {
* * if (isset($the_field) && !empty($the_field)) {
* * * * return true;
* * } else { return false;}
}
PHP
1
2
3
function exist_field($field) {
    return !empty($field);
}
Цитата Сообщение от Nephalem Посмотреть сообщение
в чем же все-таки проблема
в том, что, по-видимому, при передаче значения в функцию, вы не проверяете его на существование
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 7
18.09.2013, 11:29  [ТС]
Я так понял, что не существует $_POST["user_name"], но ведь isset применяют именно в таких случаях, когда надо проверить переменную на предмет ее существования.
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.09.2013, 11:31
да. Только прежде чем проверить его внутри функции, вы к нему обращаетесь, при передаче в эту функцию
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 7
18.09.2013, 11:43  [ТС]
Вот как я представлял работу этого скрипта:
1) Загружается форма form.php
2) Интерпретатор обращается к функции value_write с входными данными $_POST ["user_name"]
3) Внутри функции value_write идет проверка переменной через функцию exist_field
4) Если такая переменная существует, то функция value_write присваивает значение этой переменной, иначе присваивает значение "Заполните форму"
5) В значение value внутри формы идет присваивание значения функции value_write
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.09.2013, 11:46
вот во втором пункте и есть ошибка
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 7
18.09.2013, 12:01  [ТС]
Цитата Сообщение от KOPOJI Посмотреть сообщение
вот во втором пункте и есть ошибка
2) Интерпретатор обращается к функции value_write с входными данными $_POST ["user_name"], видит что такой переменной не существует и выдает ошибку, не обращаясь к проверке внутри функции exist_field.

Если так, подскажите, пожалуйста, почему он не хочет проверять $_POST ["user_name"] внутри последней функции
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.09.2013, 12:03

Вы хотите взять яблоко. Прежде чем его взять, надо посмотреть, есть ли оно?
Т.е., необходимо сделать следующее:
1. Проверить, есть ли у вас яблоко
2. Если есть - взять его
Вы делаете:
1. Взять яблоко (а ведь его может и не быть)
2. Проверить, есть ли у вас яблоко (которое вы уже попытались взять)
3. Если есть - взять его
2
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 7
18.09.2013, 12:36  [ТС]
В форме подставил конструкцию
PHP
1
<?=isset($_POST["user_name"])?$_POST["user_name"]:"Заполните форму";?>
и все отлично заработало. При этом функцию сделал точно также
PHP
1
2
3
function value_write($input_value) {
    return $output_value = isset($input_value)?$input_value:"Заполните форму";         
}
и при обращении к ней снова выдает ошибку. Простите, возможно я тупой нуб, но я в упор не вижу почему он ругается
0
Почетный модератор
Эксперт HTML/CSSЭксперт PHP
 Аватар для KOPOJI
16844 / 6724 / 880
Регистрация: 12.06.2012
Сообщений: 19,967
18.09.2013, 13:11
перечитайте предыдущее сообщение еще раз. Вы в функцию передаете значение, которое не обязательно существует
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 7
18.09.2013, 13:39  [ТС]
Да мне тут подсказали решение, разделив массив и индекс
PHP
1
2
3
function value_write($input_array, $input_index) {
    return $output_value = isset($input_array[$input_index])?$input_array[$input_index]:"Заполните форму";         
}
PHP
1
value_write($_POST,"user_name");
Большое спасибо за потраченные время и нервы
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.09.2013, 13:39
Помогаю со студенческими работами здесь

Структура данных через STDIN при отправке параметров методом POST
Любопытна структура данных при отправке веб-сервером CGI-приложению параметров методом POST через STDIN. Как там кодируется поток...

Сайт CodeWars при проверке решения выдаёт ошибку, при проверке в VisualStudio ошибки нет
Задача написать метод,который будет проверять порядок круглых скобок. Написал код, проверил в Visual Studio, всё нормально. ...

При не совпадении данных в таблицах, при проверке/обновлении окно или форма с напоминанием и запросом? !
Добрый день, уважаемые специалисты и мастера своего дела. Необходима ваша помощь в решении вопроса сравнения двух таблиц и обновления...

Ошибка при проверке целлостности данных
Добрый день такой вопрос в поле Главной таблицы введена маска ввода:&quot;64:21:&quot;000000:9999;0;* В это поле ввожу 130101125. После ввода...

Ошибка при проверке совпадения данных
Здравствуйте! Столкнулся с ошибкой, которая состоит в том, что после проверки данных на совпадения с ключевым словом, оно попросту не...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru