2008-09-25 183 views
0

我需要通過瀏覽器做一些命令行。 我需要在命令行做的是:php - proc_open(或其他功能)

$login 
<login name> 
<password> 
$passwd 
<old password> 
<new password> 
<retype new password> 

所以,我怎麼可以這樣使用proc_open功能? 或者我應該使用另一個功能來做到這一點?


亞當賴特,我試過你的例子,但我只是不能更改用戶密碼。 我是否需要在腳本中做任何其他事情(除了定義$ user,$ userPassword和$ newPassword)?

感謝

回答

1

您不需要發出登錄爲用戶更改密碼,只要給他們的名字passwd文件。用popen(因爲我們不需要在這個小小的例子來讀取),像

$pp = popen("passwd ${user}", "w"); 
fwrite($pp, $oldPassword . '\n'); 
fwrite($pp, $newPassword . '\n'); 
fwrite($pp, $newPassword . '\n'); 
pclose($pp); 

如果你想讀的響應,使用proc_open,並從你給出的標準輸出柄剛讀。

我希望這是一切安全的,並且你有一個批次的用戶名sanitisation。

+0

這將只在php解釋器以超級用戶權限運行(只有root用戶可以更改其他用戶的密碼)時才起作用。如果你不關心安全性,你可以設置passwd的超級用戶位或使用sudo。 – 2008-09-25 12:05:37

1

http://pecl.php.net/package/PAM可能是你可以使用的東西。
它有一個功能bool pam_chpass(string $username, string $oldpassword, string $newpassword [, string &$error ])
但我從來沒有用過它。

+0

似乎無法在我的Ubuntu 10.04盒子上運行。 – wag2639 2010-06-17 22:17:58