(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)
oci_password_change — 更改Oracle用户的密码
更改用户名为 $username
的用户的密码。
oci_password_change() 函数最适用于PHP命令行脚本,或在整个PHP应用程序中使用非持久连接时。
connection
Oracle连接标识符,由 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: 密码已过期"
// 同时登录并重置密码
$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应用程序可能会继续成功地重用持久连接,方法是使用旧密码进行身份验证。最佳实践是在更改用户密码后重新启动所有Web服务器。
注意:
如果将Oracle客户端库或数据库从11.2.0.3之前的版本升级到11.2.0.3或更高版本,除非客户端和服务器版本同时升级,否则 oci_password_change() 可能会出现“ORA-1017: 无效用户名/密码”错误。
注意:
第二个 oci_password_change() 语法自OCI8版本1.1起可用。