douchibu7040 2018-02-07 10:41
浏览 563

PHP LDAP - 允许用户更改自己的密码

I've been creating a web portal to allow our staff to change their AD passwords. While I can change the users password using ldap_mod_replace when admin credentials are used for the ldap_bind, it won't work when I bind with the users credentials. Is there something more I need to do to allow a user to change their own password?

This is a snippet of my code that does the password change.

$ldap_conn = ldap_connect($ldap_host);

ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, 3);
ldap_set_option($ds, LDAP_OPT_REFERRALS, 0);

$ldap_username  = $_SESSION['User'];

$ldap_oldpassword = $_POST['oldpswd'];
$ldap_newpassword = $_POST['newpswd'];
$ldap_confirmnewpassword = $_POST['newpswdconfirm'];

if (ldap_bind($ldap_conn, $ldap_username, $ldap_oldpassword)) {
//encode password
    if ($ldap_newpassword == $ldap_confirmnewpassword){
        $pwdtxt = $ldap_newpassword;
        $newPassword = '"' . $pwdtxt . '"';
        $newPass = iconv( 'UTF-8', 'UTF-16LE', $newPassword );
        $userdata["unicodepwd"] = $newPass; 
        // change password
        $userDn = $_SESSION['DN'];
        $result = ldap_mod_replace($ldap_conn, $userDn, $userdata); 
        if ($result) {
            echo "User modified!";
        } 
    }
    else{
        $response = "failed";
        echo $response;
    }
}
else {
        ldap_get_option($ldap_conn, LDAP_OPT_DIAGNOSTIC_MESSAGE, $extended_error);

            $response = $extended_error;
            echo json_encode(array($response));
}

Thanks

  • 写回答

1条回答 默认 最新

  • qq_38806643 2019-11-12 15:15
    关注

    您修改密码有报 Server is unwilling to perform 错误吗?

    评论

报告相同问题?

悬赏问题

  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件