让SVN用户能够修改自身密码的PHP页面

在苦苦搜寻和反复实践之后,终于成功了,虽然该php程序的原作者已经无从知晓,但仍然要表示感谢,同时鄙视那些不经过实践就把文章转来转去的人。
因为那样做除了增加点可怜的PV,根本帮助不了任何人,只会浪费他人的时间。

源码安装SVN的过程请参考我的这篇文章:http://heylinux.com/archives/917.html

1.修改Apache配置文件
因为我在安装和配置SVN的时候,对Apache的配置文件进行过优化,将所有关于SVN的配置都写在了/opt/apache2/conf/extra/httpd-svn.conf中,然后再通过主配置文件/opt/apache2/conf/httpd.conf中Include conf/extra/httpd-svn.conf方式来调用。
因此,我这里需要修改的就是/opt/apache2/conf/extra/httpd-svn.conf文件,加入以下内容(其中第1,2,6行请根据实际情况进行修改):

1Alias /svntools "/opt/apache2/htdocs/svntools"
2<Directory "/opt/apache2/htdocs/svntools">
3Require valid-user
4AuthType Basic
5AuthName "GridTeam`s subversion tools"
6AuthUserFile "/opt/subversion/conf/svn_passwdfile"
7</Directory>

2.创建修改自身密码的php页面
mkdir /opt/apache2/htdocs/svntools
cd /opt/apache2/htdocs/svntools

vim svnpass.php
输入以下内容(其中第135,136行请根据实际情况进行修改):

001<?
002$username = $_SERVER["PHP_AUTH_USER"]; //经过 AuthType Basic 认证的用户名
003$authed_pass = $_SERVER["PHP_AUTH_PW"]; //经过 AuthType Basic 认证的密码
004$input_oldpass = (isset($_REQUEST["oldpass"]) ? $_REQUEST["oldpass"] : ""); //从界面上输入的原密码
005$newpass = (isset($_REQUEST["newpass"]) ? $_REQUEST["newpass"] : ""); //界面上输入的新密码
006$repeatpass = (isset($_REQUEST["repeatpass"]) ? $_REQUEST["repeatpass"] : ""); //界面上输入的重复密码
007$action = (isset($_REQUEST["action"]) ? $_REQUEST["action"] : ""); //以hide方式提交到服务器的action
008 
009if($action!="modify"){
010$action = "view";
011}
012else if($authed_pass!=$input_oldpass){
013$action = "oldpasswrong";
014}
015else if(empty($newpass)){
016$action = "passempty";
017}
018else if($newpass!=$repeatpass){
019$action = "passnotsame";
020}
021else{
022$action = "modify";
023}
024?>
025 
026<html>
027<head>
028<meta http-equiv="Content-Type" content="text/html; charset=GBK">
029<title>Subversion 在线自助密码修改</title>
030</head>
031<body>
032 
033<?
034//action=view 显示普通的输入信息
035if ($action == "view"){
036?>
037<script language = "javaScript">
038<!--
039function loginIn(myform)
040{
041var newpass=myform.newpass.value;
042var repeatpass=myform.repeatpass.value;
043 
044if(newpass==""){
045alert("请输入密码!");
046return false;
047}
048 
049if(repeatpass==""){
050alert("请重复输入密码!");
051return false;
052}
053 
054if(newpass!=repeatpass){
055alert("两次输入密码不一致,请重新输入!");
056return false;
057}
058return true;
059}
060//-->
061</script>
062<style type="text/css">
063<!--
064table {
065border: 1px solid #CCCCCC;
066background-color: #f9f9f9;
067text-align: center;
068vertical-align: middle;
069font-size: 9pt;
070line-height: 15px;
071}
072th {
073font-weight: bold;
074line-height: 20px;
075border-top-width: 1px;
076border-right-width: 1px;
077border-bottom-width: 1px;
078border-left-width: 1px;
079border-bottom-style: solid;
080color: #333333;
081background-color: f6f6f6;
082}
083input{
084height: 18px;
085}
086.button {
087height: 20px;
088}
089 
090-->
091</style>
092<br><br><br>
093<form method="post">
094<input type="hidden" name="action" value="modify"/>
095<table width="220" cellpadding="3" cellspacing="8" align="center">
096<tr>
097<th colspan=2>Subversion 密码修改</th>
098</tr>
099<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}
125else if($action == "oldpasswrong"){
126$msg="原密码错误!";
127}
128else if($action == "passempty"){
129$msg="请输入新密码!";
130}
131else if($action == "passnotsame"){
132$msg="两次输入密码不一致,请重新输入!";
133}
134else{
135$passwdfile="/opt/subversion/conf/svn_passwdfile";
136$command='"/opt/apache2/bin/htpasswd" -b '.$passwdfile." ".$username." ".$newpass;
137system($command, $result);
138if($result==0){
139$msg="用户[".$username."]密码修改成功,请用新密码登陆.";
140}
141else{
142$msg="用户[".$username."]密码修改失败,返回值为".$result.",请和管理员联系!";
143}
144}
145 
146if (isset($msg)){
147?>
148<script language="javaScript">
149<!--
150alert("<?=$msg?>");
151window.location.href="<?=$_SERVER["PHP_SELF"]?>"
152//-->
153</script>
154<?
155}
156?>
157</body>
158</html>

修改权限
chown -R apache:apache /opt/apache2/htdocs/svntools

3.登陆页面
3.1 打开页面http://192.168.116.128/svntools/svnpass.php(具体IP请根据实际情况填写)
输入用户名和密码,登陆。

3.2 修改密码

点击“修改”

3.3 提示修改成功

,

版权所有© mcsrainbow,保留所有原创日志的权利。转载请注明出处:http://heyLinux.com 。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值