如何使用PHP往windows中添加用户
程序员文章站
2022-09-20 09:52:18
方法有一: 因为添加用户,所以你运行php程序的用户必须是管理员权限(administrator),并且同时需要你的php.ini中的安全模式没有打...
方法有一:
因为添加用户,所以你运行php程序的用户必须是管理员权限(administrator),并且同时需要你的php.ini中的安全模式没有打开,并且关闭函数中没有关闭system()、exec()、passthru()等函数。
( 以下说明针对windows2000/windows xp/windows 2003 )
一、使用iis做web服务器
如果是使用iis做服务器的话,那么运行php的帐户就是:iusr_xxxxxxxx,iwam_xxxxxxx,(xxxx代表服务器的计算机名),那么你必须把这两个用户加到管理员组:administrators 。当然,你这样做的话,会给服务器安全带来威胁。
二、使用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.exe来执行,并且不会有安全问题。
假设你的php安装在c:\php\中,那么我们就使用命令提示符的来执行php脚本来添加用户。
php代码:
//c:\test.php
<?php
@system("net user test test /add");
?>
保存在c:\test.php文件中
在cmd下执行:
c:\php\php.exe c:\test.php
提示:
c:\>c:\php\php.exe c:\test.php
命令成功完成。
再将方法一中的那段代码拿到这里来执行,然后php.exe充当shell脚本引擎。然后写成批处理,通过定时任务来执行。当然,也可以考虑使用其他语言来实现,比如vb/vc之类的,定期去数据库中检索是否有新添加的用户,然后再把用户添加到系统中。
因为添加用户,所以你运行php程序的用户必须是管理员权限(administrator),并且同时需要你的php.ini中的安全模式没有打开,并且关闭函数中没有关闭system()、exec()、passthru()等函数。
( 以下说明针对windows2000/windows xp/windows 2003 )
一、使用iis做web服务器
如果是使用iis做服务器的话,那么运行php的帐户就是:iusr_xxxxxxxx,iwam_xxxxxxx,(xxxx代表服务器的计算机名),那么你必须把这两个用户加到管理员组:administrators 。当然,你这样做的话,会给服务器安全带来威胁。
二、使用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.exe来执行,并且不会有安全问题。
假设你的php安装在c:\php\中,那么我们就使用命令提示符的来执行php脚本来添加用户。
php代码:
//c:\test.php
<?php
@system("net user test test /add");
?>
保存在c:\test.php文件中
在cmd下执行:
c:\php\php.exe c:\test.php
提示:
c:\>c:\php\php.exe c:\test.php
命令成功完成。
再将方法一中的那段代码拿到这里来执行,然后php.exe充当shell脚本引擎。然后写成批处理,通过定时任务来执行。当然,也可以考虑使用其他语言来实现,比如vb/vc之类的,定期去数据库中检索是否有新添加的用户,然后再把用户添加到系统中。
推荐阅读