(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_password_change — Изменяет пароль пользователя Oracle
$connection
,$username
,$old_password
,$new_password
$database_name
,$username
,$old_password
,$new_password
Изменяет пароль пользователя, указанного в username
.
Функция oci_password_change() особенно полезна для скриптов PHP командной строки или при использовании непостоянных соединений во всем приложении PHP.
connection
Идентификатор соединения, возвращаемый функцией oci_connect() или oci_pconnect().
username
Имя пользователя Oracle.
old_password
Старый пароль.
new_password
Новый пароль.
database_name
Имя базы данных.
Если указан параметр database_name
, oci_password_change() возвращает true
в случае успешного выполнения или false
, если возникла ошибка.
Если указан параметр connection
, oci_password_change() возвращает ресурс соединения в случае успешного выполнения или false
, если возникла ошибка.
Пример #1 Пример использования oci_password_change() с изменением пароля уже подключённого пользователя
<?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_pw . "\n";
?>
Пример #2 Пример использования oci_password_change() с подключением и изменением пароля одновременно
<?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"
// Подключение и сброс пароля одновременно
$c = oci_password_change($dbase, $user, $current_pw, $new_pw);
if ($c) {
echo "Новый пароль : " . $new_pw . "\n";
}
}
}
if (!$c) { // Ошибка не совпадала с 28001, или не получилось изменить пароль
$m = oci_error();
trigger_error('Не удалось подключиться к базе данных: '. $m['message'], E_USER_ERROR);
}
// Использование подключения $c
// ...
?>
Замечание:
Изменение пароля с помощью этой функции или непосредственно в Oracle должно выполняться аккуратно, поскольку PHP-приложение может продолжать использовать в постоянных соединениях данные аутентификации последнего удачного подключения, которые уже устарели. Наилучшим решением может быть перезапуск всех веб-серверов после смены пароля.
Замечание:
При обновлении библиотеки клиента Oracle или базы данных от версии установки до версии 11.2.0.3 и выше функция oci_password_change() может вернуть ошибку "ORA-1017: invalid username/password" (Неверные имя пользователя/пароль), если версии и клиента и сервера обновлены в одно время.
Замечание:
Второй набор параметров функции oci_password_change() доступен начиная с версии OCI8 1.1.