2016-09-13 3 views
3

Я пробовал почти все решения, связанные с пустым $ _POST после отправки формы в переполнение стека, но ни одна из них не решила мою проблему. Я использую wamp-сервер и использую phpstorm.

  • изменил значение post_max_size и upload_max_filesize в php.ini
  • $ _GET работает отлично
  • пытались использовать другой язь и редактор
  • Исети возвращает ложь
  • var_dump показывает, что массив пуст
  • изменен метод = "пост" на метод = "POST"
    Мой код:
    main.html

    <html> 
    <body> 
    <form action="welcome.php" method="post"> 
    Name: <input type="text" name="name"><br> 
    E-mail: <input type="text" name="email"><br> 
    <input type="submit"> 
    </form> 
    </body><br> 
    </html> 
    

    welcome.php

    <html> 
    <body> 
    Welcome <?php echo $_POST["name"]; ?><br> 
    Your email address is: <?php echo $_POST["email"]; ?> 
    </body> 
    </html>` 
    

ошибки -

Добро пожаловать

Примечание: Undefined индекс: имя в
C: \ User s \ пользователь \ PhpstormProjects \ tryphp \ welcome.php в строке 4

Ваш адрес электронной почты:

Примечание: Undefined индекс: электронная почта в
C: \ Users \ Пользователь \ PhpstormProjects \ tryphp \ welcome.php в строке 5

+0

проверить вкладку сети браузера, чтобы узнать, отправлены ли параметры сообщения на сервер –

+0

Работает отлично. Убедитесь, что у вас есть оба файла (main.html и welcome.php) в одной папке. – Sunny

+0

У вас есть буква 'P' в директиве' variables_order' в php.ini? Вы пытались использовать var_dump ($ _ REQUEST); 'и' var_dump (file_get_contents ('php: // input')); '? –

ответ

0

В welcome.php добавить в первой строке:

var_dump($_POST); 

, чтобы проверить, является ли ваше сообщение пустым ...

+4

Это скорее комментарий и не предлагает никакого решения вопроса OPs! –

+0

Ну, решение это конечный лист в нашем дереве. Но для достижения этого нам нужно знать некоторые детали. В этой ситуации, если почта пуста, проблема не в файле приветствия и должна проверить в main.html или в конфигурации сервера ... –

+0

вывод 'var_dump ($ _ REQUEST);' is array (0) {} – user6275035

0

Из быстрого теста ваш код работает как на моем сервере.

Запуск через файл PHP конфигурации (/etc/php5/apache2/php.ini) Я нашел эти предметы, которые могут быть стоит исследовать

; Whether PHP will read the POST data. 
; This option is enabled by default. 
; Most likely, you won't want to disable this option globally. It causes $_POST 
; and $_FILES to always be empty; the only way you will be able to read the 
; POST data will be through the php://input stream wrapper. This can be useful 
; to proxy requests or to process the POST data in a memory efficient fashion. 
; http://php.net/enable-post-data-reading 
;enable_post_data_reading = Off 

Так что в вашем php.ini и поиск enable_post_data_reading, если вы не можете найти его, поместите его в ручном режиме (обычно в конце файла) и убедитесь, что он на

enable_post_data_reading = On 

Моя версия информация:

PHP 5.5.9-1ubuntu4.17 (cli) (built: May 19 2016 19:05:57) 
Copyright (c) 1997-2014 The PHP Group 
Zend Engine v2.5.0, Copyright (c) 1998-2014 Zend Technologies 
with Zend OPcache v7.0.3, Copyright (c) 1999-2014, by Zend Technologies 

Если вы все еще ничего не получили, посмотрите на свой журнал доступа.Он должен показать запрос POST, поступающий на ваш сервер;

255.255.255.255 - - [13/Sep/2016:10:16:00 -0400] "POST /stackoverflow/welcome.php HTTP/1.1" 200 1226 "http://255.255.255.255/stackoverflow/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/255.255.255.255 Safari/537.36" 

(Игнорировать данные IP-адрес, я редактировал его, чтобы защитить свой сервер :))

Если он не отображается запрос POST, то то будет одно место, чтобы начать.

Также вы можете нажать F12 в своем браузере (или ctrl + shift + i), чтобы открыть консоль отладки, щелкнуть по сети (вверху). Будьте в форме, нажмите кнопку отправки, и вы увидите сеть просьба выйти. Нажмите на нее, нажмите «заголовки», прокрутите вниз и посмотрите информацию, которую ваш браузер фактически отправляет на сервер.

Надеюсь, что-то в этом лотерее поможет вам. Дайте нам знать, пожалуйста :)

+1

без изменений enable_post_data_reading = On. – user6275035

+1

Я могу видеть правильные данные формы в разделе заголовков, но $ _POST по-прежнему пуст в welcome.php – user6275035

+1

В журнале доступа нет POST, только GET. Возможно ли, что все запросы POST преобразуются в GET? – user6275035

0

Ваш код должен работать, если вы дадите какой-либо ввод в этих полях. Проверьте это, Имя кнопки отправки и onsubmit этой кнопки форма будет перейти к Welcome.php

Main.html

<html> 
<body> 
    <form action="welcome.php" method="POST"> 
     Name: <input type="text" name="name"><br> 
     E-mail: <input type="text" name="email"><br> 
     <input type="submit" name="submitForm"> 
    </form> 
</body> 
</html> 

welcome.php

<html> 
<body> 
    <?php 
    $name = ""; 
    $email = ""; 
    if (isset($_POST["submitForm"])) { 
     $name = $_POST["name"]; 
     $email = $_POST["name"]; 
    } 
    ?> 
    Welcome <?php echo $name; ?><br> 
    Your email address is: <?php echo $email; ?> 
</body> 
</html> 

И тогда исчезнет ваша ошибка если поля тоже пустые.

Если это не работает, значит, ваш welcome.php находится не в той же папке main.html. Проверьте, что ..

Смежные вопросы