【发布时间】:2016-06-10 06:12:33
【问题描述】:
我想做的是我认为会很简单的事情,如果我执行以下操作,但它只是为一个已经很大的项目添加了更多代码行,我认为我犯了一个错误.php 页面存储了用户可能遇到的所有错误类型,这将使错误系统变得简单,但事实并非如此。
让我举个例子来解释一下。
1) 用户登录时忘记密码
- URL 被重定向到
login?error=wpu -
error.php 页面有以下内容
<?php $denyaccess_nosession = "Sorry you tried to access a page that requires you to be login."; $wpu = "You have either entered a wrong email address, password or both. Please try again! <a href='forgot' title='ISOTE Forgot Details'>Click here if you forgot your login details</a>";?>
但我必须将以下内容放入 index.php 才能使其正常工作
if($_REQUEST['error']){
extract($_GET);
switch ($error) {
case 'wpu':
$smarty->assign('error',$wpu);
break;
default:
$smarty->assign('error',$denyaccess_nosession);
break;
}
}
else{
$smarty->assign('error',$denyaccess_nosession);
}
肯定有我们只是有 $error 并且它从 error.php 加载正确的错误
【问题讨论】:
-
我建议你实现一个 class
ErrorMessage或类似的,将这些消息实现为常量。这样您就可以简单地包含类实现(或自动包含它)并通过ErrorMessage::MESSAGE_WPU或类似方式访问消息。 -
在我看来,您希望 error.php 成为所创建目录的索引文件。情况并非如此,但可以使用包含以下内容的 .htaccess 文件进行配置:
DirectoryIndex error.php然而,这将导致登录页面也不是默认页面。完全链接到 /login/error.php?error=wpu 可能会更好
标签: php error-handling