PHP Conference Japan 2024

oci_password_change

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

oci_password_change變更 Oracle 使用者的密碼

說明

oci_password_change(
    資源 $connection,
    字串 $username,
    字串 $old_password,
    字串 $new_password
): 布林值
oci_password_change(
    字串 $database_name,
    字串 $username,
    字串 $old_password,
    字串 $new_password
): 資源 (resource)

變更使用者名稱為 username 的使用者密碼。

oci_password_change() 函式最適用於 PHP 命令列腳本,或者在整個 PHP 應用程式中使用非持久連線時。

參數

connection (連線)

oci_connect()oci_pconnect() 返回的 Oracle 連線識別碼。

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 應用程式可能會繼續使用舊密碼驗證,成功地重複使用持久連線。最佳做法是在每次更改使用者密碼時重新啟動所有網路伺服器。

備註:

如果將 Oracle 用戶端程式庫或資料庫從 11.2.0.3 之前的版本升級到 11.2.0.3 或更高版本,除非同時升級用戶端和伺服器版本,否則 oci_password_change()可能會出現錯誤「ORA-1017:無效的使用者名稱/密碼」。

備註:

第二種 oci_password_change() 語法自 OCI8 1.1 版起可用。

新增備註

使用者貢獻的備註

此頁面沒有使用者貢獻的備註。
To Top