Здравствуйте !
Я начинающий разработчик на php. Недавно столкнулся с технологией ldap , о котором , кстати, я ничего не знал. Поискав в интернете инфу и применив те коды , понял что я окончательно запутался. Вот один из примеров. Тестовый сервер на windows 7, на сайт захожу набрав на браузере
testsuper
ФАЙЛ ldap.php
<?php
$ldaphost = "127.0.0.1";
$ldapport = "389";
$memberof = "cn=allow_ppl,ou=users_IT,ou=IT,ou=Kyiv,ou=corp,dc=eddnet,dc=org";
$base = "ou=corp,dc=eddnet,dc=org";
$filter = "sAMAccountName=";
$domain = "@testsuper";
?>
ФАЙЛ index.php
=============
<?php
include_once ("auth.php");
?>
<head>
<meta charset=utf8 />
<title>Postfix ?????????</title>
</head>
<?php
// ????? ??? ????? ?????? ? ??????
print '
<form action="index.php" method="post">
<table>
<tr>
<td>Log:</td>
<td><input type="text" name="login" /></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Authorization" /></td>
</tr>
</table>
</form>
';
?>
=============
ФАЙЛ auth.php
<?php
//???????? ??????
session_start();
//?????????? ???????????????? ????
include_once ("ldap.php");
// Logout
if (isset($_GET['logout']))
{
if (isset($_SESSION['user_id']))
{
unset($_SESSION['user_id']);
setcookie('login', '', 0, "/");
setcookie('password', '', 0, "/");
header('Location: index.php');
exit;
}
}
//???? ???????????? ??? ????????????????, ?? ??????????? ??? ?? ???????? main.php
if (isset($_SESSION['user_id']))
{
echo "<script>alert('Success')</script>";
header('Location: main.php');
exit;
}
//???? ???????????? ?? ????????????????, ?? ????????? ??? ????????? LDAP
if (isset($_POST['login']) && isset($_POST['password']))
{
$username = $_POST['login'];
$login = $_POST['login'].$domain;
$password = $_POST['password'];
//?????????????? ? LDAP ???????
$ldap = ldap_connect($ldaphost,$ldapport) or die("Cant connect to LDAP Server");
//???????? LDAP ???????? ?????? 3
ldap_set_option($ldap, LDAP_OPT_PROTOCOL_VERSION, 3);
if ($ldap)
{
// ???????? ????? ? LDAP ??? ?????? ????????? ?????? ? ??????
$bind = ldap_bind($ldap,$login,$password);
if ($bind)
{
// ????????, ???????? ?? ???????????? ?????? ????????? ??????.
$result = ldap_search($ldap,$base,"(&(memberOf=".$memberof.")(".$filter.$username."))");
// ???????? ?????????? ??????????? ?????????? ????????
$result_ent = ldap_get_entries($ldap,$result);
}
else
{
echo "<pre>";
print_r($_SESSION);
echo "</pre>";
die('You entered wrong password or id. Try it now<br /> <a href="index.php">to back</a>');
}
}
// ???? ???????????? ??????, ?? ?????????? ??? ?????? ? ????????????? ?? main.php
if ($result_ent['count'] != 0)
{
$_SESSION['user_id'] = $login;
header('Location: main.php');
exit;
}
else
{
die('Access denied! <br /> <a href="index.php">to Back</a>');
}
}
?>
Меня волнует следующие вопросы:
1) как работает ldap?
2) где оно то есть ldap хранит данные и вообще как проводится авторизация если до этого никаких юзеров не было? (это самое интересное так как я выводил и $_SERVER и.т.п)
3) что мне прочитать чтобы побыстрее вникнуть в ldap?
4) не проще ли хранить данные в БД и проверять данные оттуда(то есть login pass)?
С Уважением,
Алмик