Codeigniter PHP-全局变量

Codeigniter PHP-全局变量,codeigniter,Codeigniter,我试图根据登录网页的用户动态设置数据库连接凭据。我很确定它不起作用,因为没有定义$connectdb变量。有人能检查一下我的代码并试着让它工作吗?谢谢 <?php if ( ! defined('BASEPATH')) exit('No direct script access allowed'); $connectdb=""; class Main extends CI_Controller { function __construct() { parent:

我试图根据登录网页的用户动态设置数据库连接凭据。我很确定它不起作用,因为没有定义
$connectdb
变量。有人能检查一下我的代码并试着让它工作吗?谢谢

<?php  if ( ! defined('BASEPATH')) exit('No direct script access allowed');

$connectdb="";
class Main extends CI_Controller {
    function __construct() {
        parent::__construct();

        echo $connectdb;
        $this->load->database($connectdb);
        $this->load->helper('url');
        $this->load->library('grocery_CRUD');
    }

    public function index() {
        if ($_POST["username"] == "root") {
            global $connectdb="default";
        }

        if ($_POST["username"] == "user1") {
            global $connectdb="user1";
        }

        if ($_POST["username"] == "user2") {
            global $connectdb="user2";
        }

        $connect = @mysql_connect("localhost", $_POST["username"],      $_POST["password"]);//won't display the warning if any.
        if (!$connect) {
            echo 'Server error. Please try again sometime. CON';
        } else {
            print("<a href=\"http://v-admindb/ci/index.php /main/employees?username=".$_POST["username"]."\">Employees</a>");
            echo "<br>";
            print("<a href=\"http://v-admindb/ci/index.php/main/visitors?username=".$_POST["username"]."\">Visitors</a>");
        }//Just an example to ensure that we get into the function
    // LOAD LIBRARIES
    }

    public function employees() {
        $this->grocery_crud->set_table('employees');
        $output = $this->grocery_crud->render();
        $this->_example_output($output);
    }

    public function visitors() {
        $this->grocery_crud->set_table('visitors');
        $output = $this->grocery_crud->render();
        $this->_example_output($output);
    }

    function _example_output($output = null) {
        $this->load->view('our_template.php',$output);
    }
}
快速阅读将告诉您拥有多个数据库连接非常容易。在
database.php
config文件中定义连接参数,然后使用组名调用数据库

if($user == 'someguise'){
    $this->load->database('guiseDB');
}

HTH

对于如此重要的事情,我强烈建议首先通过CI表单验证运行表单输入。你真的应该在做任何事情之前验证和做一些事情,比如限制字符数,确保只包含字母,修剪空白和XSS清理。(这也有助于您的用户)

然后,要从表单中获取值,请执行以下操作

$username = $this->input->post( 'username', TRUE ) ;
并使用一个变量$username。真正的XSS会清除该值,然后不再重复

$_POST["username"] == 
一次又一次,你只是在检查$username。也使代码更易于阅读。如果在不同的方法中需要$username,只需使用:

$this->username = $this->input->post( 'username', TRUE ) ;
然后,$this->username将在类中的任何方法中工作


<>最后考虑使用一个用户表或配置表——然后使用不同的值来调用数据库。换句话说,他们可能使用用户名“root”登录,但很遗憾,这是一个不同的名称,如global$connectdb=“rootadmin”

,无法正常工作。我需要做的是根据登录屏幕上的用户名设置一个名为$connectdb的变量(使用$_POST[“username”]),然后使用$this->load->database($connectdb)。我尝试在构造函数中列出多个if语句,但不起作用。我现在在代码中看到您可能正在使用。我继续用了8秒钟来搜索你: