Preciso de um script para alterar a senha no LDAP. Todos aqui da empresa estamos com a mesma senha, então preciso desenvolver um script para que o funcionário consiga alterar sua senha via WEB. Na verdade eu tenho um script aqui, mas está dando erro.
O script é esse. Desde já agradeço!
<?php
$message = array();
function changePassword($user,$oldPassword,$newPassword,$newPasswordCnf){
Pergunta
Gisele.Passoni
Preciso de um script para alterar a senha no LDAP. Todos aqui da empresa estamos com a mesma senha, então preciso desenvolver um script para que o funcionário consiga alterar sua senha via WEB. Na verdade eu tenho um script aqui, mas está dando erro.
O script é esse. Desde já agradeço!
<?php
$message = array();
function changePassword($user,$oldPassword,$newPassword,$newPasswordCnf){
global $message;
$user = $user . "@lan.xxxxx.xxx.xx";
$server = 'xxx.xx.xx.xxx';
$dn = 'CN=Users,DC=lan,DC=xxxx,DC=xxx,DC=xx';
error_reporting(0);
ldap_connect($server);
$con=ldap_connect($server);
ldap_set_option($con, LDAP_OPT_PROTOCOL_VERSION, 3);
$sr = ldap_search($con,$dn,"(uid=*)");
$records = ldap_get_entries($con, $sr);
$dn = $records[0]["dn"];//
$message[] = "User: " .$user;
$message[] = "Pass: " . $oldPassword;
$message[] = "nPass: " .$newPassword;
if (ldap_bind($con, $user, $oldPassword) === false) {
$message[] = "Error E104 - Current password is wrong.";
return false;
}
else {
$message[] = "CONECTOU.";
if ($newPassword != $newPasswordCnf ) {
$message[] = "Error E101 - New passwords do not match! ";
return false;
}
if (strlen($newPassword) < 8 ) {
$message[] = "Error E102 - Your new password is too short! ";
return false;
}
if (!preg_match("/[0-9]/",$newPassword)) {
$message[] = "Error E103 - Your password must contain at least one digit. ";
return false;
}
if (!preg_match("/[a-zA-Z]/",$newPassword)) {
$message[] = "Error E103 - Your password must contain at least one letter. ";
return false;
}
$entry = array();
$entry["userPassword"] = base64_encode( pack( "H*", sha1( $newPassword ) ) );
// $entry["userPassword"] = base64_encode($newPassword );
if (ldap_modify($con,$user,$entry) === false){
$message[] = "E200 - Your password cannot be change, please contact the administrator."; }// ESSA É A MENSAGEM QUE APARECE AO FAZER O TESTE :unsure:
else {
$message[] = " Your password has been changed. ";
//mail($records[0]["mail][0],"Password change notice : ".$user,"Your password has just been changed.");
}
return false;
}
}
?>
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.