English 中文(简体)
检测 CoDIgniter 无法连接到 Db 时
原标题:Detect when CodeIgniter fails to connect to a Db

我有一个 CI 实例, 它连接到 DB 并检查使用页面前的权限。 如果当前用户无法访问该页面, 它会重定向到登录页面 。

登录页面显然设置了权限,以便所有用户都可以访问。

最近发生故障后,数据库服务器又回到另一个IP地址(谢谢亚马逊,EC2)上,这导致 CI 无法检查任何页面的权限 - 包括登录。 由于代码假设“ 是” 以外的东西为“ 否 ”, 因此它被重定向到“ 登录” 。 结果是一个无限的重定向循环 。

虽然这个确切的问题不应该再发生(静态弹性 IP), 但我想在 Db 连接下降时发现, 并妥善处理它 。

我见过"https://stackoverflow.com/a/3785984/156755>>>这个SO问题 ,这是我想实现的目标,但我并没有在任何控制器中明确装入数据库,而是在自动装入配置文件中。

那么,

我怎样才能从CI内部查询DB连接的状态?我是否必须运行一个无效的查询,检查我是否得到结果,或者是否有更优雅的解决方案?

编辑: 检查目前正在钩子中进行 :

$hook[ post_controller_constructor ] = array(
                                 class     =>  AuthHook ,
                                 function  =>  ValidateCredentials ,
                                 filename  =>  auth.php ,
                                 filepath  =>  hooks 
                                );
最佳回答

“他们”因为代码假设除“是”是“否”以外的任何东西,它被重新定位为“登录”。“/他们”

因此您只需要更改登录逻辑函数, 就可以具体检查 DB 连接( 这样仍然自动装入数据库 ) 。

使用类似

 $result = $this->db->conn_id;  
问题回答

您可以扩展控制器并在数据库的构建器中装入数据库:

    class My_Controller extends CI_Controller {
        public function __construct(){
            parent::__construct();
             if ( $this->load->database() === FALSE )
             {
                //do something
             }
         }
     }

您的所有控制器将继承新的控制器 。





相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签