gpt4 book ai didi

php - Codeigniter 检查 index.php 文件中是否已登录

转载 作者:行者123 更新时间:2023-11-29 23:00:05 26 4
gpt4 key购买 nike

我真的需要帮助,我两天前正在自己​​寻求解决方案,但没有结果。我需要检查用户是否已登录:

$CI =& get_instance(); $loggedIn = $CI->session->userdata('loggedin') == TRUE

如果 $loggedIn 为 true,则表示用户已登录。我需要在索引文件中检查这一点,因为我从中选择数据库:

$parsed = parse_url($_SERVER['REQUEST_URI']);
$path = $parsed['path'];
$path_parts = explode('/', $path);
$db = $path_parts[4];


if(isset($db) && is_numeric($db)){
define('DB', $db);
}

$db 是我的数据库的名称,所以如果我在登录页面中,就没有问题,因为它是在 url 中设置和数字的。但是当我登录时,我将这个 $db 存储在 session 变量中,所以我需要做这个测试:

if($this->session->userdata('loggedin') == TRUE){
define('DB', $this->session->userdata('db'));
}

我的数据库文件:

   $active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = '*********';
$db['default']['password'] = '*********';
$db['default']['database'] = DB;
$db['default']['dbdriver'] = 'mysql';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = FALSE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = TRUE;

最重要的问题是我需要通过网址使用不同的数据库。例如,如果用户输入此链接:/user/login/34,他将使用名为 34 的数据库。

我正在使用 codeigniter php 框架core/MY_Controller.php代码

class MY_Controller extends CI_Controller
{
public $data = array();
function __construct ()
{
parent::__construct();

$this->data['errors'] = array();
$this->data['app_name'] = config_item('app_name');
$this->load->helper('form');
$this->load->library('form_validation');
$this->load->model('user_m');

$db_prefix = 'autojahi_dev';
$config = array(
'hostname' => 'localhost',
'username' => '****',
'password' => '****',
'database' => '****',
'dbdriver' => 'mysql',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => 'cache',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'autoinit' => TRUE,
'stricton' => TRUE
);

if($this->uri->segment(4)){
$config['database'] = $this->uri->segment(4);
}

$this->load->database($config);
//$this->db->reconnect();//shouldnt be required but try it if there is problem
echo $this->db->database;//for testing


$current_link = uri_string();

// Algorithm of autojahiz access autorization

$allow_not_loggedin = array('login', 'logout', 'reset_pass', 'send_reset_pass_email', 'reset_pass_form', 'update_pass', 'views', 'invalid_link' );

switch (strtolower( $this->router->class ) )
{
case 'user':
$allow_loggedin = array('denied', 'index', 'edit', 'logout');
break;

case 'dashboard':
$allow_loggedin = array('denied', 'index');
break;
}

if ( $this->session->userdata('loggedin') == FALSE )
{
if (!in_array( $this->router->method, $allow_not_loggedin) )
{
redirect( 'user/login' );
}
}
else
{
if (!in_array( $this->router->method, $allow_loggedin ) )
{
//redirect( 'user/denied' );
}
}
}
}

最佳答案

在您的 Controller 中执行此操作。为了方便起见,您可以在 application/core 文件夹中创建一个名为 MY_Controller.php 的扩展文件,并将其扩展到您的 Controller ,例如

Other_controller 类扩展 MY_Controller{}

在application/core/MY_Controller.php中构造函数do..

class MY_controller extends CI_Controller{

public function __construct() {

parent::__construct();

$config = [
'hostname' => '',
'username' => '',
'password' => '',
'database' => 'defaultdb',
'dbdriver' => 'sqlsrv',
'dbprefix' => '',
'pconnect' => TRUE,
'db_debug' => TRUE,
'cache_on' => FALSE,
'cachedir' => APPPATH .'cache',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'autoinit' => TRUE,
'stricton' => FALSE
];

if($this->uri->segment(4)){
$config['database']=$this->uri->segment(4);
}

$this->load->database($config);

$this->db->reconnect();//shouldnt be required but try it if there is problem

echo $this->db->database;//for testing

}

关于php - Codeigniter 检查 index.php 文件中是否已登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28539982/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com