如何在codeigniter控制器中包含php文件

时间:2016-03-02 10:44:33

标签: php codeigniter

我有一个登录控制器,它具有使用我的域凭据连接到LDAP的功能。

class Login extends MX_Controller {

const USER = "DOMAINACCOUNT";
const PASS = "DoM@inP@ssw0rd";

public function checkWW930() {
    $ldapserver = "ldap://ww930.sampledomain.net";
    $dn = 'dc=ww930,dc=sampledomain,dc=net';
    $ldapconn = ldap_connect($ldapserver) or die("Could not connect to $ldaphost");
    //ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
    //ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
    $user = self::USER;
    $pass = self::PASS;
    $bind = @ldap_bind($ldapconn, 'ww930\\'.$user, $pass);
    $filter = "(samaccountname=". $this->input->post('username') .")";
    $result = ldap_search($ldapconn, $dn, $filter);
    $info = ldap_get_entries($ldapconn, $result);
    if($info["count"] > 0) {
        return TRUE;    // account exists in ww930 domain
    } else {
        return FALSE;   // account does not exist in ww930 domain
    }

这很好但我想将我的凭据保存在一个单独的文件中,以便我可以在其他控制器中使用它(如果需要)。另外我想将它保存在一个文件中,这样如果我的密码过期,我只需要更新一个文件。我想将我的凭据放在credentials.php文件中然后添加include('credentials.php');有人可以帮我解决这个问题吗?非常感谢。

2 个答案:

答案 0 :(得分:2)

你可以尝试这样的东西来抽象和组织你的结构

在您的application / config /文件夹中创建一个名为ldap.php的新文件

并将以下代码放入其中

$config["ldap_default"] = array(
    "server"  =>  "ldap://ww930.sampledomain.net",
    "dn"  =>  "dc=ww930,dc=sampledomain,dc=net",
    "user" => "DOMAINACCOUNT",
    "password"  => "DoM@inP@ssw0rd",
);

创建一个名为CustomLDAPConnection.php的库(将其放在application / libraries文件夹中)

class CustomLDAPConnection
{
    private $ci;
    private $arrConfig = array();

    public function __construct()
    {
        $this->ci = &get_instance();
        $this->ci->load->config("ldap");
    }

    public function checkWW930($userName = false, $configGroup = "default") 
    {
        if (!$userName) return false;

        $this->arrConfig = $this->ci->config->item("ldap_".$configGroup);

        $ldapconn = ldap_connect($this->arrConfig['server']) or die("Could not connect to $ldaphost");
        $bind = @ldap_bind($ldapconn, 'ww930\\'.$this->arrConfig['user'], $arrConfig['password']);
        $filter = "(samaccountname=". $userName .")";

        //ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3);
        //ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0);
        $result = ldap_search($ldapconn, $this->arrConfig['dn'], $filter);
        $info = ldap_get_entries($ldapconn, $result);
        return ($info["count"] > 0) ?   true    :   false;
    }
}

然后在您的登录控制器中

class Login extends MX_Controller
{
    public function __construct()
    {
        parent::__construct();
        $this->load->library("CustomLDAPConnection");
    }

    public function checkLDAPForUser()
    {
        return $this->CustomLDAPConnection->checkWW930($this->input->post("username"));
    }
}

它非常基本和简单,但它应该给你你需要的提示

答案 1 :(得分:2)

您可以在/config/constants.php

中设置常量

在文件末尾添加这两行

defined('USER')      OR define('USER', "DOMAINACCOUNT");
defined('PASS')      OR define('PASS', "DoM@inP@ssw0rd");

现在,您可以在项目中的任何位置使用常量。