2008-09-25 112 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