使用PHP往Windows系统中添加用户

news/2024/7/6 1:35:48

再csdn论坛上看到类似问题,所以有了一下回答,一个简单的思路。
http://community.csdn.net/Expert/topic/4190/4190360.xml?temp=.7591669

可以实现, 方法有二。

一、再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代码中执行添加用户操作了:

按照楼主的需求,描述如下代码:

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
@system("net user heiyeluren 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之类的,定期去数据库中检索是否有新添加的用户,然后再把用户添加到系统中。





http://www.niftyadmin.cn/n/3652182.html

相关文章

Linux系统网卡配置

Linux系统网卡配置 点击编辑,虚拟网络编辑器

轻型数据库SQLite结合PHP的开发

轻型数据库SQLite结合PHP的开发SQLite是一款轻型的数据库,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linu…

Linux基础命令(1)

内容概要1、什么是操作系统内核2、Shell3、Linux命令类型4、Linux的命令格式5、获取命令的帮助方法6、常用命令相对路径的表现形式ls的常用选项1、什么是操作系统内核 操作系统内核就是会调用计算机中的硬件资源,操作系统会把二进制数封装成各种各样的系统调用&…

使用JavaScript写的操作系统和输入法程序

JavaScript是一门客户端的脚本语言,但是你千万不要认为它功能弱哦,因为你看了下面的例子之后就明白了。一. 用JavaScript写的操作系统呵呵,那天同事开玩笑说,要是有个用JS写的操作系统就好了. 我们都笑他异想天开,想不到的是,竟然…

Unix程序设计:实现cp命令

最近苦读《Unix系统编程》便写了一些实例,逐步增加自己Unix程序设计的能力。首先来实现一个Unix下常用命令:cp先看代码:#include #include #include #define BUFSIZE 512#define PERM 0755/* copy file function */int copyfile(const char…

PHP中模板分页的处理

PHP普通开发中php代码和html代码夹杂的情况中处理分页是比较简单的,也可以构建成函数的形式。最近开发中使用 Pear::DB Smarty 的结构,于是考虑如果对模板进行分页,因为不能直接操作页面,所以就考虑生成分页字符串的形式。因为是…

使用Apache的rewrite技术

使用Apache的rewrite技术做PHP项目中需要用到URL重定向技术,基本上的需求就是把比如 /user/heiyeluren 重定向到 /user.php?uidheiyeluren 之类的URL上,当然,你也可以把 /article/200707291011.html重定向到 /article.php?id200507291011 之…

Linux之RAID(磁盘软件阵列)

内容概要1、什么是RAID2、RAID的级别RAID 0RAID 1RAID 10RAID 5RAID 62、阵列卡的缓存3、创建软件RAID磁盘阵列步骤:1、什么是RAID RAID我们一般称为磁盘软件阵列,是Redundant Array of Independent Disks的缩写,中文的意思是独立冗余磁盘阵列。 RAID的…