Php 根据所选选项值重定向页面的步骤

Php 根据所选选项值重定向页面的步骤,php,Php,我想根据所选选项值重定向一个页面,如果我从选项标签中选择一个选项,那么它将重定向到google.com页面,否则我选择了另一个选项,它将重定向到gmail.com页面。我编写了这些代码,但如果我选择了另一个选项,它将重定向相同的值—任何解决方案 <?php $package = isset($_GET['package_select']); if ($package == 'one') { header("Location: http://google.com"); } else

我想根据所选选项值重定向一个页面,如果我从选项标签中选择一个选项,那么它将重定向到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>

选择包
一个清单
两个列表
试试

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; }
    }
}

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

$package = isset($_GET['package_select']);
$package
将为
true
false

因此,当您将其与
if($package=='one')
else if($package=='two')
进行比较时,这些等式将永远无法正确实现。如果选择了
one
two
,则
$package=='one'
将计算为true,因为
true
在使用
=='code>进行比较时等于
'one'
'two'
,并且您总是会得到第一个重定向


相反,您可以使用内置的筛选函数将
$\u GET['package\u select']
的值分配给
$package
,如果未设置
$\u GET['package\u select']
,则可以使用
null
值。(只有在未提交表单时才会出现这种情况。如果选择了空的“选择包”选项,则
isset($\u GET['package\u Select'])
仍将返回
true


那么你的
if
/
elseif
将正常工作,因为
$package
可以包含
一个
两个
而不是一个bool。

isset($\u GET['package\u select'])
将始终被视为已设置。@Fred ii-除非表单尚未提交,对吗?@Don t'tPanic Kind/sort;-)有趣的是,
if
可以做什么呢?当然可以,但是你能解释一下为什么它们的语法一开始就失败了吗?这是你知道的一个原因。最好添加
exit在每个标题之后。这是一个很好的观点,@Fred ii-。我将更新答案以反映最佳实践。
$package = filter_input(INPUT_GET, 'package_select');