(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_password_change — Modifica la contraseña de un usuario Oracle
$connection
,$username
,$old_password
,$new_password
$database_name
,$username
,$old_password
,$new_password
Modifica la contraseña del usuario username
.
La función oci_password_change() es más útil con scripts PHP en línea de comandos, o cuando se utilizan conexiones no persistentes en la aplicación PHP.
connection
Un identificador de conexión Oracle, devuelto por la función oci_connect() o la función oci_pconnect().
username
El nombre de usuario Oracle.
old_password
La contraseña antigua.
new_password
La nueva contraseña a establecer.
database_name
El nombre de la base de datos.
Cuando database_name
es proporcionado,
oci_password_change() devuelve true
en caso de éxito,
o false
si ocurre un error. Cuando connection
es proporcionado,
oci_password_change() devuelve el recurso de
conexión en caso de éxito, o false
si ocurre un error.
Ejemplo #1 Ejemplo con oci_password_change() para cambiar la contraseña de un usuario ya 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 "La nueva contraseña es: " . $new_pw . "\n";
?>
Ejemplo #2 Ejemplo con oci_password_change() para conectarse y cambiar la contraseña en una sola 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: La contraseña ha expirado"
// Conexión y cambio de contraseña en una etapa
$c = oci_password_change($dbase, $user, $current_pw, $new_pw);
if ($c) {
echo "La nueva contraseña es: " . $new_pw . "\n";
}
}
}
if (!$c) { // El error original no era 28001, o el cambio de contraseña falló
$m = oci_error();
trigger_error('No se pudo conectar a la base de datos: '. $m['message'], E_USER_ERROR);
}
// Uso de la conexión $c
// ...
?>
Nota:
Cambiar la contraseña, con esta función, o directamente en Oracle debe hacerse con precaución. Esto se debe a que las aplicaciones PHP podrían seguir utilizando conexiones persistentes con la contraseña antigua. La mejor práctica es reiniciar todos los servidores web una vez que la contraseña ha sido cambiada.
Nota:
Si se actualizan las bibliotecas cliente o la base de datos Oracle desde una versión anterior a 11.2.0.3 a una versión 11.2.0.3 o superior, la función oci_password_change() puede devolver el error "ORA-1017: invalid username/password" hasta que las versiones del cliente y del servidor sean idénticas.
Nota:
La segunda sintaxis de oci_password_change() está disponible desde la versión de OCI8 1.1.