Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP错误/成功重定向_Php_Exception Handling - Fatal编程技术网

PHP错误/成功重定向

PHP错误/成功重定向,php,exception-handling,Php,Exception Handling,我对PHP错误有相当的了解,我没有像以前那样使用或死亡,但我仍然不完全理解如何以非左上角纯文本的方式向用户传递致命错误消息 假设我有这个代码: try { $conn = new PDO("mysql:host=host; dbname=userDB", $username, $password); $stmt = $conn->prepare("UPDATE employee SET password = :newpass WHERE password = :tempPass");

我对PHP错误有相当的了解,我没有像以前那样使用或死亡,但我仍然不完全理解如何以非左上角纯文本的方式向用户传递致命错误消息

假设我有这个代码:

try {  
$conn = new PDO("mysql:host=host; dbname=userDB", $username, $password); 
$stmt = $conn->prepare("UPDATE employee SET password = :newpass WHERE password = :tempPass");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt->execute(array('tempPass' => $tempPass, 'newpass' => $newpassword));
echo'success!<br>';
echo"<a href='main_login.php'>Back</a>";

    }  
catch(PDOException $e) {  
        echo 'ERROR:   '. $e->getMessage();  
    }   
这一切都很好,但无论成功与否,这都是一个丑陋的肯定信息

我是否应该将我的用户重定向到其他页面以传递此消息

如果是,我应该如何将消息存储/传输到单个页面?我不想创建user_success.php、user_failure.php、user_epic_failure.php、every_other_case.php。这样做效率不高,而且限制了我的能力

我听说将这些消息存储到会话错误变量中是一种很好的方法,但这是最好的方法吗?是否应该有一个专门的错误页面和专门的成功页面,作为我传递消息的模板


我只想要漂亮的错误信息。有这么多问题吗?

永远不要向用户显示系统错误消息,这可能会给潜在的黑客提供有关您系统的信息。如果发生致命错误,请从catch子句重定向到通用错误页。
对于不会导致致命错误并停止代码执行的所有其他错误,只需继续执行代码,并在必要时在页面顶部显示错误消息。

创建一个输出漂亮错误消息并退出的函数,然后在需要的地方调用您的ErrorFunction'message here'?是的,只需将其存储到会话中即可。在任何可能显示错误的页面上,如果设置了$\u SESSION的值,则显示该值,然后取消设置该值,以便后续页面不再显示该值。我认为没有理由在出现错误的页面上显示错误。一般来说,我的大多数错误都是由于数据库中的错误数据、错误凭证或其他可能导致的硬件问题造成的。这意味着我的应用程序真的没有错,不能做任何事情。所以我觉得把它们放到另一个页面是最好的选择。我是不是被误导了?