CentOS 6.5 Apache+SVN使用户可以自己修改密码
yum -y install php #安装php
mkdir /var/www/svnadmin #建立页面目录
vi /var/www/svnadmin/index.php #创建index.php用于修改密码,第135行是SVN密码文件的路径
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <? 2 $username = $_SERVER["PHP_AUTH_USER"]; //经过 AuthType Basic 认证的用户名 3 $authed_pass = $_SERVER["PHP_AUTH_PW"]; //经过 AuthType Basic 认证的密码 4 $input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); //从界面上输入的原密码 5 $newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); //界面上输入的新密码 6 $repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); //界面上输入的重复密码 7 $action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); //以hide方式提交到服务器的action 8 9 if($action!="modify"){ 10 $action = "view"; 11 } 12 else if($authed_pass!=$input_oldpass){ 13 $action = "oldpasswrong"; 14 } 15 else if(empty($newpass)){ 16 $action = "passempty"; 17 } 18 else if($newpass!=$repeatpass){ 19 $action = "passnotsame"; 20 } 21 else{ 22 $action = "modify"; 23 } 24 ?> 25 26 <html> 27 <head> 28 <meta http-equiv="Content-Type" content="text/html; charset=GBK"> 29 <title>Subversion 在线自助密码修改</title> 30 </head> 31 <body> 32 33 <? 34 //action=view 显示普通的输入信息 35 if ($action == "view"){ 36 ?> 37 <script language = "javaScript"> 38 <!-- 39 function loginIn(myform) 40 { 41 var newpass=myform.newpass.value; 42 var repeatpass=myform.repeatpass.value; 43 44 if(newpass==""){ 45 alert("请输入密码!"); 46 return false; 47 } 48 49 if(repeatpass==""){ 50 alert("请重复输入密码!"); 51 return false; 52 } 53 54 if(newpass!=repeatpass){ 55 alert("两次输入密码不一致,请重新输入!"); 56 return false; 57 } 58 return true; 59 } 60 //--> 61 </script> 62 <style type="text/css"> 63 <!-- 64 table { 65 border: 1px solid #CCCCCC; 66 background-color: #f9f9f9; 67 text-align: center; 68 vertical-align: middle; 69 font-size: 9pt; 70 line-height: 15px; 71 } 72 th { 73 font-weight: bold; 74 line-height: 20px; 75 border-top-width: 1px; 76 border-right-width: 1px; 77 border-bottom-width: 1px; 78 border-left-width: 1px; 79 border-bottom-style: solid; 80 color: #333333; 81 background-color: f6f6f6; 82 } 83 input{ 84 height: 18px; 85 } 86 .button { 87 height: 20px; 88 } 89 90 --> 91 </style> 92 <br><br><br> 93 <form method="post"> 94 <input type="hidden" name="action" value="modify"/> 95 <table width="220" cellpadding="3" cellspacing="8" align="center"> 96 <tr> 97 <th colspan=2>Subversion 密码修改</th> 98 </tr> 99 <tr> 100 <td>用户名:</td> 101 <td align="left"> <?=$username?></td> 102 </tr> 103 <tr> 104 <td>原密码:</td> 105 <td><input type=password size=12 name=oldpass></td> 106 </tr> 107 <tr> 108 <td>用户密码:</td> 109 <td><input type=password size=12 name=newpass></td> 110 </tr> 111 <tr> 112 <td>确认密码:</td> 113 <td><input type=password size=12 name=repeatpass></td> 114 </tr> 115 <tr> 116 <td colspan=2> 117 <input onclick="return loginIn(this.form)" class="button" type=submit value="修 改"> 118 <input name="reset" type=reset class="button" value="取 消"> 119 </td> 120 </tr> 121 </table> 122 </form> 123 <? 124 } 125 else if($action == "oldpasswrong"){ 126 $msg="原密码错误!"; 127 } 128 else if($action == "passempty"){ 129 $msg="请输入新密码!"; 130 } 131 else if($action == "passnotsame"){ 132 $msg="两次输入密码不一致,请重新输入!"; 133 } 134 else{ 135 $passwdfile="/etc/httpd/conf.d/passwd.dav_svn"; 136 $command="htpasswd -b ".$passwdfile." ".$username." ".$newpass; 137 system($command, $result); 138 if($result==0){ 139 $msg="用户[".$username."]密码修改成功,请用新密码登陆."; 140 } 141 else{ 142 $msg="用户[".$username."]密码修改失败,返回值为".$result.",请和管理员联系!"; 143 } 144 } 145 146 if (isset($msg)){ 147 ?> 148 <script language="javaScript"> 149 <!-- 150 alert("<?=$msg?>"); 151 window.location.href="<?=$_SERVER["PHP_SELF"]?>" 152 //--> 153 </script> 154 <? 155 } 156 ?> 157 </body> 158 </html> 159 160 index.php
vi /etc/httpd/conf/httpd.conf #将页面写入apache配置中,可以配置在VirtualHost下
Alias /svnadmin "/var/www/svnadmin/" <Directory "/var/www/svnadmin"> AuthType Basic AuthName "SVN user password motify" AuthUserFile /etc/httpd/conf.d/passwd.dav_svn Require valid-user </Directory>
vi /etc/php.ini #修改php配置
short_open_tag = On #开启php短标签否则对于短标签的解析不正常
vi /var/www/svnadmin/create.php #如果修改密码出错返回值1,那就使用页面创建passwd.dav_svn文件
<?php $file="htpasswd -cm /etc/httpd/conf.d/passwd.dav_svn admin"; system($file, $result); echo "success"; ?>
关于Apache+SVN的安装配置可以参考http://www.cnblogs.com/iakud/p/3493564.html
关于使用Apache的VirtualHost映射SVN端口可以参考http://www.cnblogs.com/iakud/p/3493633.html