Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php ldap_绑定失败并发出警告,但继续执行if语句_Php_Ldap - Fatal编程技术网

Php ldap_绑定失败并发出警告,但继续执行if语句

Php ldap_绑定失败并发出警告,但继续执行if语句,php,ldap,Php,Ldap,我正在使用ldap进行身份验证,并在输入正确的凭据时使其全部正常工作。但是,如果用户无效或密码不正确,ldap_绑定将发出以下警告: Warning: ldap_bind(): Unable to bind to server: Invalid credentials... 这意味着我认为应该检查ldap_绑定是否工作的以下行在失败时正在执行: $ldapbind = ldap_bind($ldapconn,"uid=$username,cn=users,dc=abc,dc=net", "$p

我正在使用ldap进行身份验证,并在输入正确的凭据时使其全部正常工作。但是,如果用户无效或密码不正确,ldap_绑定将发出以下警告:

Warning: ldap_bind(): Unable to bind to server: Invalid credentials...
这意味着我认为应该检查ldap_绑定是否工作的以下行在失败时正在执行:

$ldapbind = ldap_bind($ldapconn,"uid=$username,cn=users,dc=abc,dc=net", "$password");
if ($ldapbind) {
我是否需要更改if语句,以使无效凭据的警告导致失败并移动到else语句?我试过以下方法,但都没有效果

if (($ds) !== false )
您可以尝试:

$ldapbind = @ldap_bind($ldapconn,"uid=$username,cn=users,dc=abc,dc=net", "$password");
if ($ldapbind) {

令人惊讶的是,这似乎对我起了作用。你能解释一下@符号的作用吗?或者更确切地说是对其工作原理的解释?@a.smith“@”会抑制错误消息。但是在您的情况下,错误是一条有效的消息,不应该被抑制。如果错误消息显示在输出中,则这是一个完全不同的主题。这意味着您将
display\u errors
设置为
true
,这在生产系统上是绝对不应该做的。有关
@
的更多信息,请查看