我是PHP的新手,我想知道在index.PHP中显示错误的正确方法,但前提是有错误,否则它什么都不做。
页面index.php将表单发送到login.php,如果有错误,它会将错误返回到index.php,如下所示:
index.php?error=1
然后在索引中,我有下面的代码,但感觉页面变慢了
<?php
if ($_GET['error']==1){echo "We show error 1 ...";}
if ($_GET['error']==2){echo "We show error 2 ...";}
if ($_GET['error']==3){echo "We show error 3 ...";}
?>
如何以正确的方式修复?有些人使用if isset,但我不知道如何使用这个函数,它会给我错误
任何时候,如您在示例中所示,如果有重复,请尝试使用function
或存储array
。虽然你的代码可能不会慢很多,但试试这样的东西:
<?php
// List of errors. If you do it this way, you can keep
// adding errors without adding if/else
$error[1]= "We show error 1 ...";
$error[2]= "We show error 2 ...";
$error[3]= "We show error 3 ...";
// Check if set
if(isset($_GET['error']) && isset($error[$_GET['error']]))
echo $error[$_GET['error']];
?>
isset,但这也提供了一个向您介绍切换的机会。
if (isset($_GET['error'])) {
switch($_GET['error']) {
case 1:
echo "We show error 1...";
break;
case 2:
echo "We show error 2...";
break;
case 3:
echo "We show error 3...";
break;
}
}
不用使用不同的if,您可以将它们组合成一个开关。这类似于使用elseif,但更整洁(在我看来)。
isset
在PHP中从文档中确定变量是否已设置并且不是NULL。请参阅此处
这就是在您的案例中使用它的方法。
假设URL类似于index.php?error=1
然后你可以使用:
if( isset($_GET['error']) ){
if( $_GET['error'] == 1 ) {echo 'Error 1!';}
elseif( $_GET['error'] == 2 ) {echo 'Error 2!';}
elseif( $_GET['error'] == 3 ) {echo 'Error 3!';}
}
一旦出现任何错误代码,使用elseif
可以终止执行。例如,如果您有error=2
,它将不会检查error=3
是否因此使执行更快。但正如Scopey上面提到的,这种事情的执行时间差异实际上是你不必担心的。
希望这能有所帮助。非常感谢。