Как я могу управлять динамическими переменными в параметрах ldap_bind()?

#php #html #variables #active-directory #ldapconnection

#php #HTML #переменные #active-directory #ldapconnection

Вопрос:

Я пытаюсь изучить PHP и создаю свою первую страницу подключения для входа в свой Active Directory, я уже сделал эти две страницы:

form.php:

 <HTML>
    <body>
        <form action="ADconnect" method="post">
         <p>Votre login : <input type="text" name="login"/></p>
         <p>Votre password : <input type="password" name="password"/></p>
         <p><input type="submit" value="OK"></p>
        </form>
    </body>
</HTML>
  

ADconnect.php:

 <?php
//check var
    $check_password = $_POST['password'];
    $check_dn= $_POST['login'];

//display of check var
    echo $check_password;
    echo "<br>";
    echo $check_dn;
    echo "<br>";

//AD's connexion var 
    $AD_con = ldap_connect("ADname") or die("could not connect to AD");
    $AD_dn = "CN=".ldap_connect('$_POST['login']').",OU=XXX,OU=XXX,DC=XXX,DC=XXX";
    $AD_password = ldap_connect('$_POST['password']');
    echo $AD_dn;
    echo "<br>";

//what i've tried to convert the AD's var:
    //convert of $AD_con and $AD_password
    //$AD_dn1 = strval($AD_dn);
    //$AD_password1 = strval($AD_password);
    //display of the converts
    //echo $AD_dn1;
    //echo $AD_password1;

//connect function    
    if (isset($_POST['login']) amp;amp; $_POST['password'] == 0){

        if (ldap_bind($AD_con, $AD_dn, $AD_password)){

                        include 'frontpage.php';
                       }
                    else{

                            echo "invalid user/pass or other error";
                        }
                }   
                else
                    echo "var aren't correctly collect";

?>
  

У меня ошибка, когда я пытаюсь протестировать эти две страницы, и это то, что я получаю:

 pitword
Pit wasntme
CN=Resource id #7,OU=XXX,OU=XXX,DC=XXX,DC=XXX
A PHP Error was encountered
Severity: Warning

Message: ldap_bind() expects parameter 3 to be string, resource given

Filename: pages/ADconnect.php

Line Number: 30

Backtrace:

File: C:wamp64wwwtestapplicationviewspagesADconnect.php
Line: 30
Function: ldap_bind

File: C:wamp64wwwtestapplicationcontrollerspages.php
Line: 10
Function: view

File: C:wamp64wwwtestindex.php
Line: 315
Function: require_once

invalid user/pass or other error
  

Таким образом, значения моих полей login и password корректно восстанавливаются с одной страницы на другую, и я протестировал функцию connect с помощью обычного текста, чтобы увидеть, возникла ли проблема из-за этого. Но я добрался до своего сервера AD.
Проблема, похоже, заключается в том, что когда я использую функцию ldap_connect(), значения моих переменных $ AD_dn и $ AD_password изменяются на «ресурс # 7» и «ресурс # 8». Обычно он должен отображать «pit wasntme» для $ AD_dn и «pitpass» $ AD_password для функции connect.

Прочитав ошибку, я понял, что мне нужно преобразовать их в строки, потому что это то, что нужно ldap_bind для второго и третьего параметров. Я пробовал использовать то, что нашел в сети (я поместил это в свои комментарии под моим последним эхом «
«), но результат все тот же.

Если кто-нибудь может дать совет или объяснение того, что я делаю неправильно, или о том, как я могу правильно восстановить (в хорошем формате) мои введенные значения, отправленные моей формой, это будет здорово.

Спасибо, что уделили время чтению этой темы.

Комментарии:

1. Я считаю, что это $AD_dn = "CN=".ldap_connect('$_POST['password']') должно быть $AD_dn = "CN=".$AD_con . ",OU=XXX,OU=XXX,DC=XXX,DC=XXX" .

2. спасибо, Дэйв, я изменил свой код, когда вставил его на форум, и я не уделил достаточно внимания, конечно, ваше право, и это не то, что у меня действительно есть в моем коде, $ AD_dn действительно «CN =».ldap_connect($ _POST[‘login’]) .»,OU= XXX,OU= XXX, DC = XXX, DC = XXX» и $AD_password = ldap_connect($_POST[‘пароль’])

3. на самом деле мой $ AD_con — это доменное имя моего рекламного сервера, поэтому его нельзя поместить в $AD_dn var, потому что это различимое имя пользователя, который хочет подключиться к объявлению.

Ответ №1:

Хорошо, спасибо всем, кто пытался мне помочь, но я нашел решение: я использовал ldap_connect() для $ _POST[‘login’] и $ _POST[‘password’], но если я удалю эту функцию, все будет работать правильно!