首页 > 代码库 > <转>让SVN用户能够修改自身密码的PHP页面

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

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行请根据实际情况进行修改):

Alias /svntools "/opt/apache2/htdocs/svntools"<Directory "/opt/apache2/htdocs/svntools">Require valid-userAuthType BasicAuthName "GridTeam`s subversion tools"AuthUserFile "/opt/subversion/conf/svn_passwdfile"</Directory>

  

 

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

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

 

<?$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方式提交到服务器的actionif($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";}?><html><head><meta http-equiv="Content-Type" content="text/html; charset=GBK"><title>Subversion 在线自助密码修改</title></head><body><?//action=view 显示普通的输入信息if ($action == "view"){?><script language = "javaScript"><!--function loginIn(myform){var newpass=myform.newpass.value;var repeatpass=myform.repeatpass.value;if(newpass==""){alert("请输入密码!");return false;}if(repeatpass==""){alert("请重复输入密码!");return false;}if(newpass!=repeatpass){alert("两次输入密码不一致,请重新输入!");return false;}return true;}//--></script><style type="text/css"><!--table {border: 1px solid #CCCCCC;background-color: #f9f9f9;text-align: center;vertical-align: middle;font-size: 9pt;line-height: 15px;}th {font-weight: bold;line-height: 20px;border-top-width: 1px;border-right-width: 1px;border-bottom-width: 1px;border-left-width: 1px;border-bottom-style: solid;color: #333333;background-color: f6f6f6;}input{height: 18px;}.button {height: 20px;}--></style><br><br><br><form method="post"><input type="hidden" name="action" value="http://www.mamicode.com/modify"/><table width="220" cellpadding="3" cellspacing="8" align="center"><tr><th colspan=2>Subversion 密码修改</th></tr><tr><td>用户名:</td><td align="left"> <?=$username?></td></tr><tr><td>原密码:</td><td><input type=password size=12 name=oldpass></td></tr><tr><td>用户密码:</td><td><input type=password size=12 name=newpass></td></tr><tr><td>确认密码:</td><td><input type=password size=12 name=repeatpass></td></tr><tr><td colspan=2><input onclick="return loginIn(this.form)" class="button" type=submit value="http://www.mamicode.com/修 改"><input name="reset" type=reset class="button" value="http://www.mamicode.com/取 消"></td></tr></table></form><?}else if($action == "oldpasswrong"){$msg="原密码错误!";}else if($action == "passempty"){$msg="请输入新密码!";}else if($action == "passnotsame"){$msg="两次输入密码不一致,请重新输入!";}else{$passwdfile="/opt/subversion/conf/svn_passwdfile";$command=‘"/opt/apache2/bin/htpasswd" -b ‘.$passwdfile." ".$username." ".$newpass;system($command, $result);if($result==0){$msg="用户[".$username."]密码修改成功,请用新密码登陆.";}else{$msg="用户[".$username."]密码修改失败,返回值为".$result.",请和管理员联系!";}}if (isset($msg)){?><script language="javaScript"><!--alert("<?=$msg?>");window.location.href="http://www.mamicode.com/<?=$_SERVER["PHP_SELF"]?>"//--></script><?}?></body></html>

  

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

3.登陆页面
3.1 打开页面http://192.168.116.128/svntools/svnpass.php(具体IP请根据实际情况填写)

 

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