Php PDO错误处理,可以吗?
我将PDO与try和catch一起使用,以便将错误捕获到用户定义的函数中。我想知道这种方法是否可以接受 试一试:Php PDO错误处理,可以吗?,php,pdo,error-handling,Php,Pdo,Error Handling,我将PDO与try和catch一起使用,以便将错误捕获到用户定义的函数中。我想知道这种方法是否可以接受 试一试: Try { ... } catch (Exception $e) { // Proccess error $msg = $e->getMessage(); $timestamp = date("Y-m-d H:i:s"); $line = $e->getLine(); $code = $e->getCode();
Try
{
...
} catch (Exception $e) {
// Proccess error
$msg = $e->getMessage();
$timestamp = date("Y-m-d H:i:s");
$line = $e->getLine();
$code = $e->getCode();
handle_error($msg, $timestamp, $line, $code);
die("oops! It's look like we got an error here! Try Again!");
}
function handle_error($msg, $timestamp, $line, $code) {
$file = 'errorlog.txt';
$data = "$timestamp // Error Message: $msg | Error Code: $code | Error Line: $line \n";
file_put_contents($file, $data, FILE_APPEND);
return;
}
错误处理功能:
Try
{
...
} catch (Exception $e) {
// Proccess error
$msg = $e->getMessage();
$timestamp = date("Y-m-d H:i:s");
$line = $e->getLine();
$code = $e->getCode();
handle_error($msg, $timestamp, $line, $code);
die("oops! It's look like we got an error here! Try Again!");
}
function handle_error($msg, $timestamp, $line, $code) {
$file = 'errorlog.txt';
$data = "$timestamp // Error Message: $msg | Error Code: $code | Error Line: $line \n";
file_put_contents($file, $data, FILE_APPEND);
return;
}
谢谢我能想到的唯一错误是,如果某个用户偶然发现了触发PDO错误的方法,那么他基本上可以通过一次又一次地触发系统并用相同的错误填充硬盘来DDoS系统。更不用说它会耗尽你所有的磁盘I/O带宽(当利用它时)
再说一遍,Apache也有类似的日志记录,我还没有听说在DDoS攻击下硬盘被填满。您可以通过类似于此更改代码来简化日志编写
catch (PDOException $e) {
$my_error = "Failed;" . $e;
error_log(print_r($my_error,TRUE));
}
如果这样行,你是什么意思?在我看来,处理错误的方式取决于您自己。如果它有效,满足您的意图,并通过所有代码设计要求,那就没问题了。如果没有,那就不好了。我的意思是,这足够安全吗?对于一个真正的网站来说,这是一个不错的错误处理,或者我需要做些别的事情?好吧,它不会暴露任何明显的漏洞。你只是在写一个文本文件。那个文件在哪里?它可以通过网络服务器直接访问吗?我还在测试。我想把这个错误日志放在服务器上的某个地方,比如/var/logs/。不,我实际上把它拿回去了。Apache也做同样的日志记录,即使在DDoS下,您也不会填充整个HDD。记录那么多应该不是问题。很好,我会等待更多的评论。