用php写入nt域用户

可以实现,   方法有二。  
   
  因为添加用户,所以你运行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,休闲,域,nt)