<?php
$whitelist = array('contact', 'about', 'user');
$_GET['page'] = array('contact');
$test = $_GET['page'];
if(isset($test))
{
if(in_array($whitelist, $test))
{
$got = $test;
echo $got;
}
else
{
$got = 'home';
echo $got;
}
}
?>
现在,我应该将结果视为“联系”,但我正在'回家'。那是为什么?
答案 0 :(得分:3)
in_array第一个参数应该是针(意思是:你在寻找什么),第二个应该是haystack(意思是:我们在寻找的地方)。
我认为你颠倒了那些,以及needl应该是字符串(或其他变量类型),但不是数组。
所以你的脚本应该是这样的:
<?php
$whitelist = array('contact', 'about', 'user');
$test = 'contact';
if(isset($test))
{
if(in_array($test, $whitelist))
{
$got = $test;
echo $got;
}
else
{
$got = 'home';
echo $got;
}
}
?>
答案 1 :(得分:3)
因为白名单是一个字符串数组,$ _GET ['page']是一个数组,而不是一个字符串。而且你的参数也是错误的。
答案 2 :(得分:0)
<?php
$whitelist = array('contact', 'about', 'user');
$_GET['page'] = 'contact';
$test = $_GET['page'];
if(isset($test))
{
if(in_array($test, $whitelist))
{
$got = $test;
echo $got;
}
else
{
$got = 'home';
echo $got;
}
}
?>