2012-02-18 61 views
1

我正在构建一个大型的Web应用程序,我需要一个体面的系统来向用户显示错误(使用PHP和非侵入式JavaScript)。到目前为止,当检测到错误时,应用程序将重定向到error.php页面,并根据链接显示一条消息。如何以正确的方式向用户显示错误?

例如,如果用户在accountCreation.php提交一个表单空白,则它重定向到www.example.com/error/FIELD_IS_EMPTY,然后error.php检索要显示的消息并打印,这样的:

switch ($_GET['message']) { 
case 'FIELD_IS_EMPTY': 
    echo "You can't leave the field blank."; 
    break; 

case 'TOO_LONG': 
    echo "Text must be shorter than 128 characters."; 
    break; 

default: 
    break; 
} 

至少它的工作原理,但我不知道这是否是一种可扩展的方式。此外,如果有人输入www.example.com/error/FIELD_IS_EMPTY,即使用户从未提交表单,也会显示错误。有没有人有任何建议如何正确地做到这一点?谢谢!处理错误

+0

http://stackoverflow.com/questions/8438022/php-redirection-not-working – 2012-02-18 09:48:03

+1

严格来说可能重复这不是错误,而是常规邮件。所以,我认为在任何地方重定向用户都没有意义。 – 2012-02-18 09:48:38

+0

然后你会怎么做? – federicot 2012-02-18 09:49:39

回答

-1

最好的办法是

  1. 404,505,303个相关的错误,你可以重定向到一个标准的错误页面。它根据错误状态动态处理错误消息
  2. 与字段信息相关的错误,错误的条目和即将出现的错误。把它们放在同一页面上并在那里显示。
+0

为什么重定向?发送301和503的时候有什么意义? – 2012-02-18 09:51:15

+0

@ Col.Shrapnel:用于显示自定义错误消息,它是最好的方法。而不是默认消息。 – 2012-02-18 09:56:54

+0

如果您能够发送HTTP标头,您也可以发送自定义错误页面。所以,这个问题再次 - 为什么重定向? – 2012-02-18 10:09:31

-1

有你这样想阻止一个简单的方法,直接访问这个页面:如果用户填写表单创建一个常数(如$_SESSION['formComplete'] = true;),并在你要控制的误差放页面脚本检查常量是否设置,否则重定向到另一个页面。这里有一个例子:

if(empty($_SESSION['formComplete'])) { 
    header("location:index.php"); 
    die(); 
} 
相关问题