Связывание LDAP с использованием переменной POST для UID?

Я работаю над формой входа, которая использует LDAP для аутентификации пользователей. Однако я не знаю, как передать имя пользователя как переменную POST вместе с полномочиями DN. Это работает, позволяя мне отправить пароль из формы входа:

<?php // using ldap bind $ldaprdn = 'uid=my.name,cn=XXX,dc=XXX,dc=XXX,dc=XXX'; // ldap rdn or dn $ldappass = $_POST['userPassword']; // user password // connect to ldap server $ldapconn = ldap_connect("server.domain.com") or die("Could not connect to LDAP server."); // Set some ldap options for talking to ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0); if ($ldapconn) { // binding to ldap server $ldapbind = @ldap_bind($ldapconn, $ldaprdn, $ldappass); // verify binding if ($ldapbind) { echo "LDAP bind successful...\n"; } else { echo "LDAP bind failed...\n"; } } ?> 

Однако это не делается при попытке добавить значение, содержащееся в переменной POST, к значениям CN и DN.

 <?php // using ldap bind $ldaprdn = "uid = . $_POST['userLogin'] . 'cn=XXX,dc=XXX,dc=XXX,dc=XXX'"; // ldap rdn or dn $ldappass = $_POST['userPassword']; // user password // connect to ldap server $ldapconn = ldap_connect("server.domain.com") or die("Could not connect to LDAP server."); // Set some ldap options for talking to ldap_set_option($ldapconn, LDAP_OPT_PROTOCOL_VERSION, 3); ldap_set_option($ldapconn, LDAP_OPT_REFERRALS, 0); if ($ldapconn) { // binding to ldap server $ldapbind = @ldap_bind($ldapconn, $ldaprdn, $ldappass); // verify binding if ($ldapbind) { echo "LDAP bind successful...\n"; } else { echo "LDAP bind failed...\n"; } } ?> 

Может ли это быть достигнуто таким образом? Я считаю, что могу передать только три переменные, используя функцию LDAP_bind,

Большое спасибо

Вы неправильно используете кавычки здесь и пропустили запятую:

 $ldaprdn = "uid = . $_POST['userLogin'] . 'cn=XXX,dc=XXX,dc=XXX,dc=XXX'"; 

должно быть

 $ldaprdn = 'uid =' . $_POST['userLogin'] . ',cn=XXX,dc=XXX,dc=XXX,dc=XXX'; 

или

 $ldaprdn = "uid =$_POST['userLogin'],cn=XXX,dc=XXX,dc=XXX,dc=XXX"; 

Помните, что использование одинарных кавычек вокруг переменных не будет разрешать переменную до ее значения (и, следовательно, требуется объединение), но использование двойных кавычек будет. И вдобавок ко всему: никогда не работайте с введенными пользователем данными непосредственно в ваших сценариях – проверяйте ввод или, по крайней мере, используйте htmlentities () или strip_tags () …