用PHP即時新增,刪除FTP帳號和更改FTP密碼的函式 (轉)

worldblog發表於2008-01-24
用PHP即時新增,刪除FTP帳號和更改FTP密碼的函式 (轉)[@more@]

網上不知道有沒有Serv-U 的介面,這類的資料,由於不知道Serv-U的方式,所以沒有使用加密密碼的方式,如果有人知道演算法,麻煩你告訴我一聲
$filepath是Serv-U的地址,$FTPpath是你要開通FTP的夾地址
主要方式是把ServUDaemon.ini檔案讀如陣列,然後運算元組元素達到修改檔案的目的.初學,還不會寫Class,大蝦多多指點

///////////////////////////////////////////////////////////////////////////////////
//  Copyright (C) 醉雨梧桐 All rights reserved.  //
//  Powered by 醉雨梧桐    //
//  .cn/">    //
//  to:winterfire@163.com">winterfire@163.com    //
//////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////
function add_ftp_user($user,$pws)//把新增到Serv-U的使用者列表中
{
global $filepath,$FTPpath;
@copy($filepath,$filepath.".bak");//檔案
$servu_config=file($filepath.".bak");
for($i=0;$i if(substr($servu_config[$i],0,4)=="User"){
  $user_num[0]=substr($servu_config[$i],4,1)+1;//判斷現在有多少使用者
  $user_num[1]=$i+1;//判斷新使用者新增的位置
 }
}
for($i=count($servu_config);$i<=$user_num[1];$i--){
  $servu_config[$i]=$servu_config[$i-1];//把新使用者後的內容向後一行
}
$servu_config[$user_num[1]]="User".$user_num[0]."=$user|1|0";//新增新使用者到列表中
del_nl($servu_config);//刪除空行
$inifile=fopen($filepath,"w");
fputs($inifile,implode("n",$servu_config));//配置檔案寫入ServUDaemon.ini
fclose($inifile);

//使用者詳細配置
$config="n[USER=$user|1]
Pass=$pws
HomeDir=g:my documentshttpwebspace".$user."
RelPaths=1
DiskQuota=1|10240000|0
MaxUsersLoginPerIP=1
SpeedLimitUp=51200
SpeedLimitDown=51200
TimeOut=60
SessionTimeOut=600
MaxNrUsers=1
Access1=G:My Documentshttpwebspace".$user."|RWAMLCDP";
$inifile=fopen($filepath,"a");//開啟新的檔案指標
fputs($inifile,$config) or die("無法寫入檔案");//新增新使用者的配置檔案
fclose($inifile);//關閉檔案指標
mkdir($FTPpath."建立ftp的資料夾
}
////////////////////////////////////////////////////////////////
function change_pws($user,$pws)//更改密碼
{
  global $filepath;
  $servu_config=file($filepath);
  del_nl($servu_config);//去除空行
  for($i=0;$i  if($servu_config[$i]=="[USER=$user|1]"){ //判斷使用者所在的陣列
  break;//退出迴圈,取得名字項的$i值
 }//if
  }//for
  for($i;$i  if(substr($servu_config[$i],0,9)=="Password="){//判斷名字項的下一個是密碼項
  $servu_config[$i]="Password=$pws";//修改密碼值
  break;//退出迴圈,防止修改到其他密碼項
 }
  }
  if($i==count($servu_config)){
  print "找不到該使用者";
  exit();
  }
  $inifile=fopen($filepath,"w");//以寫入的方式開啟檔案,原來檔案中的內容將消失
  fputs($inifile,implode("n",$servu_config));//寫入檔案
  fclose($inifile);//關閉檔案指標
}
/////////////////////////////////////////////////////////////
function del_user($user)//刪除使用者
{
  global $filepath;
  $servu_config=file($filepath);
  del_nl($servu_config);
  for($i=0;$i  if(substr($servu_config[$i],6,strlen($servu_config[$i])-10)==$user){ //判斷使用者所在的陣列索引
  $servu_config[$i]="";//刪除檔案列表中的使用者名稱例如去掉User1=ANONYMOUS|1|0
  break;//退出迴圈,以便刪除下一個內容:使用者配置檔案
 }//if
  }//for

  for($i;$i  if($servu_config[$i]=="[USER=$user|1]")
  $start=$i;//取得第一項的$i
 if(isset($start)&&substr($servu_config[$i],0,6)=="[USER="&&($i>$start))
  break;//退出迴圈
  }//for
    $end=$i-1;//取得最後一項$i-1
  if(!isset($start)){
  print "使用者不存在";
  exit();
  }//end if
  for($i=$start;$i<=$end;$i++){
  $servu_config[$i]="";
  }
  del_nl($servu_config);//刪除空行
  $inifile=fopen($filepath,"w");//以寫入的方式開啟檔案,原來檔案中的內容將消失
  fputs($inifile,implode("n",$servu_config));//寫入檔案
  fclose($inifile);//關閉檔案指標
}
////////////////////////////////////////刪除空行///////////////////////////////////////////
function del_nl(&$arr)
{
 for($i=0;$i  $arr[$i]=trim($arr[$i]);//去掉空格,回車,換行
  if($arr[$i]==""){
  $j=$i;
  while($arr[$j])
  $arr[$j]=$arr[$j+1];
 $arr[$j]="";
  }//end if
 }//end for
}//end del_nl
?>


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-998313/,如需轉載,請註明出處,否則將追究法律責任。

相關文章