表单提交时重定向用户

时间:2010-09-29 08:45:26

标签: php html forms

嘿,我想使用php将用户重定向到网址,具体取决于他们点击提交按钮后在表单中选择了哪些单选按钮。

到目前为止我有这个但是它不起作用所以它很无用。

        <?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 个答案:

答案 0 :(得分:1)

如果要重定向“提交时”,则需要使用JavaScript根据“无线电”状态更改提交URL。我建议你让服务器决定用户被重定向到哪个URL。

在服务器端执行以下操作:

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

但是(!!)检查URL是否有效,否则您将重定向到用户提交的任何URL。将国家名称作为单选按钮的“值”也是更好的风格。 E.g。

<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();

答案 1 :(得分:0)

使用位置标题重定向:

if ($Country == 'England') {
    header('Location: http://www.jamieburger.co.za');
}

答案 2 :(得分:0)

使用header()示例:

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

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

请务必将此代码放在页面顶部(任何 HTML标记之前)

答案 3 :(得分:0)

<?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>

答案 4 :(得分:0)

首先,表单的action参数应该是一个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中读取以从数据库重定向。

答案 5 :(得分:0)

        <?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>

答案 6 :(得分:0)

303重定向是专门为此设计的。简单地header('Location: http://');实际上发送了302,这在HTTP / 1.1中已被弃用了。这是我的所作所为:

header($_SERVER['SERVER_PROTOCOL'] . ' 303 See Other', true, 303);
header('Location: ' . $url);