您在這裡

請問大家! 如果我不希望讀者修改密碼,請問要修改哪個模組或hook呢?

nobody1225's 的頭像
nobody1225 在 2007-04-02 (週一) 21:39 發表

請問大家!
如果我不希望讀者修改密碼,
請問要修改哪個模組或hook呢?
謝謝大家。

Admin 都不可以改密碼:

user.module
function user_edit_form():

<?php
if (!$register) {
/*
$form['account']['pass'] = array('#type' => 'password_confirm',
'#description' => t('To change the current user password, enter the new password in both fields.'),
'#size' => 25,
);
*/
}
?>

function user_save():
<?php
foreach ($array as $key => $value) {
if ($key == 'pass' && !empty($value)) {
/*
$query .= "$key = '%s', ";
$v[] = md5($value);
*/
}?>

Admin 可以改
其他人不可以:

user.module
function user_edit_form():

<?php
if (!$register AND $admin ) {
$form['account']['pass'] = array('#type' => 'password_confirm',
'#description' => t('To change the current user password, enter the new password in both fields.'),
'#size' => 25,
);
}
?>

Joetsui's blog

這是作法的不同,這樣子也可以達到效果,不過有危險。

譬如說,如果有一個的三方的模組,好比說可以管理電子報的密碼
然後裡頭的的$form也叫做$form[account][pass],那這樣的hack就會有問題
也就是說,因為drupal是只要透過drupal_get_form呼叫產生的form,都會進到hook_form_alter裡頭
也就是說,如果今天去到了一個epaper/account的頁面,裡頭也有密碼欄位,那就會給消去了
因此這樣的check不是unique的話,就有機率會出包
而$form_id則是透過drupal_get_form呼叫的unique function名稱
(php的function名稱得是unique的)
就比較不容易出包囉...

當然出狀況的機率很小很小啦
只是想表達,要用$form_id check的寫法是會有源由的

--
from open mind to open source~

您好! 謝謝您的提醒!
會這麼做是有原因的!
因為之前有做個模組,
http://drupaltaiwan.org/forum/20070323/1035
讀者從 "圖書館查詢系統" 修改密碼,
之後讀者登入 drupal 時會自動修改密碼,
又因為不能反向修改 "圖書館查詢系統" 的密碼(廠商鎖資料庫的關係),
所以出此下策。
謝謝大家的回覆!
感激不盡