我正试图通过PHP为内部网页实现LDAP连接。我的PHP使用统一服务器。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
} ?>
显示了我的第一个echo(密码和用户名),但之后什么也不显示。有人知道为什么吗?我没有任何错误,但这是我的回应。
Hello both parameters are set
username
password
感谢
首先,检查您是否正在建立连接。下面的片段是一种检查方法:
if ($ds) {
// Successful connection
} else {
echo "Error connecting";
}
我的猜测是,你看到回声部分是因为它们在ldap_bind
之外,而你没有得到绑定,因为你的连接失败了。请仔细检查服务器地址和/或尝试使用IP地址。注意,您可以在这个阶段安全地丢弃端口,因为389是默认值,所以只需使用
$ds=ldap_connect("ip/address");
会很好用的。
现在,由于您正在访问一个似乎是外部域地址的地址,它可能是LDAPS,所以请仔细检查(或者可能不是)。如果是这种情况,您将需要
$ds = ldap_connect('ldaps://ip', 636);
请告诉我这些是否对有帮助