1

LDAP を使用してユーザーを認証するログイン フォームに取り組んでいます。ただし、ユーザー名を DN 資格情報と共に POST 変数として渡す方法がわかりません。これは機能しており、ログインフォームからパスワードを送信できます:

<?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 関数を使用して渡すことができる変数は 3 つだけだと思います。

どうもありがとう

4

1 に答える 1

1

ここで引用符を間違って使用しており、コンマを見逃しています:

$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() を使用してください...

于 2013-07-25T09:13:23.870 に答える