1 Star 0 Fork 3

baxtax / diywzdh

forked from 无形的肖申克 / diywzdh 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
create.php 11.21 KB
一键复制 编辑 原始数据 按行查看 历史
无形的肖申克 提交于 2020-10-02 19:31 . 修改重大 bug
<?php
require 'header.php';
////////////////////////////////////////////////////////////////////////////////
// 思路
//
// 一,从读取数据到 textarea 中
// 输入的 pageID 是否为空?
// 如果为空
// 提示输入 pageID
// 如果不为空
// 该 pageID 是否已经存在?
// 如果已经存在
// 提示输入其他 pageID
// 如果不存在
// 加载默认 json 数据到 textsea 中
//
// 二,向 json 文件中写入数据
// pageID 不为空且 safeKey 不为空?
// 如果否
// 提示 pageID 与 safeKey 不能为空
// 如果是
// pageID 是否已经存在?
// 如果是
// 提示修改 pageID
// 如果否
// 根据 pageID 创建 json 文件,存入 textarea 中的数据
// 将 pageID 与 safeKey 存入 user.json 中
// 提示创建成功
//
/* 判断是否输入了 pageID */
if (empty($_GET['pageID'])) {
echo "需要传入有效的 pageID。";
exit;
}
/* 判断该 pageID 是否已经存在 */
$pageID = $_GET['pageID'];
$usersJson= $datapath . "/user.json";
$strUsers = file_get_contents($usersJson);
$users = json_decode($strUsers, true);
$websitesDataString = "";
if (array_key_exists($pageID, $users)) {
// 该 pageID 已被占用
echo '"' . $pageID . '" 已经有人在使用了,请另外选择一个 pageID。';
exit;
} else {
// 该 pageID 尚未被占用
if (!(!empty($_POST['inputPageID']) && !empty($_POST['inputSafeKey']))){
// 用户尚未提交表单
$defaultPageData = $datapath . "/siteid_hello.json";
$websitesDataString = file_get_contents($defaultPageData);
} else {
// 用户已经提交表单
// 再次判断传入的 pageID 是否已经存在
// 根据 pageID 创建 json 文件,存入 textarea 中的数据
// 将 pageID 与 safeKey 存入 user.json 中
// 提示创建成功
$pageID = $_POST['inputPageID'];
$safeKey = $_POST['inputSafeKey'];
if (array_key_exists($pageID, $users)) {
exit("该 pageID 已经有人在使用了,不能重复创建。");
} else {
// 创建 json 文件 存放 textarea 中的数据
$newFileName = $datapath . '/siteid_' . $pageID . '.json';
$data = $_POST['websitesData'];
$handle = fopen($newFileName, 'a') or die('创建 json 文件失败');
fwrite($handle, $data);
fclose($handle);
// 将 pageID 与 safeKey 存入 user.json 中
$users[$pageID] = $safeKey;
$jsonData = json_encode($users);
file_put_contents($datapath . '/user.json', $jsonData);
/* 创建成功后自动跳转到查看界面 */
$url = "view.php?pageID=" . $pageID;
header('Refresh:1,Url=' . $url);
echo "创建成功。页面跳转中……";
exit;
}
}
}
?>
<!doctype html>
<html>
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="resources/bootstrap-4.3.1-dist/css/bootstrap.min.css">
<title>新建</title>
</head>
<body>
<!-- --------------------------------------------------------------------- -->
<!--顶部导航栏-->
<!--参考资料:https://bootstrapcreative.com/pattern/navbar-centered-logo-links-left-right/-->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<!-- Show this only on mobile to medium screens -->
<div class="navbar-brand d-lg-none">自定义网址导航</div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggle" aria-controls="navbarToggle" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Use flexbox utility classes to change how the child elements are justified -->
<div class="collapse navbar-collapse justify-content-between" id="navbarToggle">
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="index.php" target="_self">首页<span class="sr-only">(current)</span></a>
</li>
</ul>
<!-- Show this only lg screens and up -->
<div class="navbar-brand d-none d-lg-block">自定义网址导航</div>
<ul class="navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#" target="_self">使用帮助</a>
</li>
</ul>
</div>
</nav>
<!--顶部导航栏-->
<!-- ----------------------------------------------------------------------- -->
<div class="container-fluid mt-2">
<form method="post" action="">
<div class="input-group input-group-sm mb-2">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroup-sizing-sm">导航页ID</span>
</div>
<input
id="inputPageID"
name="inputPageID"
type="text"
class="form-control"
required
>
</div>
<div class="input-group input-group-sm mb-2">
<div class="input-group-prepend">
<span class="input-group-text" id="inputGroup-sizing-sm">保护口令</span>
</div>
<input
id="inputSafeKey"
name="inputSafeKey"
type="text"
class="form-control"
required
autofocus
>
</div>
<div class="form-group mb-2">
<textarea
id="websitesData"
name="websitesData"
class="form-control"
rows="15"
placeholder="网址 json 数据"
required><?php echo $websitesDataString; ?></textarea>
</div>
<div>
<button id="btnSubmit" type="submit" class="btn btn-sm btn-outline-primary">新建</button>
<button type="button" id="btnReset" class="btn btn-sm btn-outline-secondary">重置</button>
</div>
</form>
</div>
<!-- ----------------------------------------------------------------------- -->
<!--导入用到的 javascript 库-->
<script src="resources/jquery-3.4.0/jquery-3.4.0.min.js"></script>
<script src="resources/bootstrap-4.3.1-dist/js/bootstrap.min.js"></script>
<!-- ----------------------------------------------------------------------- -->
<script>
var formEdited = false;
// 监听用户是进行了输入操作
$('#inputPageID, #inputSafeKey, #websitesData').keydown(function () {
formEdited = true;
});
// 页面刷新或关闭前弹窗警告
$(window).on('beforeunload', function () {
if (formEdited == true) {
return 'Are you sure you want to leave?';
}
});
// 点击按钮提交表单刷新页面时不弹窗警告
// 参考资料:https://stackoverflow.com/questions/1973708/how-to-prevent-onbeforeunload-from-being-called-when-clicking-submit-button
$('#btnSubmit').click(function () {
$(window).off('beforeunload');
});
</script>
<!-- ----------------------------------------------------------------------- -->
<script type="text/javascript">
// 页面初始化时给“导航页ID“输入框赋初始值
$("#inputPageID").val('<?php echo $pageID; ?>');
</script>
<!-- ----------------------------------------------------------------------- -->
<script>
// 重置指定输入框的值
function resetInput(id) {
$('#' + id).val(function() {
return this.defaultValue;
});
}
// 点击重置按钮时执行的动作
$('#btnReset').click(function () {
// 重置文本框中的数据
resetInput('websitesData');
// 文本框重新获得焦点
// $('#websitesData').focus();
});
</script>
<!-- ----------------------------------------------------------------------- -->
<script type="text/javascript">
// 编辑时按下 tab 键,缩进4个空格
// 参考:https://stackoverflow.com/questions/5743916/how-to-add-autoindent-to-html-textarea
$("#websitesData").keydown(function(e)
{
if (e.which == 9) //ASCII tab
{
e.preventDefault();
var start = this.selectionStart;
var end = this.selectionEnd;
var v = $(this).val();
if (start == end)
{
$(this).val(v.slice(0, start) + " " + v.slice(start));
this.selectionStart = start+4;
this.selectionEnd = start+4;
return;
}
var selectedLines = [];
var inSelection = false;
var lineNumber = 0;
for (var i = 0; i < v.length; i++)
{
if (i == start)
{
inSelection = true;
selectedLines.push(lineNumber);
}
if (i >= end)
inSelection = false;
if (v[i] == "\n")
{
lineNumber++;
if (inSelection)
selectedLines.push(lineNumber);
}
}
var lines = v.split("\n");
for (var i = 0; i < selectedLines.length; i++)
{
lines[selectedLines[i]] = " " + lines[selectedLines[i]];
}
$(this).val(lines.join("\n"));
}
});
</script>
<!------------------------------------------------------------------------- -->
<script>
// 编辑时按下回车键,自动缩进
// $("#websitesData").keypress(function(e)
// {
// if (e.which == 13) // ASCII newline
// {
// setTimeout(function(that)
// {
// var start = that.selectionStart;
// var v = $(that).val();
// var thisLine = "";
// var indentation = 0;
// for (var i = start-2; i >= 0 && v[i] != "\n"; i--)
// {
// thisLine = v[i] + thisLine;
// }
// for (var i = 0; i < thisLine.length && thisLine[i] == " "; i++)
// {
//
// indentation++;
// }
// $(that).val(v.slice(0, start) + " ".repeat(indentation) + v.slice(start));
// that.selectionStart = start+indentation;
// that.selectionEnd = start+indentation;
// }, 0.01, this);
// }
// });
</script>
<!------------------------------------------------------------------------- -->
<?php
echo $analysisCode;
?>
<!-- ----------------------------------------------------------------------- -->
</body>
</html>
PHP
1
https://gitee.com/baxtax/diywzdh.git
git@gitee.com:baxtax/diywzdh.git
baxtax
diywzdh
diywzdh
master

搜索帮助