嘿,我想使用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>
非常感谢任何帮助。
答案 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);