您在這裡

如何能預先保留一些用戶uid

say2sky's 的頭像
say2sky 在 2008-08-03 (周日) 03:12 發表

在drupal系統的用戶創建中, uid是從1開始遞升,
現在希望能事先保留幾十個最小的uid作為日後網站管理人使用, 如何能夠達成這樣的要求?

我嘗試過通過users表創建一些"空/虛擬"的用戶, 如
insert into users (uid, name, pass, mail, created, access, data) value(5, 5, 'd91713298027407d', '5@gmail.com', UNIX_TIMESTAMP(now()), UNIX_TIMESTAMP(now()), 'a:0:{}');
但是這些與drupal的用戶創建系統充到.

5.x 是用 db_next_id('{users}_uid');
你到資料庫內找 sequence 這個 table
搜尋第一欄是 users_uid 的第二欄 就是目前已經產生的 uid 了
直接改變那個數值
下次遇到使用者新增呼叫 db_next_id('{users}_uid'); 的時候
就會從你改過的數值 +1 當做新的 uid 了

6.x 取消 db_next_id 改用 db_last_insert_id
sequence 這個 table 也被取消了
這部份我就不清楚要怎麼修改了

補充一下
可以先進行call function user_save,然後 disable user的狀態,可能是比較好的作法

更簡單的方式是用simpletest建立測試帳戶,設定人數他就會幫你建好,然後把資料表的status改掉就行了
--
from open mind to open source~

--
from open mind to open source~

很欽佩, 你對drupal的熟悉程度和把握.

我是用的5.x. 全部的已經產生最大id都在sequence 這個 table裏啊, 好了, 謝謝.

6.x有許多模組還沒有出來, 特別是imagefield連alpha版都沒出來, 也不知會不會出了.

關于版本的采用也有值得探討的, drupal好像版本支持也只有兩年, 第一年裏可能會遇到模組不齊全. 讓每個版本的使用時間會短了許多.

因為開發上的需求
大部分都得自己寫模組
一開始什麼都不清楚
只能邊查 Pro Drupal Development 邊寫

目前開發的時候主要還是選擇 5.x
有缺少的功能還可以自己寫模組來補上

6.x 的變動目前並不是了解的很透徹
單就drupal 6 那本書看到的部份 已經算是非常大個改動了

menu 建構的格式不同

多了模組可以用的 hook_theme

表單的 _valid 和 _submit 也有細微的變動
原本的 $form_values 參數變成 &$form_state
所以在 _valid 要傳資料到 _submit 不再需要使用 form_set_value
直接修改 $form_state 內的資料就行了
然後因為送出後回到原表單 一樣可以用 &$form_state 取值
所以 multistep form 也取消了
在 _submit 內
也不使用 return path 來決定導向的頁面
直接設定 $form_state['redirect'] 這個變數的值就行了

另外目前在查 API 的時候
看到不少只到 5.x 的函式
或是只有 6.x 以上的函式
例如上面提到的 db_next_id 和 db_last_insert_id
不但函式名不同 使用方式也有差異 並不能完全替代
db_last_insert_id($table, $field) 必須傳入 $table, $field 這兩個參數
而且似乎會去檢查db內對應的 table 與 field
所以可能 db 內必須要有實際的 table 與 field 才能使用
不像 db_next_id 隨便自定一個名稱也可以使用 這是安全性上的考量
其他可能還有許多變動的函式

目前還沒有實際撰寫 6.x 的模組
到時候遇到的問題可能會更多吧

看了你的描述體會到了6.x 結構的很大改變, 前面我也大概看了一下database的table有許多不同和新table, 但是沒有時間去深入. 從我的問題和你的講解和解決辦法我感覺到了你對 drupal的整體結構的熟悉, 讓我很羨慕, 呵呵.

另外我想知道的你用 6.x 是對過去用5.x版的同一個項目(project)的升級還是要開始全新的項目. 對5.x版的項目完成後是要如何去維護. 在網上看到的統計現在還是5.x版用的是多數, 但是很好奇人們在用新版和依舊用舊版的考量.

其實是有好幾個 drupal 網站建置的專案
之前建置好的 5.x 網站 目前還沒有升級的計畫
之後預計要開發的 應該還是以 5.x 為主

之前有一個架簡單的手冊+討論區的站的專案
就是想說用 6.x 試試看
結果最後卡在權限相關的模組 6.x 的還在開發中 但是有 5.x 的版本
最後只好改回使用 5.x 來架設

目前 6.x 的模組雖然有多了一些 5.x 沒有的新功能的新模組
但是很多 5.x 已經開發完成的模組
6.x 的版本都還沒有

我想
大概起碼要等到 views 2 + cck 都釋出正式版
改用 6.x 的才會比較多吧

6.x 的部份
目前手上還沒有實際需要使用 6.x 來開發模組的專案
只是自己找空閒時間翻翻 learning drupal 6 module development 研究一下而已
不過這本書感覺寫的很淺 不像 pro drupal development 比較完整與深入
真希望會出 6.x 的版本的 pro drupal development

我也是感覺contributed module的版本滯後使用戶不能選用新的drupal版本, 現在有許多功能還是要依賴第三方的模組. 不知drupal是否有在未來將views 和 cck 這樣的關鍵模組加入的計劃. 只是希望能盡快的實現.

現在 drupal 的開發步驟與4.x時是有很大的不同了. 7.x版明年初就又會出來, 不像是4.x 版一共持續了5年. 這樣第三方的模組和drupal版本的差感覺的更加突出.

這個月有一本 Pro Drupal Development, Second Edition 要出來, 是與 6.x 相關的, 可能是比較適合你的要求和程度的.

Drupal 6 是會去抓 users 的 AUTO_INCREMENT, 所以把 AUTO_INCREMENT 的值加大應該就可以了. 只是很怪的, 我用 ALTER TABLE dr_users SET AUTO_INCREMENT = 3 指令, 執行是成功的, 但是 AUTO_INCREMENT 的值還是沒變.

但是詭異的是, 我把 users 整個 table 給 drop 再重建, 再用 ALTER TABLE dr_users SET AUTO_INCREMENT = 3 指令就可以了.