当无法 select 数据库时,Codeigniter 重定向到自定义视图
Codeigniter redirect to custom view when Unable to select database
我正在尝试找到一种方法将我的 codeigniter 应用程序重定向到自定义 link (controller/method),只有在发生此错误时我才能自定义视图文件夹中的内容。
A Database Error Occurred
Unable to select the specified database: *******
Filename: core/Loader.php
Line Number: 347
我尝试自定义文件 errors/error_db.php,但这不是我想要的,因为该文件包含所有数据库错误,我想保持它完整,或者如果有在此文件中执行 if-else 的方法仅在发生此错误时重定向:"Unable to select the specified database"。
连接数据库时添加测试
$db = $this->database->load('...');
$connected = $db->initialize();
if (!$connected)
{
//load view, redirect....
}
将其替换为您的"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>
在我的例子中,应用程序是多租户的,具有不同数据库的相同代码库,在 URL 子域及其数据库之间有一个 link。因此在登录控制器中添加 mysqli_connect 以检查数据库是否存在,如果不存在则将用户重定向到注册页面。
我正在尝试找到一种方法将我的 codeigniter 应用程序重定向到自定义 link (controller/method),只有在发生此错误时我才能自定义视图文件夹中的内容。
A Database Error Occurred
Unable to select the specified database: *******
Filename: core/Loader.php
Line Number: 347
我尝试自定义文件 errors/error_db.php,但这不是我想要的,因为该文件包含所有数据库错误,我想保持它完整,或者如果有在此文件中执行 if-else 的方法仅在发生此错误时重定向:"Unable to select the specified database"。
连接数据库时添加测试
$db = $this->database->load('...');
$connected = $db->initialize();
if (!$connected)
{
//load view, redirect....
}
将其替换为您的"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>
在我的例子中,应用程序是多租户的,具有不同数据库的相同代码库,在 URL 子域及其数据库之间有一个 link。因此在登录控制器中添加 mysqli_connect 以检查数据库是否存在,如果不存在则将用户重定向到注册页面。