(PHP 5, PHP 7, PECL OCI8 >= 1.1.0)
oci_password_change — Cambia la contraseña de un usuario de Oracle
$connection
, string $username
, string $old_password
, string $new_password
) : bool$dbname
, string $username
, string $old_password
, string $new_password
) : resource
Cambia la contraseña del usuario dado por username
.
La función oci_password_change() es más útil para scripts de línea de comandos de PHP, o cuando se usan conexiones no persistentes a través de una aplicación de PHP.
connection
Un identificador de conexión de Oracle devuelto por oci_connect() o oci_pconnect().
username
El nombre del usuario de Oracle.
old_password
La contraseña antigua.
new_password
La nueva contraseña a establecer.
dbname
El nombre de la base de datos.
Devuelve TRUE
en caso de éxito o FALSE
en caso de error.
Ejemplo #1 Ejemplo de oci_password_change() cambiando la contraseña de un usuario ya conectado
<?php
$bd = 'localhost/orcl';
$usuario = 'cj';
$contraseña_actual = 'welcome';
$contraseña_nueva = 'geelong';
$c = oci_pconnect($usuario, $contraseña_actual, $bd);
oci_password_change($c, $usuario, $contraseña_actual, $contraseña_nueva);
echo "La nueva contraseña es : " . $contraseña_nueva . "\n";
?>
Ejemplo #2 Ejemplo de oci_password_change() conectando y cambiando la contraseña en un solo paso
<?php
$bd = 'localhost/orcl';
$usuario = 'cj';
$contraseña_actual = 'welcome';
$contraseña_nueva = 'geelong';
$c = oci_pconnect($usuario, $contraseña_actual, $bd);
if (!$c) {
$m = oci_error();
if ($m['code'] == 28001) { // "ORA-28001: the password has expired"
// Identinficarse y reiniciar la contraseña al mismo tiempo
$c = oci_password_change($bd, $usuario, $contraseña_actual, $contraseña_nueva);
if ($c) {
echo "La nueva contraseña es : " . $contraseña_nueva . "\n";
}
}
}
if (!$c) { // El error original era 28001, o que 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);
}
// Usar la conexión $c
...
?>
Nota:
El cambio de la contraseña mediante esta función o directamente en Oracle debería hacerse con cuidado. Esto es debido a que las aplicaciones de PHP podrían seguir reutilizando con éxito conexiones persistentes mediante la autenticación con contraseñas antiguas. La mejor práctica es reinicializar todos los servidores web siempre que se cambie una contraseña de usuario.
Nota:
Si se actualizan las bibliotecas cliente o la base de datos de Oracle desde una versión anterior a la 11.2.0.3 hasta esta misma versión o superior, oci_password_change() pordría generar el error "ORA-1017: invalid username/password" a menos que las versiones del cliente y del servidor se actualicen a la vez.
Nota:
Está disponible la segunda sintaxis de oci_password_change() desde la versión 1.1 de OCI8.
Nota:
En versiones de PHP anteriores a la 5.0.0 se debe usar ocipasswordchange() en su lugar. Este nombre aún puede usarse; se dejó como alias de oci_password_change() por razones de retrocompatibilidad. Sin embargo, este nombre es obsoleto y no se recomienda.