首页 > 解决方案 > 在成功的 ldap 登录时启动 php 会话

问题描述

关于启动 PHP 会话的问题似乎很常见,但我没有遇到任何关于我的问题的描述。

我正在使用 ldap_bind 让用户在我的站点中进行身份验证,并且我只希望他们在身份验证成功的情况下访问登录后面的页面。

为此,我认为我需要创建一个 PHP 会话,但我应该在登录页面的开头创建 PHP 会话,还是应该仅在他们成功通过身份验证时才创建它ldap_bind

如果是后者,那么我是否应该只放入session_start();用于检查提供的用户名和密码是否适用于 LDAP 绑定的 if 语句以及是否应该在'protected'页面中调用会话用户名?

我的 ldap 绑定非常简单:

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

if ($ldapconn) {

    // binding to ldap server
    $ldapbind = ldap_bind($ldapconn, "uid=$username,cn=users,dc=abc,dc=net", "$password");

    // verify binding
    if ($ldapbind) {
worked
sessinon_start();
} else {
didnt work } }

我受保护页面顶部的可能代码:

<?php if (isset($_SESSION['username']); {
session_start();
} else {
send back to login? 
}

标签: phpsession

解决方案


您需要在页面开头启动会话并将会话设置为成功的 ldap 绑定。不,您不需要在受保护的页面中调用用户名,因为 ldap 本身就是 Windows 身份验证

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

if ($ldapconn) {

// binding to ldap server
$ldapbind = ldap_bind($ldapconn, "uid=$username,cn=users,dc=abc,dc=net", "$password");

// verify binding
if ($ldapbind) {
$_SESSION['username']=username;
} else {
//didnt work } }

推荐阅读