zoukankan      html  css  js  c++  java
  • <转>让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-user
    AuthType Basic
    AuthName "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方式提交到服务器的action
    
    if($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- 1px;
    border-right- 1px;
    border-bottom- 1px;
    border-left- 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="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="修 改">
    <input name="reset" type=reset class="button" value="取 消">
    </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="<?=$_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请根据实际情况填写)

  • 相关阅读:
    轻松实现内容的无缝平滑滚动
    世界“新七大奇迹”揭晓 中国长城成功入选
    Blog_Backup:绿色博客备份工具
    【Vista中系统准备工具存在隐患,自动清除用户资料】
    Oracle大连全球支持中心运营就在我们公司前面!
    ASP.NET2.0下使用AJAX调用Webservice的方法
    配合AJAX天气预报的WebService
    Google兑现承诺你可以从google上删除你的搜索记录了
    全体注意:@live.com 形势不妙,可能三周内被收回
    国内软件联盟抨击微软以非正规手段推文档标准
  • 原文地址:https://www.cnblogs.com/dongguol/p/5910576.html
Copyright © 2011-2022 走看看