我想根据所选的选项值重定向页面,如果我从选项标签中选择一个而不是重定向google.com页面,否则我选择了另一个选项,它将在gmail.com页面上重定向。我写这些代码但是如果我选择其他任何解决方案,它将重定向相同的值。
<?php
$package = isset($_GET['package_select']);
if ($package == 'one')
{
header("Location: http://google.com");
}
else if ($package == 'two')
{
header("Location: http://youtube.com");
}
?>
<html>
<body>
<form action="#" method="get" id="packageForm" >
<select name="package_select">
<option value="">Select package</option>
<option value="one">One listing</option>
<option value="two">Two listings</option>
</select>
<input id="submitButton" type="submit" value="Submit" />
</form>
</body>
</html>
答案 0 :(得分:2)
isset
将返回true
或false
,具体取决于是否设置了给定变量。所以当你这样做时:
$package = isset($_GET['package_select']);
$package
可以是true
或false
。
因此,当您将其与if ($package == 'one')
或else if ($package == 'two')
进行比较时,这些等值将永远无法正确实现。如果选择了one
或two
,那么$package == 'one'
将评估为true,因为true
在比较时等同于'one'
和'two'
使用==
,您将始终获得第一次重定向。
相反,您可以使用内置过滤器功能将$_GET['package_select']
的值分配给$package
,或者如果未设置null
,则分配$_GET['package_select']
值。 (只有在未提交表单的情况下才会出现这种情况。如果选择了空的“选择包”选项,则isset($_GET['package_select'])
仍会返回true
。)
$package = filter_input(INPUT_GET, 'package_select');
然后您的if
/ elseif
将正常运行,因为$package
可以包含one
或two
而不是bool。
答案 1 :(得分:0)
...试
if(isset($_GET['package_select'])){
if ($_GET['package_select'] == 'one')
{
header("Location: http://google.com");
exit;
}
else if ($_GET['package_select'] == 'two')
{
header("Location: http://youtube.com");
exit;
}
}
或者,更好......
if(isset($_GET['package_select'])){
switch($_GET['package_select']){
case('one'):{ header("Location: http://google.com"); exit; }
case('two'):{ header("Location: http://youtube.com"); exit; }
}
}