apache+php自助修改svn密码

使用网上的一个php脚本可以自助修改svn用户的密码。环境为windows系统。

1、在httpd.conf中添加访问修改页面时使用svn认证

AuthType Basic
AuthName "svntools repository"
AuthUserFile "C:\Program Files\Apache Software Foundation\Apache2.2\passwd"
Require valid-user

2、建立svnpass文件夹
我是建在C:\Program Files\Apache Software Foundation\Apache2.2\htdocs\svnpass

3、使用以下代码在svnpass目录下保存为index.php
$username = $_SERVER["PHP_AUTH_USER"]; //经过 AuthType Basic 认证的用户名
$authed_pass = $_SERVER["PHP_AUTH_PW"]; //经过 AuthType Basic 认证的密码
$input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); //从界面上输入的原密码
$newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); //界面上输入的新密码
$repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); //界面上输入的重复密码
$action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); //以hide方式提交到服务器的action

if($action!="modify"){
$action = "view";
}
else if($authed_pass!=$input_oldpass){
$action = "oldpasswrong";
}
else if(empty($newpass)){
$action = "passempty";
}
else if($newpass!=$repeatpass){
$action = "passnotsame";
}
else{
$action = "modify";
}
?>




Subversion 在线自助密码修改

//action=view 显示普通的输入信息
if ($action == "view"){
?>































Subversion 密码修改
用 户 名:
原 密 码:
用户密码:
确认密码:





}
else if($action == "oldpasswrong"){
$msg="原密码错误!";
}
else if($action == "passempty"){
$msg="请输入新密码!";
}
else if($action == "passnotsame"){
$msg="两次输入密码不一致,请重新输入!";
}
else{
$passwdfile="\"C:\\Program Files\\Apache Software Foundation\\Apache2.2\\passwd\"";
$command='htpasswd.exe -b'." ".$passwdfile." ".$username." ".$newpass;
//echo $command;
system($command, $result);
//echo $result;
if($result==0){
$msg="用户[".$username."]密码修改成功,请用新密码登陆.";
}
else{
$msg="用户[".$username."]密码修改失败,返回值为".$result.",请和管理员联系!";
}
}

if (isset($msg)){
?>

}
?>

4、修改$passwdfile和$command
$passwdfile为svn用户密码文件位置比如我是在C:\Program Files\Apache Software Foundation\Apache2.2\passwd,passwd这个文件
$command为组合后的htpasswd命令,我的htpasswd.exe在C:\Program Files\Apache Software Foundation\Apache2.2\bin目录下,但是不管使用绝对路径还是相对路径,都会报错:
'C:\Program' 不是内部或外部命令,也不是可运行的程序或批处理文件。

'htpasswd' 不是内部或外部命令,也不是可运行的程序或批处理文件。

系统找不到指定的路径。

后来没辙了,把htpasswd.exe复制到了svnpass目录下,直接使用htpasswd.exe -b成功了。

http://bbs.chinaunix.net/thread-1692104-1-1.html
http://linux.chinaitlab.com/manual/ApacheManual/programs/htpasswd.html
http://www.blogjava.net/jasmine214--love/archive/2011/01/15/343029.html

你可能感兴趣的:(版本控制)