Перенаправить пользователя после отправки формы - PullRequest
0 голосов
/ 29 сентября 2010

Эй, я хочу использовать php, чтобы перенаправить пользователя на URL в зависимости от того, какие переключатели были выбраны в форме после нажатия кнопки отправки.работать так, что это довольно бесполезно.

        <?php // variables form form
        $Country = $_POST['Country'];
        ?>

        <form action="<?php print $Country ?>" method="post">
        <input name="Country" type="radio" value="http://www.istockphoto.com" /> South Africa<br />
        <input name="Country" type="radio" value="http://www.jamieburger.co.za" /> England<br />
        <input name="" type="submit" value="Submit"/>
        </form>

Любая помощь будет принята с благодарностью.

Ответы [ 7 ]

1 голос
/ 29 сентября 2010

Если вы хотите перенаправить «при отправке», вам нужно использовать JavaScript, чтобы изменить URL отправки в зависимости от вашего состояния «радио». Я предлагаю вам позволить серверу решить, на какой URL перенаправляется пользователь.

Просто сделайте следующее на стороне сервера:

header("Location: ".$Country);
exit();

НО (!!) проверьте правильность URL-адреса, в противном случае вы будете перенаправлены на любой URL-адрес, отправленный пользователем. Было бы лучше иметь название страны в качестве значения для вашего переключателя. Э.Г.

<input type="radio" name="Country" value="Germany">Germany</input>

Затем вы можете использовать следующий код для перенаправления:

$country = $_POST['Country'];
switch($country) {
  case 'Germany':
      $url = "http://country/germany";
  case 'England':
      $url = "http://country/england";
  default:
      $url = "http://country/invalid";
}

header("Location: ". $url);
exit();
0 голосов
/ 29 сентября 2010

Перенаправление 303 было разработано специально для этого.Просто header('Location: http://'); на самом деле отправляет 302, что в HTTP / 1.1 устарелоВот что я делаю:

header($_SERVER['SERVER_PROTOCOL'] . ' 303 See Other', true, 303);
header('Location: ' . $url);
0 голосов
/ 29 сентября 2010
        <?php // variables form form
        if (!empty($_POST['Country']) {
            header('location: ' . $_POST['Country']);
        }
        ?>

        <form action="" method="post">
        <input name="Country" type="radio" value="http://www.istockphoto.com" /> South Africa<br />
        <input name="Country" type="radio" value="http://www.jamieburger.co.za" /> England<br />
        <input name="" type="submit" value="Submit"/>
        </form>
0 голосов
/ 29 сентября 2010

Во-первых, параметром действия формы должен быть URL-адрес, либо абсолютный, либо относительный, хотя обычно относительный.

<form action='process.php?action=country'>

// submit to the same calling page
<form action='?action=country'>

Вы используете неверный механизм для перенаправления. Действие формы - это то, куда данные отправляются после отправки формы. Поскольку вы отправляете на ту же страницу, вы можете просто использовать «?» как ваше действие, или $_SERVER['PHP_SELF']. Чтобы перенаправить на другую страницу на основе условия, use header(), как указано другими.

<?php

$country = $_POST['Country'];

// redirect    
 header("Location: $Country");
exit();
?>

Примечание: лучше кодировать URL-адреса в массиве и использовать индекс переключателя, чтобы выбрать правильный URL-адрес для перенаправления. Это также облегчает чтение в URls для перенаправления из БД.

0 голосов
/ 29 сентября 2010
<?php 
    $country = $_POST['Country'];
    if (!empty($country))
      header( 'Location: '.$country ) ;
?>

<form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
  <input name="Country" type="radio" value="http://www.istockphoto.com" /> South Africa<br />
  <input name="Country" type="radio" value="http://www.jamieburger.co.za" /> England<br />
  <input name="" type="submit" value="Submit"/>
</form>
0 голосов
/ 29 сентября 2010

использование header() Пример:

<?php
if (isset($_POST['Country'])) header('Location: $_POST['Country']');
?>

http://php.net/manual/en/function.header.php

Не забудьте поместить этот код в самый верх страницы (перед любым HTML-тегом) * +1010 *

0 голосов
/ 29 сентября 2010

Перенаправление с использованием заголовка местоположения:

if ($Country == 'England') {
    header('Location: http://www.jamieburger.co.za');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...