사용자를 인증하기 위해 활성 디렉토리와 연결하려고합니다. 그러나 그것은 당신에게 물마루를 끼워 넣는 것처럼 당신이 타이핑하는 것이 중요하지 않습니다.PHP ldap 연결이 항상 사실임
올바른 연결을 설정했는지 확신 할 수 없습니다. 을 호스트 이름으로 사용합니다. 현재 [ip address]. [domain] .nl 을 사용하고 있는데 이것이 가능한지 여부는 알 수 없지만 ldap_connect()에서 오류를 확인했을 때 오류가 발생하지 않았습니다.
여러분이 코드를 살펴보고 팁을 주려고한다면, 좋을 것입니다. 보안상의 이유로 연결 세부 정보를 생략했습니다.
만약 이것이 어리석은 질문이라면 sry하지만 나는 틀린 것에 대한 생각을 가지고 있습니다. 미리 감사드립니다.
class LOGIN{
public function login($data){
$user = $data["username"];
$password = $data["password"];
$host = 'ldap://[ip adress]/[domain].nl';
$domain = '[domain].nl';
$basedn = 'dc=[domain],dc=nl';
$ad = ldap_connect($host.$domain,389) or die('Could not connect to LDAP server.');
ldap_set_option($ad, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ad, LDAP_OPT_REFERRALS, 0);
//$bind = ldap_bind($ad, "[email protected]$domain", $password) or die('Could not bind to AD.');
if(@ldap_bind($ad, "$user"."@"."$domain", $password)){
$result = "Authenticated";
}else{
$result = "Invalid Credential";
}
return $result;
}
}
}
$login = new LOGIN;
그리고이 로그인 할 수있는 형태이다 :
<?php
if(isset($_POST['username']) && isset($_POST['password']) && !empty($_POST['username']) && !empty($_POST['password'])){
require_once("classes/class_login.php");
$result = $login->login($_POST);
}
?>
<form action="#" method="POST">
<?php if(!empty($result)){echo "<p>".$result."</p>";} ?>
<pre>
<label for="username">Username: </label><input id="username" type="text" name="username" />
<label for="password">Password: </label><input id="password" type="password" name="password" />
<input type="submit" name="submit" value="Submit" />
</pre>
</form>
CMD에서 올바른 DN을 찾아 수정했습니다. 그러나 귀하의 대답은 오류 메시지를 추가함으로써 도움이되었습니다. 감사! – NOTHING