# oci_password_change

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_password_change — Cambia la contraseña de un usuario de Oracle

### Descripción

oci_password_change(
resource `$connection`,
string `$username`,
string `$old_password`,
string `$new_password`
): bool
oci_password_change(
string `$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.

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