2009-09-03 24 views
0

我有一个名为Error.php的页面。通常使用查询字符串将变量传递给它,以便它将相应的消息显示给我已分配的错误代码。显示使用查询字符串但没有任何变量的页面

?例如:Error.php ID = 1

这里是我下面的网页的部分:

<?php 
if($_GET["id"] == "0") 
{ 
    echo "Display certain information..."; 
} 
elseif($_GET["id"] == "1") 
{ 
    echo "Display certain information..."; 
} 
elseif($_GET["id"] == "2") 
{ 
    echo "Display certain information..."; 
} 
elseif($_GET["id"] == "3") 
{ 
    echo "Display certain information...";  
} 
else 
{ 
    echo "Display certain information..."; 
} 
?> 

所有信息工作正常,但唯一的问题是,如果没有查询字符串(将其保留为“Error.php”),它会显示错误,说明“未定义的索引:id在.....”。有没有办法让Error.php不可访问,除非有一个查询字符串?如果我的代码语法不正确,我很抱歉,我对PHP很陌生。谢谢。

回答

3

使用array_key_exists()来检查,看看它的存在:

<?php 

if(array_key_exists("id", $_GET)) 
{ 
    if($_GET["id"] == "0") 
    { 
     echo "Display certain information..."; 
    } 
    elseif($_GET["id"] == "1") 
    { 
     echo "Display certain information..."; 
    } 
    elseif($_GET["id"] == "2") 
    { 
     echo "Display certain information..."; 
    } 
    elseif($_GET["id"] == "3") 
    { 
     echo "Display certain information...";  
    } 
    else 
    { 
     echo "Display certain information..."; 
    } 
} 
else 
{ 
    // no query id specified, maybe redirect via header() somewhere else? 
} 

?> 
+0

当我尝试,我得到了一个错误: 致命错误:调用未定义功能array_has_key() – user 2009-09-03 08:38:24

+0

对不起,想起了函数名不正确了我的头顶。我已经编辑了正确的函数来使用答案。 :) – Amber 2009-09-03 08:40:24

+0

谢谢。我最终使用最后的else语句来引用回主页。非常感谢你! – user 2009-09-03 08:47:52

0

这消息是不是一个错误,但通知。您可以禁用Web应用程序中的通知消息,建议在进入生产服务时进行通知消息(在开发过程中可以正常使用)。

您可以通过设置在php.ini error_reporting这样做不包括E_NOTICE

1

你应该如果变量在使用它之前存在,或者与issetarray_key_exists第一个测试:

if (isset($_GET['id'])) { 
    // $_GET['id'] exists 
    // your code here 
} else { 
    // $_GET['id'] does not exist 
} 
0

你应该使用isset来检查数组$ _GET中是否设置了键'id'。对于简单的字符串查找,您应该使用数组而不是if-then-else并切换。

$errorMessages = array(
    "0" => "Display certain information..."; 
    "1" => "Display certain information..."; 
    "2" => "Display certain information..."; 
    "3" => "Display certain information..."; 
); 

if (!isset($_GET['id']) || !isset($errorMessages[$_GET['id']])) { 
    $message = 'No predefined error message'; 
    //or redirect 
} else { 
    $message = $errorMessages[$_GET['id']]; 
} 
echo $message; 
相关问题