Помощь по PHP и HTML форме (POST + Redirect) - PullRequest
0 голосов
/ 28 октября 2009

HI,

Может ли кто-нибудь помочь

Мне нужно направить пользователя после отправки формы на другую страницу.

Как я мог это сделать?

<form enctype="multipart/form-data" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

Ответы [ 3 ]

1 голос
/ 28 октября 2009

Если вам нужна вещь POST + Redirect:

header('Location: ' . $nextUrl, true, 303);

сделает свое дело.

Пример кода :

<!-- form.html -->
<form method="post" action="postHandler.php">
  <input type="text" name="someName" value=""/>
  <input type="submit" name="submitButton">
</form>

// postHandler.php
if (isset($_POST['submitButton'])) {
  // do something with the posted data

  header('Location: submitOk.html', true, 303);
} else {
  header('Location: form.html', true, 303);
}

<!-- submitOk.html -->
<h1>Ok</h1>
<p>
  Your information was received
</p>
0 голосов
/ 28 октября 2009

В скрипте после успешного завершения POST:

header('Location: http://'.$_SERVER['HTTP_HOST'].'/finalpage.php', TRUE, 303);

Обратите внимание, что это должен включать абсолютный URL, а не только /finalpage.php; относительные URI в заголовке Location не разрешены HTTP RFC и не поддерживаются некоторыми браузерами. Кроме того, 303, строго говоря, более правильно, чем 302.

по умолчанию

Если вы хотите, чтобы редирект просто извлекал ту же страницу снова как GET, вы можете сделать:

header('Location: '.$_SERVER['PHP_SELF'], TRUE, 303);

Также:

action="<?php echo $_SERVER['PHP_SELF']; ?>"

небезопасен, потенциально может быть дырой в HTML-инъекции, ведущей к XSS. Все текстовые строки, выводимые в содержимое HTML или значения атрибутов, должны быть соответственно экранированы:

action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>"
0 голосов
/ 28 октября 2009

Укажите страницу в атрибуте action = "" формы (не используйте PHP_SELF).

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