VisualSVN增加密码php修改页面
1.假设VisualSVN安装在 C:\Program Files\VisualSVN Server
2.下载并安装php windows版本,假设安装在c:\php
可以到php官方网站下载 www.php.net
附件中带的是 php-5.3.2-Win32-VC6-x86.zip
3.VisualSVN增加php支持
注意修改 "c:/php/php5apache2_2.dll" 为正确路径
C:\Program Files\VisualSVN Server\conf\httpd-custom.conf 增加
LoadModule php5_module "c:/php/php5apache2_2.dll"
<IfModule php5_module>
AddType application/x-httpd-php .php
DirectoryIndex index.php
</IfModule>
4.增加修改密码的php文件
创建pass目录
C:\Program Files\VisualSVN Server\htdocs\pass
创建index.php文件
C:\Program Files\VisualSVN Server\htdocs\pass\index.php
php文件内容如下
<?
$name=$_POST['name'];
$p1=$_POST['p1'];
$p2=$_POST['p2'];
$authed_user=$_SERVER["PHP_AUTH_USER"];
$authed_pass = $_SERVER["PHP_AUTH_PW"];
$info="";
$htpasswd="c:/php/htpasswd.exe";
$passfile="c:/Repositories/htpasswd";
//$info=apache_getenv("ServerName");
while(true)
{
if( !empty($name))
{
if(empty($p1) || empty($p2))
{
$info="新密码不能为空";
break;
}
if($p1!=$p2)
{
$info="新密码不相等";
break;
}
$len=strlen($p1);
if(6>$len)
{
$info="新密码长度不能小于6位";
break;
}
$cmd=$htpasswd." -mb ".$passfile." ".$authed_user." ".$p1;
exec($cmd,$out_put,$ret);
if(0==$ret)
$info="密码修改成功";
else
$info="密码修改失败,返回值".$ret;
//virtual("/pass/refresh.php");
}
break;
}
?>
<HTML>
<HEAD>
<TITLE>修改SubVersion密码</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
</HEAD>
<style type="text/css">.t_input {background-color:#FFFFFF;139px;height:22px;font-family:Tahoma;}.t_text {background-color:#FFFFFF;font-family:新宋体,宋体,Tahoma;}</style>
<BODY>
<? if($info."a"!="a") { ?>
<table align="center">
<tr>
<td align="center">
<font size=4 color="#ff0000"><? echo $info; ?> </font>
</td>
</tr>
</table>
<? } ?>
<table align="center">
<tr>
<td align="center">
修改SubVersion密码
</td>
</tr>
</table>
<form method="POST" enctype="multipart/form-data" >
<br>
<TABLE align="center">
<TR>
<TD></TD>
<TD><INPUT type="hidden" name="name" value="<? echo $authed_user; ?>"></TD>
</TR>
<TR>
<TD>新密码</TD>
<TD><INPUT type="password" name="p1"class="t_input"></TD>
</TR>
<TR>
<TD>验证新密码</TD>
<TD><INPUT type="password" name="p2"class="t_input"></TD>
</TR>
</TABLE>
<br>
<TABLE align="center">
<TR>
<TD><input type="submit" name="chgpasswd" value="修 改">
<input type="reset" value="重 置">
</TD>
</TR>
</TABLE>
</form>
</BODY></HTML>
5.添加pass的控制到VisalSVN中
注意AuthUserFile 请参考C:\Program Files\VisualSVN Server\conf\httpd.conf中的设置,要一样
C:\Program Files\VisualSVN Server\conf\httpd-custom.conf 增加
LoadModule authz_user_module bin/mod_authz_user.so
<Location /pass/>
AuthName "aaa"
AuthType Basic
AuthBasicProvider file
AuthUserFile "c:/Repositories/htpasswd"
require valid-user
</Location>
6.copy htpasswd.exe到 php目录
htpasswd.exe 取自apache的官方安装包,
apache2.2的安装包请到 www.apache.org下载
现在 htpasswd.exe 路径为d:\php\htpasswd.exe
7.修改
C:\Program Files\VisualSVN Server\htdocs\pass\index.php
$passfile为 C:\Program Files\VisualSVN Server\conf\httpd.conf中 AuthUserFile的值
$htpasswd="c:/php/htpasswd.exe";
$passfile="c:/Repositories/htpasswd";
8.重启 VisualSVN服务
9.验证
用ie打开svn连接,
比如原来的svn连接时 https://yzstar_svn:8443/svn
那么修改密码的网页为 https://yzstar_svn:8443/pass