(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
一个 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 password is : " . $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 password is : " . $new_pw . "\n";
}
}
}
if (!$c) { // 原始错误不是 28001,或者密码更改失败
$m = oci_error();
trigger_error('Could not connect to database: '. $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 开始可用。