Funciones de OCI8
PHP Manual

oci_password_change

(PHP 5, PECL OCI8 >= 1.1.0)

oci_password_changeCambia la contraseña de un usuario de Oracle

Descripción

bool oci_password_change ( resource $connection , string $username , string $old_password , string $new_password )
resource oci_password_change ( string $dbname , string $username , string $old_password , string $new_password )

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.

Parámetros

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.

Valores devueltos

Devuelve TRUE en caso de éxito o FALSE en caso de error.

Ejemplos

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
...

?>

Notas

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.


Funciones de OCI8
PHP Manual