PHP формы - «получить» работает, но «пост» не - PullRequest
0 голосов
/ 17 марта 2012

У меня есть простая форма регистрации.Я искал несколько часов и перепробовал все - в основном я сократил его до публикации / получения.Когда я устанавливаю метод для получения (как на странице формы, так и на странице скрипта), он работает нормально, когда я устанавливаю его для публикации, я получаю эту ошибку:

Недопустимо

Anсоответствующее представление запрошенного ресурса /tmp/register.php не может быть найдено на этом сервере.Кроме того, при попытке использовать ErrorDocument для обработки запроса возникла ошибка 404 Not Found.

Вот мой код на странице формы:

<form id="registration" onsubmit="return validateRegistration();" action="register.php" method="post">
    Name:     <input type="text" id="name" name="name" placeholder="Required">
    <br>
    Email:    <input type="email" id="email" name="email" placeholder="Required">
    <br>
    Confirm:  <input type="email" id="confirm_email" autocomplete="off" placeholder="Required">
    <br>
    Password: <input type="password" id="password" name="password" placeholder="Required">
    <br>
    Confirm:  <input type="password" id="confirm_password" autocomplete="off" placeholder="Required">
    <br>
    City:     <input type="text" id="city" name="city" placeholder="Optional">
    <br>
    Country:  <input type="text" id="country" name="country" placeholder="Optional">
    <br>
    <br>
    <hr>
    <a href="#">Terms and Conditions</a>
    <br>
    <input type="submit" value="Accept and Complete Registration">
</form>

И на моемстраница скрипта (register.php), у меня есть:

<?php
    echo "Name: " . $_POST["name"] . "<br>";
    echo "Email: " . $_POST["email"] . "<br>";
    echo "Password: " . $_POST["password"] . "<br>";
    echo "Location: " . $_POST["city"] . ", " . $_POST["country"] . "<br>";
?>

Если я просто перейду к register.php, он просто показывает пробелы в месте, где находятся сообщения, но если я отправляю форму, это выдает ошибку «Не принимается 406».

Может кто-нибудь помочь мне с этим?Я совершенно ошеломлен.Спасибо

Ответы [ 5 ]

3 голосов
/ 07 октября 2012

Я не знаю, нашел ли ты когда-нибудь ответ на свою проблему.Я тоже столкнулся с этой проблемой, когда POST не возвращал абсолютно никаких данных, но GET работал без ошибок.

Странная часть моей проблемы заключалась в том, что она была ТОЛЬКО на одном из сайтов.Все сайты находятся на одном сервере.

Примерно через 3 часа церемониального избиения моего лица клавиатурой я понял.Один сайт, который не работал, я установил кодировку URL, чтобы всегда удалять "www".Мое решение состояло в том, чтобы заставить URL всегда добавлять «www», и проблема исчезла.

1 голос
/ 07 октября 2012

Существует еще одна возможность, которая еще не упоминалась, а именно: .htaccess

В некоторых случаях .htaccess устанавливается либо для перенаправления, либо для блокировки POST, который не будет перехватывать и блокировать или маршрутизировать GET.

Если вы можете перейти на страницу (что, как вы говорите, можете), но POST никогда не попадет туда, тогда что-то блокирует ее, и единственное, что мешает - это платформа веб-сервера, которую вы используете.

Вы упомянули ранее, что используете хостинг-провайдера, поэтому спросите их, какие правила они устанавливают для запросов POST (вам, вероятно, придется немного подождать, пока кто-нибудь сможет ответить на вопрос), или Вы можете проверить это немного из командной строки с помощью wget

wget --post-data 'name=test' http://server.com/tmp/register.php
0 голосов
/ 22 сентября 2016

Получить данные поста по $HTTP_RAW_POST_DATA вместо $_POST.Надеюсь, это поможет.

0 голосов
/ 10 февраля 2014

Я использовал ckeditor для нескольких полей textarea в форме и получал ту же ошибку ...

Я попробовал все .. как, например, использовать get вместо post, поиграть в мод-ценные бумаги и многое другое, что бы я ни думал ...

но, наконец, я заработал, когда убрал ckeditor из нескольких полей ... теперь он работает отлично ...

может быть, некоторые поля в вашем коде генерируют некоторый целостной код, который браузер / сервер рассматривает как инъекцию SQL-запросов и поэтому блокирует страницу напрямую.

найди этот код ...

0 голосов
/ 18 марта 2012

Код ошибки говорит, что ищет файл на /tmp/register.php. Это верно? Возможно, измените действие формы на /register.php?

Кроме того, ваш PHP выглядит немного не так (много лишних кавычек), но я предполагаю, что вы просто скопировали / вставили из файла php и по какой-то причине удалили окружающий HTML?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...