【发布时间】:2016-03-28 21:29:30
【问题描述】:
我正在尝试找出一种方法来管理由 codeigniter 抛出的错误,以防有人为我们的 Intranet 登录输入错误的 LDAP 句柄。
我们的登录是相当标准的。
登录名:firstname.lastname(全部小写,以句点分隔)
通过:最少 10 个字符,需要 1 个大写字母
一切正常,这确实是一个小问题,但如果有人搞砸了他们的密码或登录名,我会收到标准的丑陋 codeigniter 错误
遇到了 PHP 错误
严重性:警告
消息:ldap_bind():无法绑定到服务器:凭据无效
文件名:controllers/Login.php
行号:28
回溯:
文件:/home/edit/internal/application/controllers/Login.php 行:28 函数:ldap_bind
文件:/home/edit/internal/public_html/index.php 行:315 功能: 需要一次
我怎样才能做到这一点,因为我可以发送适当的错误消息(类似于:您输入了不正确的登录详细信息。请记住,这与用于登录您的工作站的信息相同。)
然后把它扔回去代替丑陋的 codeigniter 错误。
下面是目前使用的代码...
请注意,DOMAINHERE(s) 是我的实际域的替代品。
if( $this->input->post( 'login' ) ){
if ($this->form_validation->run())
{
$ldap = ldap_connect( 'DOMAINHERE' ); // Your domain or domain server
if( ! $ldap )
{
// Put something here
}
ldap_set_option( $ldap, LDAP_OPT_PROTOCOL_VERSION, 3 ); // Recommended for AD
$ldapRDN = $this->input->post('username').'@DOMAINHERE.com';
$ldapPWD = $this->input->post('password');
// Now try to authenticate with credentials provided by user
if ( ! ldap_bind( $ldap, $ldapRDN, $ldapPWD) )
{
echo "LDAP Bind Failed.";
$data['error'] = TRUE;
}
else
{
if ( $this -> user_model -> user_exists( $this -> input -> post( 'username' ) ) ) {
$this -> user_model -> process_login();
$this->session->set_userdata('loggedin', TRUE);
redirect( 'welcome' );
} else {
$add_user = $this -> user_model -> set_user_to_db();
if ( $add_user ) {
$this -> session -> set_userdata( 'loggedin', TRUE);
redirect( 'welcome' );
} else {
$this -> session -> set_userdata( 'alert', 'Was unable to add user to the database, please try again later' );
$this -> session -> set_userdata( 'alert_type', 'error' );
redirect( 'login' );
}
}
}
}
}
编辑:我的目标不是抑制警告,实际上这些警告在部署过程中会被关闭,而是要捕获错误触发的实例,以便我有一些东西要检查。
【问题讨论】:
-
错误报告消息的可能解决方案stackoverflow.com/questions/20773786/…
标签: php codeigniter error-handling ldap