我无法弄清楚为什么这个脚本无效。
<?php
if (($_GET['p'] != 'index') &&
($_GET['p'] != 'reg') &&
($_GET['p'] != 'login') &&
($_GET['p'] != 'ad') &&
(!isset($_GET['p']))):
?>
<?php endif; ?>
如果未设置$ _GET,我想不显示错误页面,根据我的经验(!isset($_GET['p'])
)应该这样做。
答案 0 :(得分:5)
如果未设置$_GET['p']
,则无法检查$_GET['p'] != 'index'
和所有其他人。你必须先检查它是否先设置好:
<?php if(
! isset( $_GET['p'] ) ||
($_GET['p'] != 'index' &&
$_GET['p'] != 'reg' &&
$_GET['p'] != 'login' &&
$_GET['p'] != 'ad')
): ?>
更好的解决方案是将所有这些值放在一个数组中,并检查数组中是否有$_GET['p']
:
<?php if(
! isset( $_GET['p'] ) ||
! in_array(
$_GET['p'],
array('index', 'reg', 'login', 'ad')
)
): ?>
修改强>
现在您提供了更多信息,以下是您应该做的事情:
if ( ! isset($_GET['p']) )
{
// We're at the index page, so don't display anything
}
else
{
if ( in_array( $_GET['p'], array('index', 'reg', 'login', 'ad') ) )
{
// Display your content window
}
else
{
// $_GET['p'] is not a valid value, display error
}
}
答案 1 :(得分:4)
你的病情毫无意义。您正在检查$_GET['p']
的3个可能值,然后检查$_GET['p']
是否已设置。扭转你的逻辑:
<?php
if(isset($_GET['p']))
{
// display error page
}
else
{
// do something else
}
答案 2 :(得分:2)
您可以检查$ _GET ['p']是否由
设置if(isset($_GET['p']) {...}
如果已设置且不为空,则可以检查需要检查的值。
答案 3 :(得分:0)
试试这个:
<?php
$defaultvalue=0; // for example 0
$p=isset($_GET["p"]) ? $_GET["p"] : $defaultvalue;
if(($p != 'index') && ($p != 'reg') && ($p != 'login') && ($p != 'ad')):
?>