(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_password_change — Altera a senha do usuário do Oracle
$connection
,$username
,$old_password
,$new_password
$database_name
,$username
,$old_password
,$new_password
Altera a senha do usuário username
.
A função oci_password_change() é mais útil para scripts de linha de comando PHP, ou quando conexões não persistentes são usadas em toda a aplicação PHP.
connection
Um identificador de conexão Oracle, retornado por oci_connect() ou oci_pconnect().
username
O nome de usuário do Oracle.
old_password
A senha antiga.
new_password
A nova senha a ser definida.
database_name
O nome do banco de dados.
Quando database_name
é fornecido, oci_password_change() retorna true
em caso de sucesso,
ou false
em caso de falha. Quando connection
é fornecido, oci_password_change() retorna
o recurso de conexão em caso de sucesso, ou false
em caso de falha.
Exemplo #1 Exemplo de oci_password_change() alterando a senha de um usuário já conectado
<?php
$dbase = 'localhost/orcl';
$user = 'cj';
$current_pw = 'welcome';
$new_pw = 'geelong';
$c = oci_pconnect($user, $current_pw, $dbase);
oci_password_change($c, $user, $current_pw, $new_pw);
echo "New password is : " . $new_pw . "\n";
?>
Exemplo #2 Exemplo de oci_password_change() conectando e alterando a senha em uma só etapa
<?php
$dbase = 'localhost/orcl';
$user = 'cj';
$current_pw = 'welcome';
$new_pw = 'geelong';
$c = oci_pconnect($user, $current_pw, $dbase);
if (!$c) {
$m = oci_error();
if ($m['code'] == 28001) { // "ORA-28001: the password has expired"
// Faz login e redefine a senha ao mesmo tempo
$c = oci_password_change($dbase, $user, $current_pw, $new_pw);
if ($c) {
echo "A nova senha é : " . $new_pw . "\n";
}
}
}
if (!$c) { // The original error wasn't 28001, or the password change failed
$m = oci_error();
trigger_error('Não foi possível conectar ao banco de dados: '. $m['message'], E_USER_ERROR);
}
// Usando a conexão $c
// ...
?>
Nota:
A alteração da senha com esta função ou diretamente no Oracle deve ser feita com cuidado. Isso porque as aplicações PHP podem continuar a reutilizar conexões persistentes com sucesso autenticando-se com a senha antiga. A prática recomendada é reiniciar todos os servidores web sempre que a senha do usuário for alterada.
Nota:
Ao atualizar as bibliotecas do cliente Oracle ou o banco de dados de uma versão anterior à 11.2.0.3 para a versão 11.2.0.3 ou superior, oci_password_change() pode gerar o erro "ORA-1017: invalid username/password", a menos que as versões do cliente e do servidor sejam atualizadas ao mesmo tempo.
Nota:
A segunda sintaxe oci_password_change() está disponível desde a versão 1.1 do OCI8.