我正试图找到一种方法,将我的代码点火器应用程序重定向到一个自定义链接(控制器/方法),只有当发生此错误时,我才能在其中自定义视图文件夹中的内容。
A Database Error Occurred
Unable to select the specified database: *******
Filename: core/Loader.php
Line Number: 347
我试图自定义文件errors/error_db.php,但这不是我想要的,因为该文件包括所有数据库错误,我想保持它的完整性,或者如果有办法在该文件中执行if-else,仅在出现以下错误时重定向:"无法选择指定的数据库"。
将其替换为"errors/error_db.php"
注意,重定向函数需要已经加载url库。
<!DOCTYPE html>
<html lang="en">
<head>
<title>Database Error</title>
<style type="text/css">
::selection{ background-color: #E13300; color: white; }
::moz-selection{ background-color: #E13300; color: white; }
::webkit-selection{ background-color: #E13300; color: white; }
body {
background-color: #fff;
margin: 40px;
font: 13px/20px normal Helvetica, Arial, sans-serif;
color: #4F5155;
}
a {
color: #003399;
background-color: transparent;
font-weight: normal;
}
h1 {
color: #444;
background-color: transparent;
border-bottom: 1px solid #D0D0D0;
font-size: 19px;
font-weight: normal;
margin: 0 0 14px 0;
padding: 14px 15px 10px 15px;
}
code {
font-family: Consolas, Monaco, Courier New, Courier, monospace;
font-size: 12px;
background-color: #f9f9f9;
border: 1px solid #D0D0D0;
color: #002166;
display: block;
margin: 14px 0 14px 0;
padding: 12px 10px 12px 10px;
}
#container {
margin: 10px;
border: 1px solid #D0D0D0;
-webkit-box-shadow: 0 0 8px #D0D0D0;
}
p {
margin: 12px 15px 12px 15px;
}
</style>
</head>
<body>
<div id="container">
<h1><?php echo $heading; ?></h1>
<?php
$pos = strpos($message, "Unable to select the specified database");
if ($pos === false) {
echo $message;
}else{
redirect("controller/method");
}
?>
</div>
</body>
</html>
只需在连接到数据库时添加一个测试
$db = $this->database->load('...');
$connected = $db->initialize();
if (!$connected)
{
//load view, redirect....
}
在我的例子中,应用程序是多租户的,相同的代码库和不同的数据库,在URL子域和数据库之间有一个链接。因此,在登录控制器中添加了mysqli_connect来检查数据库是否存在,如果不存在,则将用户重定向到注册页面。