根据所选的选项值

时间:2017-08-14 18:05:44

标签: php

我想根据所选的选项值重定向页面,如果我从选项标签中选择一个而不是重定向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>

2 个答案:

答案 0 :(得分:2)

isset将返回truefalse,具体取决于是否设置了给定变量。所以当你这样做时:

$package = isset($_GET['package_select']);

$package可以是truefalse

因此,当您将其与if ($package == 'one')else if ($package == 'two')进行比较时,这些等值将永远无法正确实现。如果选择了onetwo,那么$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可以包含onetwo而不是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; }
    }
}