2015-03-23 2 views
1

Я пытаюсь реализовать LDAP-соединение через PHP для внутренней веб-страницы. Я использую Uniform Server для своего PHP. http://www.uniformserver.com/. В качестве теста я пытаюсь подключиться к тестовому серверу здесь. http://www.forumsys.com/tutorials/integration-how-to/ldap/online-ldap-test-server/PHP аутентификация пользователя LDAP не работает

Но я не понимаю, похоже, что он даже не входит в утверждения 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

Обычно, если некоторые из функций LDAP не в состоянии выполнить то, что они должны выполнять, они излучают по меньшей мере, сообщение уровня E_WARNING. Вы проверили свои журналы PHP? У вас включена регистрация? –

ответ

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); 

Позвольте мне знать, если это помогает

+0

Спасибо за ответ, я попытался окружить мой код с помощью if $ ds и попробовать с ip, но он не работает. Странно, что php работает и эхо, что я спросил, но он также печатает 'POST http: //localhost/phpproject/login.php 500 (Internal Server Error)' Я также убедился, что раскомментирует все расширение = php_ldap.dll в ini файлы. Ничего не делает это ... –

+0

Если вы используете блок 'if .... else' на' $ ds' и помещаете сообщение об ошибке в раздел 'else', это отображает ошибку для вас? Обновлен мой ответ – iamgory

+0

Нет, это не показывает, это на самом деле то, что я пытался. Я довольно смущен. –

Смежные вопросы