• <转>让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请根据实际情况填写)

  • 相关阅读:
    ubuntu server 12.04中文显示不了
    hustoj升级
    oj资源
    考试系统
    怎样用DOS命令替换文本里的某段字符
    ubuntu一键安装lamp
    Windows Server 2008官方简体中文正式版下载+序列号
    vsphere ubuntu网速很慢
    前端
    (运维)VMwarevCenterServerAppliance5.0安装与部署
  • 原文地址:https://www.cnblogs.com/dongguol/p/5910576.html
Copyright © 2020-2023  润新知