CentOS 6.5 Apache+SVN使用户可以自己修改密码

yum -y install php #安装php

mkdir /var/www/svnadmin #建立页面目录

vi /var/www/svnadmin/index.php #创建index.php用于修改密码,第135行是SVN密码文件的路径

  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
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

posted @ 2013-12-27 10:42  iak  阅读(1171)  评论(0编辑  收藏  举报