可以實現, 方法有二。
一、再Web中添加用戶
因為添加用戶,所以你運行PHP程式的用戶必須是管理員權限(Administrator),並且同時需要你的php.ini中的安全模式沒有打開,並且關閉函數中沒有關閉system( )、exec()、passthru()等函數。
( 以下說明針對Windows2000/Windows XP/Windows 2003 )
1、使用IIS做Web伺服器如果是使用IIS做伺服器的話,那麼運行PHP的帳戶就是:IUSR_XXXXXXXX,IWAM_XXXXXXX,(XXXX代表伺服器的電腦名稱),那麼你必須把這兩個使用者加到管理員群組:Administrators 。當然,你這麼做的話,會為伺服器安全帶來威脅。
1.使用Apache作為Web伺服器據我了解,Apache安裝成服務以後,那麼就是以system權限運行的,那麼就是說PHP運行的話,直接就是系統權限,已經超過了管理員權限,那麼執行命令更不再話下。如果你修改了Apache的運行用戶,那麼你必須指定Apache服務運行用戶是管理員以上權限,例如Administor或system權限。
然後你就可以在你的PHP程式碼中執行新增使用者操作了:
依照樓主的需求,描述如下程式碼:
<?php
define("USER_GROUP", "users"); //使用者群組,預設為users,為了安全,定義還是的使用者群組
define("ACTIVE", "YES"); //是否創建後直接啟動用戶,YES為激活,NO為不激活
//從資料庫提取用戶名和密碼
//假設表格為user_info,且只有欄位id, user, passwod
$sql = "SELECT user,password FROM user_info";
$result = mysql_query($sql) or die("Query database failed");
//循環插入用戶
while ($array = mysql_fetch_array($result)) {
if (!function_exists("system"))
die('Function system() not exists, add user failed.');
//新增使用者
@system("net user $array[user] $array[passwd] /active:ACTIVE /add");
//新增到指定群組
@system("net localgroup users $array[user] /del");
@system("net localgroup USER_GROUP $array[user] /add");
}
?>
以上程式碼實現了把你所有資料庫的用戶添加到本地系統,如果你想單一的添加,可以考慮更改成用戶註冊成功後就添加用戶,這個可以自己擴展。
二、使用php做shell腳本來添加用戶
另外,其實我還有個思路。可以在伺服器端利用php.exe來執行,並且不會有安全性問題。我剛做了測試,已經通過。
假設你的php安裝在c:php中,那我們就使用命令提示字元的來執行php腳本來加入使用者。
PHP程式碼:
//c:test.php
<?php
@system("net user heiyeluren test /add");
?>
儲存在c:test.php檔案中在cmd下執行:
c:phpphp.exe c:test.php
提示:
C:>c:phpphp.exe c:test.php
命令成功完成。
那就從這個角度出發,完全可以將上面我寫的那段程式碼拿到這裡來執行,然後php.exe充當shell腳本引擎。然後寫成批次處理,透過定時任務來執行。當然,也可以考慮使用其他語言來實現,例如vb/vc之類的,定期去資料庫中檢索是否有新新增的用戶,然後再把用戶加入系統。