Загрузка PHP – Почему isset ($ _ POST ) всегда FALSE

У меня есть следующий пример кода upload3.php:

<html> <head> <title>PHP Form Upload</title> </head> <body> <form method='post' action='upload3.php' enctype='multipart/form-data'> Select a File: <input type='file' name='filename' size='10' /> <input type='submit' value='Upload' /> </form> <?php if (isset($_POST['submit'])) { echo "isset submit"; } else { echo "NOT isset submit"; } ?> </body> </html> 

Код всегда возвращает «NOT isset submit». Почему это происходит? Потому что тот же скрипт upload3.php называет себя?

Solutions Collecting From Web of "Загрузка PHP – Почему isset ($ _ POST ) всегда FALSE"

У вас нет кнопки отправки:
+ Изменить

 <input type='submit' value='Upload' /> 

Для того, чтобы:

 <input type='submit' value='Upload' name="submit"/> 

Две вещи:

При использовании массивов вы захотите попробовать array_key_exists вместо isset. PHP может иметь какое-то странное поведение при использовании isset в элементе массива.

http://www.php.net/manual/en/function.array-key-exists.php

if (array_key_exists ('submit', $ _POST) {}

Во-вторых, вам нужен атрибут имени на вашей кнопке («name =« submit »)

Потому что у вас нет элемента формы, name которого submit .

Попробуйте использовать var_dump($_POST) чтобы увидеть ключи, которые определены.

Обратите внимание, что файлы являются исключением; они не включены в $_POST ; они хранятся в файловой системе, и они являются метаданными (местоположение, имя и т. д.) в $_FILES .

Попробуйте посмотреть REQUEST_METHOD и посмотреть, есть ли это POST. Это немного лучше.

 <input type='submit' value='Upload' /> 

должно быть

 <input type='submit' value='Upload' name='subname'/> 

и это имя должно быть в $ _POST ['']

это будет выглядеть

 if (isset($_POST['subname'])) { echo "isset submit"; } else { echo "NOT isset submit"; }