#php #forms #action
#php #формы #Экшен
Вопрос:
У меня есть файл .php, который я пытаюсь выполнить. Это упоминается в части «действие» html-формы.
По какой-то причине, когда форма отправляет, она открывает файл .php в браузере, как если бы это была html-страница (пустая).
В файле .php нет ничего необычного, но я не уверен, что он все равно доходит до его выполнения.
Мой открывающий тег формы выглядит следующим образом: <form action="my_script.php" method="post">
Чего мне не хватает ?…
Комментарии:
1. У вас установлен веб-сервер? Вызов PHP-скрипта из локальной файловой системы (проверьте адресную строку
file://
) не будет работать.2. Если вместо этого вы получаете действительно пустую страницу (просмотр исходного кода), затем поднимите
error_reporting
E_ALL
в php.ini или проверьте серверыerror.log
на наличие фатальных ошибок.3. Спасибо @Mario, я разобрался, что происходит (см. Комментарии ниже).
4. Я только что прочитал это на php.net , что может быть проблемой: адрес страницы (если таковая имеется), которая перенаправила пользовательский агент на текущую страницу. Это устанавливается агентом пользователя. Не все пользовательские агенты устанавливают это, а некоторые предоставляют возможность изменять HTTP_REFERER как функцию. Короче говоря, ему нельзя доверять.
5. Да, это было так. Я ввел абсолютный URL-адрес, и на этот раз все сработало нормально.
Ответ №1:
По всей вероятности, ваш скрипт выполняется. По умолчанию будут отправлены HTTP-заголовки, указывающие, что содержимое скрипта является HTML, следовательно, именно так ваш браузер будет его обрабатывать. Но если вы на самом деле не отправляете никаких выходных данных, они будут отображаться как пустая страница.
Если вы хотите, чтобы форма что-то делала, но не открывала новую страницу, возможно, вы могли бы использовать AJAX для отправки данных формы, не покидая страницу. В качестве альтернативы, вы могли бы просто добавить в конце скрипта
echo 'Finished :)';
чтобы вы знали, что он дошел до конца и, предположительно, что-то сделал.
Комментарии:
1. У меня была такая же мысль повторно. повторяя что-то в конце, и действительно, это помогло мне решить проблему (см. Мой Последний комментарий выше). Спасибо.
Ответ №2:
Когда вы отправляете форму, ваш браузер отправляет данные по URL, указанному action
атрибутом, как часть запроса для этой страницы.
Ваша страница at my_script.php
должна выводить некоторый HTML.
Если вместо этого вы видите свой PHP-код при просмотре исходного кода этой новой страницы, то PHP не настроен для анализа на сервере.
Комментарии:
1. Спасибо @Brad. Я не вижу свой php-код, просто пустое окно. Если я просматриваю исходный код, там тоже ничего нет, но тогда его все равно не должно быть. Предполагается, что php-скрипт установит cookie, а затем отправит вас обратно на предыдущую страницу с помощью
header( "Location: $HTTP_REFERER" );
. Это все, что там есть, но, как я уже сказал, я не уверен, что это заходит так далеко в любом случае — скрипт не запускается, он открывается ?…2. @matt: если вы получаете пустое окно, то, скорее всего, в вашем скрипте какая-то фатальная ошибка, и в вашем PHP отключены display_errors / error_reporting, поэтому сообщения об ошибках не отображаются.
Ответ №3:
euh … php
Используйте: http://www.apachefriends.org/en/index.html вместо того, чтобы открывать HTML-файл непосредственно в вашем браузере.