Pea*_*ket 5 php ldap ldap-query
在我正在处理的 php 页面中,建立了 LDAP 连接,从中拉出 cn 条目列表并将其放入下拉列表中。下拉列表中的选择通过表单提交发送到另一个 php 脚本,该脚本根据 LDAP 检查选定的 cn 以获取更多相关信息。
对于大多数名称,这没有问题;however, a cn was recently added that includes parentheses enclosing a nickname, and when that name is selected it causes the ldap_search() method to return false. 下面是代码,其中 $employeename 是经过消毒的员工姓名。
...
$dn = "cn=users,dc=our-domain,dc=com";
$filter = "(cn=".$employeename.")";
$attrs = array("cn", "mail");
$rslt = ldap_search($ldapsvr, $dn, $filter, $attrs);
$entries = ldap_get_entries($ldapsvr, $rslt);
...
Run Code Online (Sandbox Code Playgroud)
$filter 字符串最终为
(cn=First (FN) Last)
Run Code Online (Sandbox Code Playgroud)
其中 First 是名字,Last 是姓氏,FN 是包含的昵称。我曾尝试将括号转义为 \28 和 \29(如提供here,其中还说匹配的括号不需要转义),但没有帮助。有效的名称包括字母、空格和句点(用于中间名首字母)。
(cn=First \28FN\29 Last)
Run Code Online (Sandbox Code Playgroud)
编辑:ldap_search 返回 false,而不是死亡。如果 $rslt 为 false 而不是数组,我在调查时包含的其中一行将失败并死亡。
编辑:我只转义了内括号,。因为外面从来没有给任何麻烦
尝试添加操作数作为一种运算顺序。我在现场遇到了类似的问题,title直到我做了类似以下的事情。
$filter = "(&(cn=$employeename))";
Run Code Online (Sandbox Code Playgroud)
在某些系统上,您需要()使用\.
$filter = "(&(cn=James \(Jim\) Doe))";
Run Code Online (Sandbox Code Playgroud)
坚持住,正在研究逃生功能。
| 归档时间: |
|
| 查看次数: |
8890 次 |
| 最近记录: |