我如何管理 ldap_bind() 参数中的动态变量?
How can i manage dynamic variables in ldap_bind()'s parameters?
我正在努力学习 PHP 并且我正在为我的 Active Directory 创建我的第一个登录连接页面,我已经完成了这两页:
form.php:
<HTML>
<body>
<form action="ADconnect" method="post">
<p>Votre login : <input type="text" name="login"/></p>
<p>Votre password : <input type="password" name="password"/></p>
<p><input type="submit" value="OK"></p>
</form>
</body>
</HTML>
ADconnect.php:
<?php
//check var
$check_password = $_POST['password'];
$check_dn= $_POST['login'];
//display of check var
echo $check_password;
echo "<br>";
echo $check_dn;
echo "<br>";
//AD's connexion var
$AD_con = ldap_connect("ADname") or die("could not connect to AD");
$AD_dn = "CN=".ldap_connect('$_POST['login']').",OU=XXX,OU=XXX,DC=XXX,DC=XXX";
$AD_password = ldap_connect('$_POST['password']');
echo $AD_dn;
echo "<br>";
//what i've tried to convert the AD's var:
//convert of $AD_con and $AD_password
//$AD_dn1 = strval($AD_dn);
//$AD_password1 = strval($AD_password);
//display of the converts
//echo $AD_dn1;
//echo $AD_password1;
//connect function
if (isset($_POST['login']) && $_POST['password'] == 0){
if (ldap_bind($AD_con, $AD_dn, $AD_password)){
include 'frontpage.php';
}
else{
echo "invalid user/pass or other error";
}
}
else
echo "var aren't correctly collect";
?>
我在尝试测试这两个页面时遇到错误,这就是我得到的结果:
pitword
Pit wasntme
CN=Resource id #7,OU=XXX,OU=XXX,DC=XXX,DC=XXX
A PHP Error was encountered
Severity: Warning
Message: ldap_bind() expects parameter 3 to be string, resource given
Filename: pages/ADconnect.php
Line Number: 30
Backtrace:
File: C:\wamp64\www\test\application\views\pages\ADconnect.php
Line: 30
Function: ldap_bind
File: C:\wamp64\www\test\application\controllers\pages.php
Line: 10
Function: view
File: C:\wamp64\www\test\index.php
Line: 315
Function: require_once
invalid user/pass or other error
所以我的字段登录名和密码的值从一个页面正确地恢复到另一个页面,并且我已经用纯文本测试了连接功能以查看问题是否来自于此。但我已经到达了我的 AD 服务器。
问题似乎是当我使用 ldap_connect() 函数时,我的变量 $AD_dn 和 $AD_password 的值被更改为 "resource #7" 和 "resource #8"。通常它必须为 $AD_dn 显示 "pit wasntme" 和为连接函数显示 "pitpass" $AD_password。
通过阅读错误,我了解到我必须将它们转换为字符串,因为这是 ldap_bind 需要的第二个和第三个参数。我已经尝试过我在网上找到的东西(我把它放在我最后一个回声“
”下面的评论中),但结果仍然是一样的。
如果有人可以就我做错了什么或我如何正确恢复我的表单发送的输入值提供提示或解释,那就太好了。
感谢您花时间阅读本帖。
好的,感谢任何试图帮助我的人,但我找到了解决方案:我在 $_POST['login'] 和 $_POST[[=13] 上使用 ldap_connect() =]] 但如果我删除此功能,一切正常!
我正在努力学习 PHP 并且我正在为我的 Active Directory 创建我的第一个登录连接页面,我已经完成了这两页:
form.php:
<HTML>
<body>
<form action="ADconnect" method="post">
<p>Votre login : <input type="text" name="login"/></p>
<p>Votre password : <input type="password" name="password"/></p>
<p><input type="submit" value="OK"></p>
</form>
</body>
</HTML>
ADconnect.php:
<?php
//check var
$check_password = $_POST['password'];
$check_dn= $_POST['login'];
//display of check var
echo $check_password;
echo "<br>";
echo $check_dn;
echo "<br>";
//AD's connexion var
$AD_con = ldap_connect("ADname") or die("could not connect to AD");
$AD_dn = "CN=".ldap_connect('$_POST['login']').",OU=XXX,OU=XXX,DC=XXX,DC=XXX";
$AD_password = ldap_connect('$_POST['password']');
echo $AD_dn;
echo "<br>";
//what i've tried to convert the AD's var:
//convert of $AD_con and $AD_password
//$AD_dn1 = strval($AD_dn);
//$AD_password1 = strval($AD_password);
//display of the converts
//echo $AD_dn1;
//echo $AD_password1;
//connect function
if (isset($_POST['login']) && $_POST['password'] == 0){
if (ldap_bind($AD_con, $AD_dn, $AD_password)){
include 'frontpage.php';
}
else{
echo "invalid user/pass or other error";
}
}
else
echo "var aren't correctly collect";
?>
我在尝试测试这两个页面时遇到错误,这就是我得到的结果:
pitword
Pit wasntme
CN=Resource id #7,OU=XXX,OU=XXX,DC=XXX,DC=XXX
A PHP Error was encountered
Severity: Warning
Message: ldap_bind() expects parameter 3 to be string, resource given
Filename: pages/ADconnect.php
Line Number: 30
Backtrace:
File: C:\wamp64\www\test\application\views\pages\ADconnect.php
Line: 30
Function: ldap_bind
File: C:\wamp64\www\test\application\controllers\pages.php
Line: 10
Function: view
File: C:\wamp64\www\test\index.php
Line: 315
Function: require_once
invalid user/pass or other error
所以我的字段登录名和密码的值从一个页面正确地恢复到另一个页面,并且我已经用纯文本测试了连接功能以查看问题是否来自于此。但我已经到达了我的 AD 服务器。 问题似乎是当我使用 ldap_connect() 函数时,我的变量 $AD_dn 和 $AD_password 的值被更改为 "resource #7" 和 "resource #8"。通常它必须为 $AD_dn 显示 "pit wasntme" 和为连接函数显示 "pitpass" $AD_password。
通过阅读错误,我了解到我必须将它们转换为字符串,因为这是 ldap_bind 需要的第二个和第三个参数。我已经尝试过我在网上找到的东西(我把它放在我最后一个回声“
”下面的评论中),但结果仍然是一样的。
如果有人可以就我做错了什么或我如何正确恢复我的表单发送的输入值提供提示或解释,那就太好了。
感谢您花时间阅读本帖。
好的,感谢任何试图帮助我的人,但我找到了解决方案:我在 $_POST['login'] 和 $_POST[[=13] 上使用 ldap_connect() =]] 但如果我删除此功能,一切正常!