Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
青阳龙野
kiftd
提交
c54fd6b0
kiftd
项目概览
青阳龙野
/
kiftd
通知
1230
Star
27
Fork
21
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
6
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
kiftd
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
6
Issue
6
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
c54fd6b0
编写于
10月 08, 2019
作者:
青阳龙野
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
v1.0.23-release
上级
69080575
变更
12
展开全部
隐藏空白更改
内联
并排
Showing
12 changed file
with
663 addition
and
32 deletion
+663
-32
README.md
README.md
+9
-4
kiftd-1.0.23-RELEASE.jar
kiftd-1.0.23-RELEASE.jar
+0
-0
kiftd说明文档.pdf
kiftd说明文档.pdf
+0
-0
mybatisResource/mapperXML/PropertiesMapper.xml
mybatisResource/mapperXML/PropertiesMapper.xml
+30
-0
webContext/home.html
webContext/home.html
+89
-7
webContext/js/home.js
webContext/js/home.js
+231
-18
webContext/js/home.min.js
webContext/js/home.min.js
+3
-2
webContext/js/login.js
webContext/js/login.js
+18
-1
webContext/js/signup.js
webContext/js/signup.js
+141
-0
webContext/prv/forbidden.html
webContext/prv/forbidden.html
+46
-0
webContext/prv/login.html
webContext/prv/login.html
+5
-0
webContext/prv/signup.html
webContext/prv/signup.html
+91
-0
未找到文件。
README.md
浏览文件 @
c54fd6b0
...
...
@@ -77,9 +77,14 @@ _注:kift为该功能的开发名称,其实际成果命名为kiftd。_
> 提示:当您更新版本后,请手动清除浏览器的缓存,之后刷新网盘主页以确保数据文件保持最新!否则可能导致新版页面功能无法使用。
### 常规更新v1.0.22
_本次更新为维护性的更新,修复一些已经发现的问题以优化使用体验,推荐所有用户升级。_
+
优化了在线音乐播放功能——现在,kiftd的在线音乐播放功能能够正确显示使用非UTF-8编码的中文LRC歌词了。
### 新版本v1.0.23
_本次更新加入了用户们期待的一些新功能,进一步增强kiftd的使用体验,推荐所有用户升级。_
+
用户修改密码功能——这是用户们反馈最多的功能。现在,只需在设置中启用该功能便可以让访问者直接在主页上自由地修改账户的登录密码了。
+
永久资源链接功能——为满足用户希望将kiftd作为在线资源服务器的需求,您可以在设置中启用该功能,这样kiftd将为每个文件生成一个永久有效的外部资源链接(外链)从而方便用户将kiftd中的文件资源(如图片、视频、音乐甚至是HTML页面等)在其他位置引用。
+
自由注册新账户功能——这是用户们反馈第二多的功能。现在,只需在账户配置文件中添加该功能的设置项便可以让访问者在您的kiftd中自由注册新账户了,详细内容请参见《kiftd说明文档》。
+
设定IP访问限制——现在,kiftd允许通过账户配置文件中的相关设置来禁止或者只允许特定IP进行访问您的kiftd。
+
完善了日志信息内容——日志内容中新增了关于操作者IP地址的记录,方便您对某项操作请求的来源进行跟踪。
+
在主页面的源代码中新增了服务器的版本号标注——这样,您便可以通过浏览器的“显示网页源代码”功能在线查看kiftd服务器的版本了。
> 需要查看更多版本历史信息?请访问: https://kohgylw.gitee.io/News.html
...
...
@@ -122,4 +127,4 @@ _本次更新为维护性的更新,修复一些已经发现的问题以优化
_作者会每隔1-3周浏览一次邮箱,如未能及时回复请耐心等待。回复或许会迟到,但它不会缺席。_
201
9-09-02
kohgylw@青阳龙野 作者保留版权
201
8-2019
kohgylw@青阳龙野 作者保留版权
kiftd-1.0.2
2
-RELEASE.jar
→
kiftd-1.0.2
3
-RELEASE.jar
浏览文件 @
c54fd6b0
无法预览此类型文件
kiftd说明文档.pdf
浏览文件 @
c54fd6b0
无法预览此类型文件
mybatisResource/mapperXML/PropertiesMapper.xml
0 → 100644
浏览文件 @
c54fd6b0
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"kohgylw.kiftd.server.mapper.PropertiesMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"kohgylw.kiftd.server.model.Propertie"
>
<id
column=
"propertie_key"
jdbcType=
"VARCHAR"
property=
"propertieKey"
/>
<result
column=
"propertie_value"
jdbcType=
"VARCHAR"
property=
"propertieValue"
/>
</resultMap>
<insert
id=
"insert"
parameterType=
"kohgylw.kiftd.server.model.Propertie"
>
INSERT INTO PROPERTIES
VALUES(#{propertieKey,jdbcType=VARCHAR},#{propertieValue,jdbcType=VARCHAR})
</insert>
<update
id=
"update"
parameterType=
"kohgylw.kiftd.server.model.Propertie"
>
UPDATE PROPERTIES SET propertie_value =
#{propertieValue,jdbcType=VARCHAR} WHERE propertie_key =
#{propertieKey,jdbcType=VARCHAR}
</update>
<delete
id=
"deleteByKey"
parameterType=
"java.lang.String"
>
DELETE FROM PROPERTIES WHERE
propertie_key = #{propertieKey,jdbcType=VARCHAR}
</delete>
<select
id=
"selectByKey"
parameterType=
"java.lang.String"
resultMap=
"BaseResultMap"
>
SELECT * FROM PROPERTIES WHERE propertie_key =
#{propertieKey,jdbcType=VARCHAR}
</select>
</mapper>
\ No newline at end of file
webContext/home.html
浏览文件 @
c54fd6b0
<!doctype html>
<!-- kiftd 主页面 by 青阳龙野 -->
<!-- 青阳网络文件传输系统 kiftd v1.0.23-RELEASE -->
<!-- 欢迎访问主界面 -->
<!-- by 青阳龙野(kohgylw@163.com) -->
<html>
<head>
<base
href=
"/"
>
...
...
@@ -428,9 +430,9 @@
onclick=
"checkimportpath()"
onfocus=
"this.blur()"
placeholder=
"请点击选择要上传的文件夹……"
folderConstraintLevel=
"0"
>
<div
class=
"input-group-btn"
>
<button
id=
"importFolderLevelBtn"
type=
"button"
class=
"btn btn-default dropdown-toggle"
data-toggle=
"dropdown"
aria-haspopup=
"true
"
aria-expanded=
"false"
>
<button
id=
"importFolderLevelBtn"
type=
"button"
class=
"btn btn-default dropdown-toggle"
data-toggle=
"dropdown
"
aria-
haspopup=
"true"
aria-
expanded=
"false"
>
<span
id=
"importfoldertype"
>
公开的
</span>
<span
class=
"caret"
></span>
</button>
...
...
@@ -466,8 +468,7 @@
</p>
<p>
<button
id=
"importcoverbtn"
type=
"button"
class=
"btn btn-danger btn-sm"
onclick=
"importAndCover()"
>
覆盖
</button>
class=
"btn btn-danger btn-sm"
onclick=
"importAndCover()"
>
覆盖
</button>
<button
type=
"button"
class=
"btn btn-default btn-sm"
onclick=
"abortImport()"
>
取消上传
</button>
<button
type=
"button"
class=
"btn btn-default btn-sm"
...
...
@@ -476,7 +477,8 @@
</div>
</div>
<div
class=
"modal-footer"
>
<button
type=
"button"
class=
"btn btn-default"
onclick=
'abortImport()'
>
取消
</button>
<button
type=
"button"
class=
"btn btn-default"
onclick=
'abortImport()'
>
取消
</button>
<button
id=
"importbutton"
type=
'button'
class=
'btn btn-primary'
onclick=
'checkImportFolder()'
>
开始上传
</button>
</div>
...
...
@@ -725,6 +727,86 @@
</div>
</div>
<!-- end 文件夹详情模态框 -->
<!-- 修改密码模态框 -->
<div
class=
"modal fade bs-example-modal-sm"
id=
"changePasswordModal"
tabindex=
"-1"
role=
"dialog"
aria-labelledby=
"changePasswordModelTitle"
>
<div
class=
"modal-dialog"
role=
"document"
>
<div
class=
"modal-content"
>
<div
class=
"modal-header"
>
<button
type=
"button"
class=
"close"
data-dismiss=
"modal"
aria-label=
"Close"
>
<span
aria-hidden=
"true"
>
×
</span>
</button>
<h4
class=
"modal-title"
id=
"changePasswordModelTitle"
>
<span
class=
"glyphicon glyphicon-edit"
></span>
修改密码
</h4>
</div>
<div
class=
"modal-body"
>
<form
class=
"form-horizontal"
>
<div
class=
"form-group"
id=
"changepassword_oldepwdbox"
>
<label
for=
"changepassword_oldpwd"
id=
"changepassword_oldpwdtitle"
class=
"col-sm-3 control-label"
>
旧密码:
</label>
<div
class=
"col-sm-9"
>
<input
type=
"password"
class=
"form-control"
id=
"changepassword_oldpwd"
placeholder=
"请输入旧密码确认身份……"
>
</div>
</div>
<div
class=
"form-group"
id=
"changepassword_newpwdbox"
>
<label
for=
"changepassword_newpwd"
id=
"changepassword_newpwdtitle"
class=
"col-sm-3 control-label"
>
新密码:
</label>
<div
class=
"col-sm-9"
>
<input
type=
"password"
class=
"form-control"
id=
"changepassword_newpwd"
placeholder=
"请输入新密码……"
>
</div>
</div>
<div
class=
"form-group"
id=
"changepassword_reqnewpwdbox"
>
<label
for=
"changepassword_reqnewpwd"
id=
"changepassword_reqnewpwdtitle"
class=
"col-sm-3 control-label"
>
确认新密码:
</label>
<div
class=
"col-sm-9"
>
<input
type=
"password"
class=
"form-control"
id=
"changepassword_reqnewpwd"
placeholder=
"请再次输入新密码……"
>
</div>
</div>
<div
id=
"changepassword_vccodebox"
class=
"form-group"
></div>
<div
id=
"changepasswordalertbox"
class=
"alert alert-danger"
role=
"alert"
></div>
</form>
</div>
<div
class=
"modal-footer"
>
<button
type=
"button"
class=
"btn btn-default"
data-dismiss=
"modal"
>
取消
</button>
<button
type=
"button"
id=
"changePasswordButton"
class=
"btn btn-danger"
onclick=
"doChangePassword()"
>
立即修改
</button>
</div>
</div>
</div>
</div>
<!-- end 改密 -->
<!-- 永久资源链接显示模态框 -->
<div
class=
"modal fade"
id=
"fileChainModal"
tabindex=
"-1"
role=
"dialog"
aria-labelledby=
"chainModalLabel"
>
<div
class=
"modal-dialog modal-sm"
role=
"document"
>
<div
class=
"modal-content"
>
<div
class=
"modal-header"
>
<button
type=
"button"
class=
"close"
data-dismiss=
"modal"
aria-label=
"Close"
>
<span
aria-hidden=
"true"
>
×
</span>
</button>
<h4
class=
"modal-title"
id=
"chainModalLabel"
>
<span
class=
"glyphicon glyphicon-link"
></span>
资源链接
</h4>
</div>
<div
class=
"modal-body"
>
<textarea
id=
"fileChainTextarea"
class=
"form-control"
rows=
"3"
readonly
></textarea>
</div>
<div
class=
"modal-footer"
>
<button
id=
"copyChainBtn"
type=
"button"
class=
"btn btn-info"
onclick=
"copyFileChain()"
>
复制链接
</button>
<button
type=
"button"
class=
"btn btn-default"
data-dismiss=
"modal"
>
关闭
</button>
</div>
</div>
</div>
</div>
<!-- end 永久资源链接 -->
<!-- 返回顶部按钮(隐藏式) -->
<div
id=
"gobacktotopbox"
class=
"gobacktopbox text-center hidden"
>
<button
type=
"button"
onclick=
"goBackToTop()"
class=
"gobacktopbutton"
>
...
...
webContext/js/home.js
浏览文件 @
c54fd6b0
...
...
@@ -16,6 +16,7 @@ var constraintLevel;// 当前文件夹限制等级
var
account
;
// 用户账户
var
isUpLoading
=
false
;
// 是否正在执行上传操作
var
isImporting
=
false
;
// 是否正在执行上传文件夹操作
var
isChangingPassword
=
false
;
// 是否正在执行修改密码操作
var
importFolderName
;
// 上传文件夹时保存文件夹名称
var
xhr
;
// 文件或文件夹上传请求对象
var
viewerPageSize
=
15
;
// 显示图片页的最大长度,注意最好是奇数
...
...
@@ -332,6 +333,22 @@ $(function() {
$
(
'
#downloadURLCollapse
'
).
on
(
'
shown.bs.collapse
'
,
function
()
{
getDownloadURL
();
});
// 开启修改密码模态框时初始化状态
$
(
'
#changePasswordModal
'
).
on
(
'
show.bs.modal
'
,
function
(
e
)
{
if
(
!
isChangingPassword
){
$
(
"
#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton,#changepassword_vercode
"
).
attr
(
'
disabled
'
,
false
);
$
(
"
#changepassword_oldepwdbox,#changepassword_newpwdbox,#changepassword_reqnewpwdbox
"
).
removeClass
(
"
has-error
"
);
$
(
"
#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd
"
).
val
(
""
);
$
(
"
#changepasswordalertbox,#changepassword_vccodebox
"
).
hide
();
}
});
// 并自动聚焦旧密码输入框
$
(
'
#changePasswordModal
'
).
on
(
'
shown.bs.modal
'
,
function
(
e
)
{
if
(
!
isChangingPassword
){
$
(
"
#changepassword_oldpwd
"
).
focus
();
}
});
});
// 根据屏幕大小增删表格显示内容
...
...
@@ -371,13 +388,12 @@ function getServerOS() {
$
.
ajax
({
type
:
"
POST
"
,
dataType
:
"
text
"
,
data
:
{
},
data
:
{},
url
:
"
homeController/getServerOS.ajax
"
,
success
:
function
(
result
)
{
if
(
result
==
"
mustLogin
"
)
{
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/login.html
"
;
return
;
}
$
(
"
#serverOS
"
).
text
(
result
);
},
...
...
@@ -405,7 +421,7 @@ function showFolderView(fid,targetId) {
$
(
"
#publishTime
"
).
html
(
"
<span class='graytext'>获取失败,请尝试刷新</span>
"
);
$
(
"
#parentlistbox
"
).
html
(
"
<span class='graytext'>获取失败,请尝试刷新</span>
"
);
}
else
if
(
result
==
"
mustLogin
"
)
{
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/
login.html
"
;
}
else
if
(
result
==
"
NOT_FOUND
"
)
{
document
.
cookie
=
"
folder_id=
"
+
escape
(
"
root
"
);
// 归位记忆路径
window
.
location
.
href
=
"
/
"
;
...
...
@@ -567,7 +583,7 @@ function sendLoginInfo(encrypted) {
case
"
error
"
:
$
(
"
#alertbox
"
).
addClass
(
"
alert
"
);
$
(
"
#alertbox
"
).
addClass
(
"
alert-danger
"
);
$
(
"
#alertbox
"
).
text
(
"
提示:登录失败,登录请求无法通过效验(可能是请求耗时过长导致的)
"
);
$
(
"
#alertbox
"
).
text
(
"
提示:登录失败,登录请求无法通过
加密
效验(可能是请求耗时过长导致的)
"
);
break
;
default
:
$
(
"
#alertbox
"
).
addClass
(
"
alert
"
);
...
...
@@ -645,7 +661,7 @@ function showAccountView(folderView) {
$
(
"
#tb,#tb2
"
).
html
(
""
);
account
=
folderView
.
account
;
if
(
folderView
.
account
!=
null
)
{
// 说明已经
等陆
,显示注销按钮
// 说明已经
登录
,显示注销按钮
$
(
"
#tb
"
)
.
append
(
"
<button class='btn btn-link rightbtn' data-toggle='modal' data-target='#logoutModal'>注销 [
"
...
...
@@ -656,6 +672,14 @@ function showAccountView(folderView) {
"
<button class='btn btn-link' data-toggle='modal' data-target='#logoutModal'>注销 [
"
+
folderView
.
account
+
"
] <span class='glyphicon glyphicon-off' aria-hidden='true'></span></button>
"
);
if
(
folderView
.
allowChangePassword
==
'
true
'
){
$
(
"
#tb
"
)
.
append
(
"
<button class='btn btn-link rightbtn' data-toggle='modal' data-target='#changePasswordModal'>修改密码 <span class='glyphicon glyphicon-edit' aria-hidden='true'></span></button>
"
);
$
(
"
#tb2
"
)
.
append
(
"
<button class='btn btn-link' data-toggle='modal' data-target='#changePasswordModal'>修改密码 <span class='glyphicon glyphicon-edit' aria-hidden='true'></span></button>
"
);
}
}
else
{
// 说明用户未登录,显示登录按钮
$
(
"
#tb
"
)
...
...
@@ -664,6 +688,14 @@ function showAccountView(folderView) {
$
(
"
#tb2
"
)
.
append
(
"
<button class='btn btn-link' data-toggle='modal' data-target='#loginModal'>登入 <span class='glyphicon glyphicon-user' aria-hidden='true'></span></button>
"
);
if
(
folderView
.
allowSignUp
==
'
true
'
){
$
(
"
#tb
"
)
.
append
(
"
<button class='btn btn-link rightbtn' onclick='window.location.href =
\"
/prv/signup.html
\"
'>立即注册 <span class='glyphicon glyphicon-log-in' aria-hidden='true'></span></button>
"
);
$
(
"
#tb2
"
)
.
append
(
"
<button class='btn btn-link' onclick='window.location.href =
\"
prv/signup.html
\"
'>立即注册 <span class='glyphicon glyphicon-log-in' aria-hidden='true'></span></button>
"
);
}
}
var
authList
=
folderView
.
authList
;
// 对操作菜单进行初始化,根据权限显示可操作的按钮(并非约束)。
...
...
@@ -949,6 +981,16 @@ function showFolderTable(folderView) {
+
'
"
'
+
"
)' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-sunglasses'></span> 定位</button>
"
;
}
if
(
aL
&&
folderView
.
showFileChain
==
'
true
'
)
{
fileRow
=
fileRow
+
"
<button onclick='getFileChain(
"
+
'
"
'
+
fi
.
fileId
+
'
","
'
+
fi
.
fileName
+
'
"
'
+
"
)' class='btn btn-link btn-xs'><span class='glyphicon glyphicon-link'></span> 链接</button>
"
;
}
if
(
!
aR
&&
!
aD
&&
!
aL
&&
!
aO
)
{
fileRow
=
fileRow
+
"
--
"
;
}
...
...
@@ -996,7 +1038,7 @@ function createfolder() {
url
:
"
homeController/newFolder.ajax
"
,
success
:
function
(
result
)
{
if
(
result
==
"
mustLogin
"
)
{
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/
login.html
"
;
}
else
{
if
(
result
==
"
noAuthorized
"
)
{
showFolderAlert
(
"
提示:您的操作未被授权,创建文件夹失败。
"
);
...
...
@@ -1062,7 +1104,7 @@ function deleteFolder(folderId) {
url
:
"
homeController/deleteFolder.ajax
"
,
success
:
function
(
result
)
{
if
(
result
==
"
mustLogin
"
)
{
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/
login.html
"
;
}
else
{
if
(
result
==
"
noAuthorized
"
)
{
$
(
'
#deleteFolderMessage
'
).
text
(
"
提示:您的操作未被授权,删除文件夹失败
"
);
...
...
@@ -1130,7 +1172,7 @@ function renameFolder(folderId) {
url
:
"
homeController/renameFolder.ajax
"
,
success
:
function
(
result
)
{
if
(
result
==
"
mustLogin
"
)
{
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/
login.html
"
;
}
else
{
if
(
result
==
"
noAuthorized
"
)
{
showRFolderAlert
(
"
提示:您的操作未被授权,编辑失败。
"
);
...
...
@@ -1245,7 +1287,7 @@ function checkUploadFile() {
url
:
"
homeController/checkUploadFile.ajax
"
,
success
:
function
(
result
)
{
if
(
result
==
"
mustLogin
"
)
{
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/
login.html
"
;
}
else
{
if
(
result
==
"
errorParameter
"
)
{
showUploadFileAlert
(
"
提示:参数不正确,无法开始上传
"
);
...
...
@@ -1499,7 +1541,7 @@ function deleteFile(fileId) {
url
:
"
homeController/deleteFile.ajax
"
,
success
:
function
(
result
)
{
if
(
result
==
"
mustLogin
"
)
{
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/
login.html
"
;
}
else
{
if
(
result
==
"
noAuthorized
"
)
{
$
(
'
#deleteFileMessage
'
).
text
(
"
提示:您的操作未被授权,删除失败
"
);
...
...
@@ -1556,7 +1598,7 @@ function renameFile(fileId) {
url
:
"
homeController/renameFile.ajax
"
,
success
:
function
(
result
)
{
if
(
result
==
"
mustLogin
"
)
{
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/
login.html
"
;
}
else
{
if
(
result
==
"
cannotRenameFile
"
)
{
showRFileAlert
(
"
提示:出现意外错误,可能未能重命名文件,请刷新后重试。
"
);
...
...
@@ -1950,7 +1992,7 @@ function deleteAllChecked() {
url
:
"
homeController/deleteCheckedFiles.ajax
"
,
success
:
function
(
result
)
{
if
(
result
==
"
mustLogin
"
)
{
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/
login.html
"
;
}
else
{
if
(
result
==
"
noAuthorized
"
)
{
$
(
'
#deleteFileMessage
'
).
text
(
"
提示:您的操作未被授权,删除失败
"
);
...
...
@@ -2217,7 +2259,7 @@ function doMoveFiles(){
url
:
"
homeController/confirmMoveFiles.ajax
"
,
success
:
function
(
result
)
{
if
(
result
==
"
mustLogin
"
)
{
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/
login.html
"
;
}
else
{
if
(
result
==
"
noAuthorized
"
)
{
$
(
'
#moveFilesMessage
'
).
text
(
"
提示:您的操作未被授权,移动失败
"
);
...
...
@@ -2311,7 +2353,7 @@ function sendMoveFilesReq(){
url
:
"
homeController/moveCheckedFiles.ajax
"
,
success
:
function
(
result
)
{
if
(
result
==
"
mustLogin
"
)
{
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/
login.html
"
;
}
else
{
if
(
result
==
"
noAuthorized
"
)
{
$
(
'
#moveFilesMessage
'
).
text
(
"
提示:您的操作未被授权,移动失败
"
);
...
...
@@ -2413,7 +2455,7 @@ function selectInCompletePath(keyworld){
$
(
"
#publishTime
"
).
html
(
"
<span class='graytext'>获取失败,请尝试刷新</span>
"
);
$
(
"
#parentlistbox
"
).
html
(
"
<span class='graytext'>获取失败,请尝试刷新</span>
"
);
}
else
if
(
result
==
"
mustLogin
"
)
{
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/
login.html
"
;
}
else
if
(
result
==
"
notAccess
"
){
document
.
cookie
=
"
folder_id=
"
+
escape
(
"
root
"
);
window
.
location
.
href
=
"
/
"
;
...
...
@@ -2588,7 +2630,7 @@ function checkImportFolder(){
showImportFolderAlert
(
"
提示:参数不正确,无法开始上传
"
);
break
;
case
'
mustLogin
'
:
window
.
location
.
href
=
"
login.html
"
;
window
.
location
.
href
=
"
prv/
login.html
"
;
break
;
case
'
fileOverSize
'
:
showImportFolderAlert
(
"
提示:文件[
"
+
ifs
[
maxFileIndex
].
webkitRelativePath
+
"
]的体积超过最大限制(
"
+
resJson
.
maxSize
+
"
),无法开始上传
"
);
...
...
@@ -2796,4 +2838,175 @@ function abortImport(){
function
changeImportFolderType
(
type
){
$
(
"
#importfoldertype
"
).
text
(
folderTypes
[
type
]);
$
(
"
#folderpath
"
).
attr
(
"
folderConstraintLevel
"
,
type
+
""
);
}
// 修改密码
function
doChangePassword
(){
// 还原提示状态
$
(
"
#changepassword_oldepwdbox,#changepassword_newpwdbox,#changepassword_reqnewpwdbox
"
).
removeClass
(
"
has-error
"
);
$
(
"
#changepasswordalertbox
"
).
hide
();
var
change_oldPassword
=
$
(
"
#changepassword_oldpwd
"
).
val
();
var
change_newPassword
=
$
(
"
#changepassword_newpwd
"
).
val
();
var
change_reqNewPassword
=
$
(
"
#changepassword_reqnewpwd
"
).
val
();
// 输入非空检查
if
(
change_oldPassword
.
length
==
0
)
{
$
(
"
#changepassword_oldepwdbox
"
).
addClass
(
"
has-error
"
);
$
(
"
#changepassword_oldpwd
"
).
focus
();
return
;
}
if
(
change_newPassword
.
length
==
0
)
{
$
(
"
#changepassword_newpwdbox
"
).
addClass
(
"
has-error
"
);
$
(
"
#changepassword_newpwd
"
).
focus
();
return
;
}
if
(
change_reqNewPassword
.
length
==
0
)
{
$
(
"
#changepassword_reqnewpwdbox
"
).
addClass
(
"
has-error
"
);
$
(
"
#changepassword_reqnewpwd
"
).
focus
();
return
;
}
// 确认密码检查
isChangingPassword
=
true
;
$
(
"
#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton,#changepassword_vercode
"
).
attr
(
'
disabled
'
,
true
);
if
(
change_newPassword
+
""
!=
change_reqNewPassword
+
""
)
{
showChangePasswordAlert
(
"
提示:两次输入的新密码不一致,请检查确认
"
);
$
(
"
#changepassword_newpwdbox
"
).
addClass
(
"
has-error
"
);
$
(
"
#changepassword_reqnewpwdbox
"
).
addClass
(
"
has-error
"
);
return
;
}
// 以加密方式发送修改密码请求
$
.
ajax
({
url
:
'
homeController/getPublicKey.ajax
'
,
type
:
'
POST
'
,
data
:
{},
dataType
:
'
text
'
,
success
:
function
(
result
)
{
// 获取公钥
var
changepwd_publicKeyInfo
=
eval
(
"
(
"
+
result
+
"
)
"
);
// 生成JSON对象格式的信息
var
changePasswordInfo
=
'
{oldPwd:"
'
+
change_oldPassword
+
'
",newPwd:"
'
+
change_newPassword
+
'
",time:"
'
+
changepwd_publicKeyInfo
.
time
+
'
"}
'
;
var
encrypt
=
new
JSEncrypt
();
// 加密插件对象
encrypt
.
setPublicKey
(
changepwd_publicKeyInfo
.
publicKey
);
// 设置公钥
var
encrypted
=
encrypt
.
encrypt
(
changePasswordInfo
);
// 进行加密
sendChangePasswordInfo
(
encrypted
);
},
error
:
function
()
{
showChangePasswordAlert
(
"
提示:密码修改失败,请检查网络链接或服务器运行状态
"
);
}
});
}
// 将加密数据发送至服务器并显示操作结果
function
sendChangePasswordInfo
(
encrypted
){
$
.
ajax
({
type
:
"
POST
"
,
dataType
:
"
text
"
,
url
:
"
homeController/doChangePassword.ajax
"
,
data
:
{
encrypted
:
encrypted
,
vercode
:
$
(
"
#changepassword_vercode
"
).
val
()
},
success
:
function
(
result
)
{
$
(
"
#changepassword_vccodebox
"
).
hide
();
isChangingPassword
=
false
;
switch
(
result
)
{
case
"
success
"
:
$
(
'
#changePasswordModal
'
).
modal
(
'
hide
'
);
break
;
case
"
mustlogin
"
:
showChangePasswordAlert
(
"
提示:登录已失效或尚未登录账户,请刷新并登陆账户
"
);
break
;
case
"
illegal
"
:
showChangePasswordAlert
(
"
提示:用户修改密码功能已被禁用,请求被拒绝
"
);
break
;
case
"
oldpwderror
"
:
showChangePasswordAlert
(
"
提示:旧密码输入错误,请求被拒绝
"
);
$
(
"
#changepassword_oldepwdbox
"
).
addClass
(
"
has-error
"
);
break
;
case
"
needsubmitvercode
"
:
$
(
"
#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton
"
).
attr
(
'
disabled
'
,
false
);
$
(
"
#changepassword_vccodebox
"
).
html
(
"
<label id='changepassword_vercodetitle' class='col-sm-5'><img id='changepassword_showvercode' class='vercodeimg' alt='点击获取验证码' src='homeController/getNewVerCode.do?s=
"
+
(
new
Date
()).
getTime
()
+
"
' onclick='changePasswordGetNewVerCode()'></label><div class='col-sm-7'><input type='text' class='form-control' id='changepassword_vercode' placeholder='验证码……'></div>
"
);
$
(
"
#changepassword_vccodebox
"
).
show
();
isChangingPassword
=
false
;
break
;
case
"
invalidnewpwd
"
:
showChangePasswordAlert
(
"
提示:密码修改失败,新密码不合法。新密码的长度需为3-32个字符,且仅支持ISO-8859-1中的字符(推荐使用英文字母、英文符号及阿拉伯数字)。
"
);
break
;
case
"
error
"
:
showChangePasswordAlert
(
"
提示:密码修改失败,修改请求无法通过加密效验(可能是请求耗时过长导致的)
"
);
break
;
case
"
cannotchangepwd
"
:
showChangePasswordAlert
(
"
提示:密码修改失败,发生意外错误,请稍后重试或联系管理员
"
);
break
;
default
:
showChangePasswordAlert
(
"
提示:密码修改失败,发生未知错误
"
);
break
;
}
},
error
:
function
()
{
showChangePasswordAlert
(
"
提示:密码修改失败,请检查网络链接或服务器运行状态
"
);
}
});
}
// 显示修改密码错误提示
function
showChangePasswordAlert
(
txt
)
{
isChangingPassword
=
false
;
$
(
"
#changepassword_oldpwd,#changepassword_newpwd,#changepassword_reqnewpwd,#changePasswordButton,#changepassword_vercode
"
).
attr
(
'
disabled
'
,
false
);
$
(
"
#changepasswordalertbox
"
).
show
();
$
(
"
#changepasswordalertbox
"
).
text
(
txt
);
}
// (修改密码版本的)获取一个新的验证码
function
changePasswordGetNewVerCode
(){
$
(
"
#changepassword_showvercode
"
).
attr
(
"
src
"
,
"
homeController/getNewVerCode.do?s=
"
+
(
new
Date
()).
getTime
());
}
// 获取永久资源链接
function
getFileChain
(
fileId
,
fileName
){
$
(
"
#fileChainTextarea
"
).
text
(
"
正在获取……
"
);
$
(
"
#copyChainBtn
"
).
attr
(
'
disabled
'
,
true
);
$
(
'
#fileChainModal
'
).
modal
(
'
show
'
);
$
.
ajax
({
type
:
"
POST
"
,
dataType
:
"
text
"
,
url
:
"
homeController/getFileChainKey.ajax
"
,
data
:
{
fid
:
fileId
},
success
:
function
(
result
)
{
switch
(
result
)
{
case
"
ERROR
"
:
$
(
"
#fileChainTextarea
"
).
text
(
"
提示:获取失败,请刷新页面或稍后再试。
"
);
break
;
case
"
mustlogin
"
:
window
.
location
.
href
=
"
prv/login.html
"
;
break
;
default
:
var
getChainFileName
=
fileName
.
replace
(
"
#
"
,
"
%23
"
).
replace
(
"
%
"
,
"
%25
"
).
replace
(
"
?
"
,
"
%3F
"
);
$
(
"
#fileChainTextarea
"
).
text
(
encodeURI
(
window
.
location
.
protocol
+
"
//
"
+
window
.
location
.
host
+
"
/externalLinksController/chain/
"
+
getChainFileName
+
"
?ckey=
"
)
+
encodeURIComponent
(
result
));
$
(
"
#copyChainBtn
"
).
attr
(
'
disabled
'
,
false
);
break
;
}
},
error
:
function
()
{
$
(
"
#fileChainTextarea
"
).
text
(
"
提示:获取失败,无法连接服务器。
"
);
}
});
}
// 复制链接内容
function
copyFileChain
(){
let
node
=
document
.
getElementById
(
'
fileChainTextarea
'
);
// input框
let
issafariBrowser
=
/Safari/
.
test
(
navigator
.
userAgent
)
&&
!
/Chrome/
.
test
(
navigator
.
userAgent
);
if
(
issafariBrowser
){
node
.
setSelectionRange
(
0
,
9999
);
}
else
{
const
range
=
document
.
createRange
();
range
.
selectNode
(
node
);
const
selection
=
window
.
getSelection
();
if
(
selection
.
rangeCount
>
0
)
selection
.
removeAllRanges
();
selection
.
addRange
(
range
);
}
document
.
execCommand
(
'
copy
'
);
}
\ No newline at end of file
webContext/js/home.min.js
浏览文件 @
c54fd6b0
此差异已折叠。
点击以展开。
webContext/js/login.js
浏览文件 @
c54fd6b0
...
...
@@ -16,6 +16,23 @@ $(function() {
$
(
"
#vercodebox
"
).
addClass
(
"
hidden
"
);
// 打开页面自动聚焦账户输入框
$
(
"
#accountid
"
).
focus
();
// 询问是否可以显示注册按钮
$
.
ajax
({
type
:
"
POST
"
,
dataType
:
"
text
"
,
data
:
{},
url
:
"
homeController/askForAllowSignUpOrNot.ajax
"
,
success
:
function
(
result
)
{
if
(
result
==
"
true
"
)
{
$
(
"
#signupBox
"
).
removeClass
(
"
hidden
"
);
$
(
"
#signupBox
"
).
addClass
(
"
show
"
);
return
;
}
},
error
:
function
()
{
alert
(
"
错误:无法连接到kiftd服务器,请检查您的网络连接或查看服务器运行状态。
"
);
}
});
})
function
dologin
()
{
...
...
@@ -78,7 +95,7 @@ function sendLoginInfo(encrypted) {
case
"
permitlogin
"
:
$
(
"
#accountidbox
"
).
removeClass
(
"
has-error
"
);
$
(
"
#accountpwdbox
"
).
removeClass
(
"
has-error
"
);
window
.
location
.
href
=
"
home.html
"
;
window
.
location
.
href
=
"
/
home.html
"
;
break
;
case
"
accountnotfound
"
:
$
(
"
#accountidbox
"
).
addClass
(
"
has-error
"
);
...
...
webContext/js/signup.js
0 → 100644
浏览文件 @
c54fd6b0
/**
* For signup.html
*/
$
(
function
(){
// 回车键快捷操作
$
(
"
body
"
).
keypress
(
function
(
e
)
{
var
keyCode
=
e
.
keyCode
?
e
.
keyCode
:
e
.
which
?
e
.
which
:
e
.
charCode
;
if
(
keyCode
==
13
)
{
var
g
=
$
(
"
#signupBtn
"
).
click
();
return
false
;
}
});
$
(
"
#accountid
"
).
focus
();
//再自动聚焦账户输入框
})
//获取一个新的验证码
function
getNewVerCode
(){
$
(
"
#showvercode
"
).
attr
(
"
src
"
,
"
homeController/getNewVerCode.do?s=
"
+
(
new
Date
()).
getTime
());
}
//执行注册过程
function
doSignUp
(){
// 还原提示状态
$
(
"
#accountidbox,#accountpwdbox,#repaccountpwdbox
"
).
removeClass
(
"
has-error
"
);
$
(
"
#alertbox
"
).
removeClass
(
"
show
"
);
$
(
"
#alertbox
"
).
addClass
(
"
hidden
"
);
var
accountId
=
$
(
"
#accountid
"
).
val
();
var
accountPwd
=
$
(
"
#accountpwd
"
).
val
();
var
repAccountPwd
=
$
(
"
#repaccountpwd
"
).
val
();
// 输入非空检查
if
(
accountId
.
length
==
0
)
{
$
(
"
#accountidbox
"
).
addClass
(
"
has-error
"
);
$
(
"
#accountid
"
).
focus
();
return
;
}
if
(
accountPwd
.
length
==
0
)
{
$
(
"
#accountpwdbox
"
).
addClass
(
"
has-error
"
);
$
(
"
#accountpwd
"
).
focus
();
return
;
}
if
(
repAccountPwd
.
length
==
0
)
{
$
(
"
#repaccountpwdbox
"
).
addClass
(
"
has-error
"
);
$
(
"
#repaccountpwd
"
).
focus
();
return
;
}
// 确认密码检查
$
(
"
#accountid,#accountpwd,#repaccountpwd,#signupBtn,#vercode
"
).
attr
(
'
disabled
'
,
true
);
if
(
accountPwd
+
""
!=
repAccountPwd
+
""
)
{
showAlert
(
"
提示:两次输入的新密码不一致,请检查确认
"
);
$
(
"
#accountpwdbox
"
).
addClass
(
"
has-error
"
);
$
(
"
#repaccountpwdbox
"
).
addClass
(
"
has-error
"
);
return
;
}
// 以加密方式发送修改密码请求
$
.
ajax
({
url
:
'
homeController/getPublicKey.ajax
'
,
type
:
'
POST
'
,
data
:
{},
dataType
:
'
text
'
,
success
:
function
(
result
)
{
// 获取公钥
var
signup_publicKeyInfo
=
eval
(
"
(
"
+
result
+
"
)
"
);
// 生成JSON对象格式的信息
var
signUpInfo
=
'
{account:"
'
+
accountId
+
'
",pwd:"
'
+
accountPwd
+
'
",time:"
'
+
signup_publicKeyInfo
.
time
+
'
"}
'
;
var
encrypt
=
new
JSEncrypt
();
// 加密插件对象
encrypt
.
setPublicKey
(
signup_publicKeyInfo
.
publicKey
);
// 设置公钥
var
encrypted
=
encrypt
.
encrypt
(
signUpInfo
);
// 进行加密
sendSignUpInfo
(
encrypted
);
},
error
:
function
()
{
showAlert
(
"
提示:注册失败,请检查网络链接或服务器运行状态
"
);
}
});
}
// 将加密数据发送至服务器并显示操作结果
function
sendSignUpInfo
(
encrypted
){
$
.
ajax
({
type
:
"
POST
"
,
dataType
:
"
text
"
,
url
:
"
homeController/doSigUp.ajax
"
,
data
:
{
encrypted
:
encrypted
,
vercode
:
$
(
"
#vercode
"
).
val
()
},
success
:
function
(
result
)
{
switch
(
result
)
{
case
"
success
"
:
$
(
"
#accountidbox,#accountpwdbox,#repaccountpwdbox
"
).
removeClass
(
"
has-error
"
);
window
.
location
.
href
=
"
/home.html
"
;
break
;
case
"
illegal
"
:
showAlert
(
"
提示:注册功能已被禁用,请求被拒绝
"
);
break
;
case
"
accountexists
"
:
showAlert
(
"
提示:该账户名已存在,请使用其他账户名进行注册
"
);
$
(
"
#accountidbox
"
).
addClass
(
"
has-error
"
);
break
;
case
"
needvercode
"
:
$
(
"
#accountid,#accountpwd,#repaccountpwd,#signupBtn,#vercode
"
).
attr
(
'
disabled
'
,
false
);
$
(
"
#vercodebox
"
).
removeClass
(
"
hidden
"
);
$
(
"
#vercodebox
"
).
addClass
(
"
show
"
);
getNewVerCode
();
break
;
case
"
invalidaccount
"
:
showAlert
(
"
提示:注册失败,账户名不合法。账户名的长度需为3-32个字符,且仅支持ISO-8859-1中的字符(推荐使用英文字母、英文符号及阿拉伯数字)。
"
);
$
(
"
#accountidbox
"
).
addClass
(
"
has-error
"
);
break
;
case
"
mustlogout
"
:
showAlert
(
"
提示:您已经登入了一个账户,请先注销后再执行本操作
"
);
break
;
case
"
invalidpwd
"
:
showAlert
(
"
提示:注册失败,密码格式不正确。密码的长度需为3-32个字符,且仅支持ISO-8859-1中的字符(推荐使用英文字母、英文符号及阿拉伯数字)。
"
);
$
(
"
#accountpwdbox
"
).
addClass
(
"
has-error
"
);
$
(
"
#repaccountpwdbox
"
).
addClass
(
"
has-error
"
);
break
;
case
"
error
"
:
showAlert
(
"
提示:注册失败,注册请求无法通过加密效验(可能是请求耗时过长导致的)
"
);
break
;
case
"
cannotsignup
"
:
showAlert
(
"
提示:注册失败,发生意外错误,请稍后重试或联系管理员
"
);
break
;
default
:
showAlert
(
"
提示:注册失败,发生未知错误
"
);
break
;
}
},
error
:
function
()
{
showAlert
(
"
提示:注册失败,请检查网络链接或服务器运行状态
"
);
}
});
}
// 显示修改密码错误提示
function
showAlert
(
txt
)
{
$
(
"
#accountid,#accountpwd,#repaccountpwd,#signupBtn,#vercode
"
).
attr
(
'
disabled
'
,
false
);
$
(
"
#alertbox
"
).
removeClass
(
"
hidden
"
);
$
(
"
#alertbox
"
).
addClass
(
"
show
"
);
$
(
"
#alertbox
"
).
text
(
txt
);
}
\ No newline at end of file
webContext/prv/forbidden.html
0 → 100644
浏览文件 @
c54fd6b0
<!doctype html>
<html>
<head>
<base
href=
"/"
>
<meta
charset=
"UTF-8"
>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge,chrome=1"
>
<meta
name=
"renderer"
content=
"webkit"
>
<meta
name=
"viewport"
content=
"width=device-width, initial-scale=1"
>
<title>
KIFT
</title>
<link
rel=
"stylesheet"
href=
"css/bootstrap.min.css"
>
<link
rel=
"stylesheet"
href=
"css/overrall.min.css"
>
<link
rel=
"icon"
type=
"image/x-icon"
href=
"css/icon.png"
/>
<!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div
class=
"container"
>
<div
class=
"row"
>
<div
class=
"col-md-12"
>
<div
class=
"titlebox"
>
<span
class=
"titletext"
><em>
青阳网络文件传输系统
<small><span
class=
"graytext"
>
KIFT
</span></small></em></span>
</div>
<hr
/>
</div>
</div>
<div
class=
"row"
>
<div
class=
"col-md-12"
>
<h2
class=
"centerText"
>
<span
class=
"glyphicon glyphicon-exclamation-sign"
aria-hidden=
"true"
></span>
错误:拒绝访问!
</h2>
<br
/>
<h4
class=
"centerText"
>
您无权访问该服务器,请求已经被阻止。如有疑问请联系管理员。
</h4>
</div>
</div>
</div>
</body>
<script
type=
"text/javascript"
src=
"js/jquery-1.12.4.min.js"
></script>
<script
type=
"text/javascript"
src=
"js/bootstrap.min.js"
></script>
</html>
\ No newline at end of file
webContext/prv/login.html
浏览文件 @
c54fd6b0
...
...
@@ -66,6 +66,11 @@
<div
id=
"alertbox"
role=
"alert"
></div>
<input
id=
"loginBtn"
class=
"form-control btn-success"
type=
"button"
value=
"登录"
onclick=
"dologin()"
>
<br
/>
<div
id=
"signupBox"
class=
"hidden"
>
<input
class=
"form-control btn-info"
type=
"button"
value=
"立即注册"
onclick=
"window.location.href = '/prv/signup.html'"
>
<br
/>
</div>
</form>
</div>
</div>
...
...
webContext/prv/signup.html
0 → 100644
浏览文件 @
c54fd6b0
<!doctype html>
<html>
<head>
<base
href=
"/"
>
<meta
charset=
"UTF-8"
>
<meta
http-equiv=
"X-UA-Compatible"
content=
"IE=edge,chrome=1"
>
<meta
name=
"renderer"
content=
"webkit"
>
<meta
content=
"width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0"
name=
"viewport"
/>
<title>
KIFT
</title>
<link
rel=
"stylesheet"
href=
"css/bootstrap.min.css"
>
<link
rel=
"stylesheet"
href=
"css/overrall.min.css"
>
<link
rel=
"icon"
type=
"image/x-icon"
href=
"css/icon.png"
/>
<!--[if lt IE 9]>
<script src="js/html5shiv.min.js"></script>
<script src="js/respond.min.js"></script>
<![endif]-->
</head>
<body>
<div
class=
"container"
>
<div
class=
"row"
>
<div
class=
"col-md-12"
>
<div
class=
"titlebox"
>
<span
class=
"titletext"
><em>
青阳网络文件传输系统
<small><span
class=
"graytext"
>
KIFT
</span></small></em></span>
</div>
<hr
/>
</div>
</div>
<div
class=
"row"
>
<div
class=
"col-md-6 col-md-offset-3"
>
<p
class=
"centerText"
style=
"font-size: 30px; color: #4D4D4D"
>
<strong>
欢迎注册新账户
</strong>
</p>
<p
class=
"centerText"
style=
"font-size: 18px; color: #9C9C9C"
>
<span
class=
"glyphicon glyphicon-log-in"
></span>
请输入以下信息来创建您的新账户
</p>
<div
class=
"panel panel-default"
>
<div
class=
"panel-heading"
>
<h3
class=
"panel-title"
>
注册新账户
</h3>
</div>
<div
class=
"panel-body"
>
<form
class=
"form-horizontal"
>
<div
class=
"form-group"
id=
"accountidbox"
>
<label
for=
"accountid"
id=
"accountidtitle"
class=
"col-sm-3 control-label"
>
账户名:
</label>
<div
class=
"col-sm-9"
>
<input
type=
"text"
class=
"form-control"
id=
"accountid"
placeholder=
"请输入要注册的账户名……"
>
</div>
</div>
<div
class=
"form-group"
id=
"accountpwdbox"
>
<label
for=
"accountpwd"
id=
"accountpwdtitle"
class=
"col-sm-3 control-label"
>
密码:
</label>
<div
class=
"col-sm-9"
>
<input
type=
"password"
class=
"form-control"
id=
"accountpwd"
placeholder=
"请输入新账户的密码……"
>
</div>
</div>
<div
class=
"form-group"
id=
"repaccountpwdbox"
>
<label
for=
"accountpwd"
id=
"repaccountpwdtitle"
class=
"col-sm-3 control-label"
>
确认密码:
</label>
<div
class=
"col-sm-9"
>
<input
type=
"password"
class=
"form-control"
id=
"repaccountpwd"
placeholder=
"请再次输入新账户的密码……"
>
</div>
</div>
<br
/>
<div
id=
"vercodebox"
class=
"form-group hidden"
><label
class=
'col-sm-5'
><img
id=
'showvercode'
class=
'vercodeimg'
alt=
'点击获取验证码'
src=
''
onclick=
'getNewVerCode()'
></label><div
class=
'col-sm-7'
><input
type=
'text'
class=
'form-control'
id=
'vercode'
placeholder=
'请输入验证码进行验证……'
></div></div>
<div
id=
"alertbox"
role=
"alert"
class=
"alert alert-danger hidden"
></div>
<input
id=
"signupBtn"
class=
"form-control btn-primary"
type=
"button"
value=
"立即注册"
onclick=
"doSignUp()"
>
<br
/>
<input
class=
"form-control btn-danger"
type=
"button"
value=
"返回"
onclick=
"window.location.href = '/home.html'"
>
<br
/>
</form>
</div>
</div>
</div>
</div>
</div>
</body>
<script
type=
"text/javascript"
src=
"js/jquery-1.12.4.min.js"
></script>
<script
type=
"text/javascript"
src=
"js/bootstrap.min.js"
></script>
<script
type=
"text/javascript"
src=
"js/jsencrypt.min.js"
></script>
<script
type=
"text/javascript"
src=
"js/signup.js"
></script>
</html>
\ No newline at end of file
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录