2013-04-29 4 views
0

У меня есть страница register.php. Я отправил данные через форму в файл php_register.php. этот файл проверяет, что форма действительна (электронная почта является реальной и такими вещами). Я хочу, что php_register.php будет делать свою работу и отправить клиенту обратно файл register.php в случае недопустимой форме:Как передать значения POST на страницу php

header("Location: register.php"); 

Я хочу, что php_register.php отправит дополнительные данные в register.php. в моем случае, я хочу отправить то, что пошло не так на вкладке. Я могу сделать это так:

header("Location: register.php?error=5"); 

Через register.php $_GET['error'] я могу отобразить правильный вывод. То, что я хочу сделать, это одно и то же, но вместо этого получить метод, использовать методы post (без каких-либо форм)? Как я могу это сделать?

+0

Добавить отправленные значения в $ _SESSION, это и может получить доступ на всей территории весь сайт. Не забудьте добавить session_start() в строке 1 – DarkBee

+0

Релевантно: http://programmers.stackexchange.com/questions/99894/why-doesnt-http-have-post-redirect –

ответ

3

Длинные и короткие, что вы не можете. Интернет не работает таким образом. Честно говоря, браузер мог даже игнорировать header, если он этого захочет (поэтому header должен, без исключения, следовать die, exit или какой-либо другой функции, которая заставляет завершить сценарий.).

Вы можете сохранить значения в $_SESSION, или вы можете получить его POST на той же странице, на которой находится форма (как это делают большинство фреймворков), но вы не можете сообщить браузеру «Отправить этот пост в другом месте «.

+0

http status status 307 - перенаправление с использованием того же метода/данные как исходный запрос. он будет перенаправлять сообщение должным образом. но это потенциально опасно для этого. –

+0

@MarcB Я этого не знал. – cwallenpoole

+0

обычно не используется, потому что POSTS обычно не должны повторяться. например «удалить последнего добавленного пользователя» может работать нормально в первый раз. перезагрузите эту страницу/переадресуйте через 2 часа, и вы, вероятно, будете убивать еще одного пользователя. –

0

Использование сессий, например, в php_register.php:

// start the session 
session_start(); 

// Email check (do a more robust check of course) 
if($_POST['email'] == "") 
{ 
    $_SESSION['error'] = "Please enter an email address." 
    header("Location: register.php"); 
    die(); 
} 

затем на register.php

// start session 
session_start(); 

if(isset($_SESSION['error'])) 
{ 
    echo $_SESSION['error']; 

    // unset now so it doesn't show again 
    unset($_SESSION['error']); 

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