PHP LDAP用户身份验证不起作用

时间:2015-03-23 15:06:10

标签: php ldap

我正在尝试通过PHP为内部网页实现LDAP连接。我为我的PHP使用Uniform Server。 http://www.uniformserver.com/。作为测试,我试图在这里连接到测试服务器。 http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/

但我不明白它似乎甚至没有进入if / else语句。

这是我的代码:

<?php

$ldapServer = 'ldap.forumsys.com';
$ldapPort = 389;

if(isset($_POST['username']) && isset($_POST['password'])){
    echo "Hello both parameters are set";
    $username = $_POST['username'];
    $password = $_POST['password'];
    echo "<br>" . $username;
    echo "<br>" . $password;
    $ds = ldap_connect($ldapServer, $ldapPort);

    if (ldap_bind($ds, $_POST['username'], $_POST['password'])) {
        // Successful auth
        $_SESSION['username'] = $_POST['username'];
        $_SESSION['password'] = $_POST['password'];
        // log them in!
        echo 'you are logged in ' . $_SESSION['username'] ;    
        //redirect after logged in2
    } else {
        // error message

        echo 'auth failed';
    }
}
else
{
?>
    <form action="login.php" method="POST">
        <label for="username">Username: </label><input id="username" type="text" name="username" required="true" /> 
        <label for="password">Password: </label><input id="password" type="password" name="password" required="true" />        <input type="submit" name="submit" value="Submit" />
    </form>
<?php
 } ?> 

显示我的第一个回声(密码和用户名),但之后没有显示任何内容。谁知道为什么?我没有任何错误,但这是我的回复。

Hello both parameters are set
username
password

由于

1 个答案:

答案 0 :(得分:1)

首先,检查您是否正在建立连接。以下代码段是检查此内容的一种方式:

if ($ds) {
// Successful connection
} else {
echo "Error connecting";
}

我的猜测是,您正在查看回音部分,因为它们位于ldap_bind之外,而您却因为连接失败而无法获得绑定。仔细检查服务器地址和/或尝试使用IP地址。请注意,您可以在此阶段安全地删除端口,因为默认为389,因此只需使用

$ds=ldap_connect("ip/address");

工作正常。

现在,既然您正在点击看似外部域名的地址,那么它可能是LDAPS,所以请仔细检查(或者可能不是)。如果是这种情况,您将需要

$ds = ldap_connect('ldaps://ip', 636);

如果有任何帮助,请告诉我