2017-10-20 3 views
-1

사용자 이름과 암호 조합이 내 ldap 디렉토리에 있는지 확인하는 PHP 스크립트를 만들려고합니다. 나는 내가 지금까지 가지고있는 것을 게시 할 것이다.LDAP에서 사용자 이름과 암호 조합을 확인할 PHP 스크립트 만들기

<?php 

$username = $_POST["username"]; 
$password = $_POST["password"]; 

$ldapconn = ldap_connect("localhost") 
or die("Could not connect to LDAP server."); 

ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); 

$ldaprdn = "cn=$username,dc=designstudio1,dc=com"; 
$ldappass = "$password"; 

if ($ldapconn) { 

$ldapbind = ldap_bind($ldapconn, $ldarprdn, $ldarppass); 

if ($ldapbind) { 

echo "Welcome back, $username!"; 

} else { 
    echo "Authentication failed. Please check your username/password and try again."; 
} 
} 

?> 

필요하면 여기에 내 php 양식이 있습니다.

<!DOCTYPE html> 
<html lang="en"> 
<html> 
<head> 
<meta charset="UTF-8"> 
<title>Login</title> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
</head> 
<body> 
<form id="contact-form" action="script.php" method="post"> 
<input type="hidden" name="redirect" /> 
<ul> 

     <label for="username">Username:</label> 
     <input type="text" name="username" id="username" value="" /> 


     <label for="password">Password:</label> 
     <input type="password" name="password" id="password" value="" /> 
     <input type="submit" value="submit" /> 
</ul> 
</form> 
</body> 
</html> 

모든 사용자 이름과 암호 (유효하거나 아님) 나는 항상 환영 메시지를 표시합니다.

필자의 코드가 분명히 표시하기 때문에 나는 여전히 초록색이고 ldap이다. 어떤 도움을 주시면 감사하겠습니다.

나는 또한 권고 된 변경 사항을 적용 할 때 코드를 편집 할 것이고 나는 그 코드가 맞지 않는 부분을 편집 할 것입니다.

+0

맞춤법 수를보고 오류를 가능하게 @Sammitch 제안을 고려한다. 'error_reporting'을 올리면 잘못 입력 한 모든 변수 이름에 대해 불평해야합니다. – Sammitch

+0

Oy. 대부분이 선생님에게서 왔습니다. 웃어. 당황 스럽네. 나는 그것을해야하고 그것이 효과가 있는지보아야 할 것이다. 머리를 주셔서 감사합니다! – Zazabar

+0

그래서 철자가 잘못된 LDAP 변수입니까? – Zazabar

답변

0

다른 사용자 (주석에서 @Sammitch)가 지적한 것처럼 PHP 변수에는 맞춤법 오류가 거의 없습니다.

코드 아래에서이 코드를 사용해보십시오.이 코드를 제외하고는 변수에서 맞춤법 오류를 발견하고 수정 한 것이 없습니다.

또한

<?php 

$username = $_POST["username"]; 
$password = $_POST["password"]; 

$ldapconn = ldap_connect("localhost") 
or die("Could not connect to LDAP server."); 

ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3); 

$ldaprdn = "cn=$username,dc=designstudio1,dc=com"; 
$ldappass = "$password"; 

if ($ldapconn) { 

    //Below line had several spelling mistakes 
    $ldapbind = ldap_bind($ldapconn, $ldaprdn, $ldappass); 

    if ($ldapbind) { 
      echo "Welcome back, $username!"; 
    } else { 
     echo "Authentication failed. Please check your username/password and try again."; 
    } 
} 
?> 
+1

당신은 뛰어납니다. 나는 무엇이 잘못되었는지 알아 내려고 내 머리카락을 꺼내려고했다. 나는 그게 우스꽝 스럽다고 믿을 수 없다. 어쨌든 고맙습니다 ** 매우 ** 많이! – Zazabar

+0

@ Zazabar 도움이되었음을 알게되어 기쁩니다. –

관련 문제