肮脏的修复:
function error($error, $location, $seconds = 5)
{
$urlToRedirect = $location . '?error_message=' . urlencode($error) ;
header('Location: ' . $urlToRedirect);
exit;
}
更好的解决方案是为错误消息创建一个数组,如下所示:
$errorMessages = array(
'incorrect_login' => 'Incorrect login credentials.',
'restricted' => 'Restricted page.'
);
然后重写您的错误函数并删除 seconds 参数,因为您不再使用刷新(就个人而言,我也会删除 location 参数,以便所有错误重定向都指向同一页面):
function error($error, $location)
{
$urlToRedirect = $location . '?error_message=' . $error ;
header('Location: ' . $urlToRedirect);
exit;
}
然后,像这样调用函数:
error('restricted', 'error.php');
然后,在您要显示错误的页面上:
if(isset($_GET['error_message']) && array_key_exists($_GET['error_message'], $errorMessages)){
echo $errorMessages[$_GET['error_message']];
}