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

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

  

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

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

  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="/opt/subversion/conf/svn_passwdfile";
  136. $command='"/opt/apache2/bin/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>

  

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

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

<转>让SVN用户能够修改自身密码的PHP页面的更多相关文章

  1. 转Centos7.0进入单用户模式修改root密码

    Centos7.0进入单用户模式修改root密码   启动Centos7 ,按空格让其停留在如下界面. 按e进行编辑 在UTF-8后面输入init=/bin/sh 根据提示按ctrl+x 得如下图 输 ...

  2. 忘记root密码怎么办-单用户模式修改root密码

    忘记root密码怎么办-单用户模式修改root密码================================= 1,开机3秒内按下向下的方向键,目的是为了不让它进入系统,而是停留在开机界面. 2 ...

  3. 单用户模式修改root密码

    单用户模式修改root密码 1.进入引导菜单界面2.按e进入grub,在linux或linux16那行结尾加上 rw init=/bin/bash,按Ctrl+x或F103.进入bash-4.3# , ...

  4. 进入单用户模式修改root密码

    进入单用户模式修改root密码 1.进入引导菜单界面2.按e进入grub,在linux或linux16那行结尾加上 rw init=/bin/bash,按Ctrl+x或F103.进入bash-4.3# ...

  5. ansible非root用户批量修改root密码

    前言: 由于线上服务器密码长久没有更新,现领导要求批量更换密码.线上的之前部署过salt,但由于各种因素没有正常使用. 使用自动化工具批量修改的计划搁浅了,后来领导给了个python多线程修改密码脚本 ...

  6. centos 7 下进入单用户模式修改root密码

    centos7进入单用户模式修改root用户密码 在工作中可能会遇到root密码忘记,那么这里就要进入单用户模式下了. 在重启电脑之后 时间:2015-05-13 10:42来源:blog.51cto ...

  7. centos单用户模式修改ROOT密码

    首先启动的时候的时候,需要进入单用户模式(进入单用户模式的前提是系统引导器能正常工作),单用户模式是不需要输入密码,并且(进入单用户模式,没有开启网络服务,不支持远程连接 )网上说可以通过GRUB ( ...

  8. jenkins 新增用户和修改用户名密码

    在某些条件下,jenkins是不允许注册用户的,这是,你可以采用如下的方式来新增用户,对于老的用户,忘记密码了,使用如下方式来重置密码. 1.系统管理-->管理用户 ----> 新建用户 ...

  9. CentOS 7 单用户模式修改root密码

    1)在启动grub菜单,选择编辑选项启动 2)按键盘e键,来进入编辑界面 3)找到Linux 16的那一行,将ro改为rw init=/sysroot/bin/sh 4)现在按下Control+x,使 ...

随机推荐

  1. Android-现场保护

    现场保护 当一个活动进入到了停止的状态,是有可能被系统回收的,我们都学过Activity的生命周期 当活动处于onPause() ,onStop() ,onDestroy() 三种状态时程序可能会被A ...

  2. break,continue,return 区别

    using System;using System.Collections.Generic;using System.Text; namespace breakcontinue_test{    cl ...

  3. C++服务器设计(四):超时管理机制设计

    前四章介绍了系统层的设计,从这一章开始进入服务层的设计. 连接断开 在常见的服务器场景中,客户端断开连接的方式为被动关闭.即作为客户端请求完服务器的服务后,选择主动关闭同服务器的连接.在服务器的角度看 ...

  4. _ConnectionPtr.CreateInstance(__uuidof(Connection))“不支持此接口”错误解决

    最近在换了win7 64位的系统,今天突然发现以前写的ADO连接数据库的代码编译后在windows2003下会执行到: _ConnectionPtr.CreateInstance(__uuidof(C ...

  5. session问题和JSP

    session问题和JSP 07. 五 / J2EE / 没有评论   一.Session开发中遇到的问题1.内存中的Session非常多,怎么办?2.用户在购物中.服务器停掉了该web应用(或者重新 ...

  6. 逛园子,看到个练习题,小试了一把(淘宝ued的两道小题)

    闲来无事,逛园子,充充电.发现了一个挺有意思的博文,自己玩了一把. 第一题:使用 HTML+CSS 实现如图布局,border-widht 1px,一个格子大小是 60*60,hover时候边框变为橘 ...

  7. CI(CodeIgniter)学习第一讲

    一.CI的优势一. (1).CI是一个PHP框架:大家都知道PHP框架有很多,CI只是其中之一,框架是为了重用发明的.同样,CI的目标是实现让你比从零开始编写代码更快速地开发项目.CI可以将需要完成的 ...

  8. php 程序员的历程

    今天一朋友该找工作了. 问了我好多 我整理了下  希望有些帮助 以下内容纯属个人感觉如果有不恰当的地方请忽略.... 我做的是项目的包工 就是把销售拿下的项目整合后给我们实现功能. --------- ...

  9. position属性absolute与relative(转)

    每次要用到Position属性时,总要去搜索下,这两个属性值的区别:今天就直接复制网上的结果,以便以后多看看. Absolute,CSS中的写法是:position:absolute; 他的意思是绝对 ...

  10. [转]从数据库中导出用友U8的现存量数据到Excel表

    转载自:http://www.czerp.com.cn/page/Default.asp?ID=372 可通过Excel获取外部数据的方式与SQL数据库创建查询连接,并导入到Excel中: Selec ...