记录VisualSVNServer配置在线密码修改功能

简介: VisualSVN Server使用的是64位版 查看对应的apache版本号是 2.2.32.这个版本需要使用php5.5以下的,且需要使用64位的php。 下载php 5.4 的64位版本。 php的下载地址:官网地址:http://windows.php.net/download/ http://windows.php.net/downloads/pecl/releases/ 官网从5.5开始才提供了64位的bin包下载。

VisualSVN Server使用的是64位版

查看对应的apache版本号是 2.2.32.
这个版本需要使用php5.5以下的,且需要使用64位的php。

下载php 5.4 的64位版本。

php的下载地址:
官网地址:http://windows.php.net/download/
http://windows.php.net/downloads/pecl/releases/

官网从5.5开始才提供了64位的bin包下载。
所以我们需要下载源代码自己编译或者找第三方编译的64位bin包

https://phpdev.toolsforresearch.com/php-5.4.36-nts-Win32-VC9-x86.zip
https://phpdev.toolsforresearch.com/php-5.4.36-Win32-VC9-x86.zip
https://phpdev.toolsforresearch.com/php-5.4.36-nts-Win32-VC9-x64.zip
https://phpdev.toolsforresearch.com/php-5.4.36-Win32-VC9-x64.zip
https://phpdev.toolsforresearch.com/php-5.3.29-nts-Win32-VC9-x86.zip
https://phpdev.toolsforresearch.com/php-5.3.29-Win32-VC9-x86.zip
https://phpdev.toolsforresearch.com/php-5.3.29-nts-Win32-VC9-x64.zip
https://phpdev.toolsforresearch.com/php-5.3.29-Win32-VC9-x64.zip

这里我们下载 php-5.4.36-Win32-VC9-x64.zip

配置Visual SVN Server支持php

1. 将下载的php解压缩到VisualSVNServer的目录中

C:Program FilesVisualSVN Serverphp

2.修改配置文件

C:Program FilesVisualSVN Serverconfhttpd-custom.conf

LoadModule php5_module "php/php5apache2_2.dll"
<IfModule php5_module>
    AddType application/x-httpd-php .php
    DirectoryIndex index.html index.php
</IfModule>
# 配置 php.ini 的路径
PHPIniDir "php"

3.建立php脚本

我们这里主要是利用了apach自己的htpasswd.exe工具来进行密码的变更操作

可以下载一个apache的完整包提取该工具放到如下路径:

C:Program FilesVisualSVN Serverbinhtpasswd.exe

新建一个 php 文件放到 C:Program FilesVisualSVN Serverhtdocspwindex.php

<?php
$passwdfile="C:/Repositories/htpasswd";
$htpasswdPath = "C:/Program Files/VisualSVN Server/bin/htpasswd.exe";

$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>

<?php
//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="modify"/>
<table width="220" cellpadding="3" cellspacing="8" align="center">
<tr>
<th colspan=2>Subversion 密码修改</th>
</tr>
<tr>
<td>用 户 名:</td>
<td align="left"> <?php echo $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="取 消">
<a href="/"><input name="return" type=button class="button" value="返 回"></a>
</td>
</tr>
</table>
</form>
<?php
} else if ($action == "oldpasswrong") {
    $msg="原密码错误!";
} else if ($action == "passempty") {
    $msg="请输入新密码!";
} else if ($action == "passnotsame") {
    $msg="两次输入密码不一致,请重新输入!";
} else {

    $command='"'. $htpasswdPath. '" -b '.$passwdfile." ".$username." ".$newpass;
    system($command, $result);
    if ($result==0) {
        $msg_succ="用户[".$username."]密码修改成功,请用新密码登陆.";
    } else {
        $msg="用户[".$username."]密码修改失败,返回值为".$result.",请和管理员联系!";
    }
}

if (isset($msg_succ)) {
?>
<script language="javaScript">
<!--
alert("<?php echo $msg_succ?>");
window.location.href="/"
//-->
</script>
<?php
} else if (isset($msg)) {
?>
<script language="javaScript">
<!--
alert("<?php echo $msg?>");
window.location.href="<?php echo $_SERVER["PHP_SELF"]?>"
//-->
</script>
<?php
}
?>
</body>
</html>

修改C:Program FilesVisualSVN ServerWebUIindex.html

增加里面修改的链接

自助修改密码

参考

https://github.com/easonjim/VisualSVNServerTools

目录
相关文章
|
4月前
|
Java 数据安全/隐私保护 uml
某系统提供了用户信息操作模块,用户可以修改自己的各项信息。为了使操作过程更加人性化,现使用备忘录模式对系统进行改进,使得用户在进行了错误操作之后可以恢复到操作之前的状态。用户信息中包含账号、密码、电话
该博客文章通过Java代码示例介绍了备忘录模式(Memento Pattern)的应用,通过创建备忘录对象保存用户信息的状态,允许用户在进行错误操作后能够恢复到之前的状态。
某系统提供了用户信息操作模块,用户可以修改自己的各项信息。为了使操作过程更加人性化,现使用备忘录模式对系统进行改进,使得用户在进行了错误操作之后可以恢复到操作之前的状态。用户信息中包含账号、密码、电话
|
6月前
|
SQL XML JSON
技术心得:查询重置功能的实现
技术心得:查询重置功能的实现
44 0
|
SQL 数据库连接 数据库
学生信息登录系统总结一
在敲学生系统的时候,进行登录学生管理学生信息登录,当时就是出师不利,还没有进入主界面就被卡在外面直接坐上了冷板凳,没想到道路刚开始就是如此坎坷,频繁报错那么就列举出3个具有代表性的问题,这个问题也是困扰了我许久,一直得不到解决,还是老办法站在巨人的肩膀上,通过查阅资料那些前辈们的的博客也是知道,不光自己也是遇到了类似的问题,通过借鉴大神的们的博客总结,让自己也是有了信心,感觉自己也能解决,但是事与愿违,往往想的都是很美好的,现实很残酷,跌宕起伏,排山倒海,猛龙过江,心情跟做过山车一样。
84 0
学习笔记jira项目23useauth切换登录和非登录信息
学习笔记jira项目23useauth切换登录和非登录信息
93 0
PbootCMS开启后台菜单管理功能
PbootCMS开启后台菜单管理功能
732 0
PbootCMS开启后台菜单管理功能
|
Oracle 关系型数据库 Shell
[自制工具]批量后台更新统计信息
Oracle数据库有时需要批量收集数据库的统计信息,如在大量数据迁移或大量数据更新以后,但是收集的时间可能会较长,为了避免网络中断等意外情况可能引起的麻烦,今天调试了这个小脚本,可以分用户批量执行,同时记录执行时间等日志信息,比较实用。
219 0
|
数据安全/隐私保护
需求: 需要完成如下基本功能: 1:添加用户 (注册) 2:删除用户 (注销用户) 3:修改用户 4:查询单个用户 5:查询所有用户 6:退出系统 程序运行后,
需求: 需要完成如下基本功能: 1:添加用户 (注册) 2:删除用户 (注销用户) 3:修改用户 4:查询单个用户 5:查询所有用户 6:退出系统 程序运行后,除
|
数据安全/隐私保护 API 移动开发
登陆功能的实现
我不喜欢废话,上代码 /// /// 运行程序返回进程pid /// /// /// static public int RunProgram(string qqPath) ...
936 0