主要方便用户电脑手机端文字传输,网盘基本都只能传文件。手机电脑互传文字
直接免费使用☞网络记事本
下面直接上简单代码
需求就是网页输入文字自动保存,限制输入长度,可用自己删除记录,限制某些违规关键词
下面只是基本实现如需更多功能和和安全设置,自己更新把
代码查看
<?php
/**
* Template name: 网络笔记本
*/
get_header();
?>
<?php
// 获取当前时间戳
$timestamp = time();
// 根据时间戳生成文件名
$filename = get_template_directory() . '/copytext/' . "51yhyh_" . $timestamp . ".html";
// 获取要删除的文件名
$filename_to_delete = $_GET['filename'];
// 获取表单提交的数据
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST["note"])) {
$note = $_POST["note"];
// 检查表单是否为空
if (trim($note) == "") {
echo "表单不能为空,请输入内容后再提交!";
} else {
// 检查文本中是否包含禁用的词或符号
if (strpos($note, "<?php") !== false || strpos($note, "色情") !== false) {
echo "提交被禁止,文中含有禁用的词或符号!";
} else {
// 将数据写入到指定的文件中
$file = fopen($filename, "w");
fwrite($file, "<html><body>" . $note . "</body></html>");
fclose($file);
// 生成查看链接
$link = '/mytool/copytext/' . "51yhyh_" . $timestamp . ".html";
// 显示删除按钮和保存的链接
// echo '<p>查看链接:<a href="' . $link . '">' . 点击查看 . '</a></p>';
}
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>网络记事本</title>
</head>
<body>
<h1>网络记事本 <font size = "2"; color = "red">www.51yhyh.com/copytext</font> </h1>
<form id="form1" action="" method="POST">
<textarea id="note" name="note" rows="4" cols="50" placeholder="请输入文字,请勿输入黄赌毒等违法内容。"></textarea><br>
<input type="submit" id="submit1" value="保存" >
</form>
<script>
const textarea = document.getElementById('note');
textarea.addEventListener('input', function() {
const maxLength = 200;
const text = this.value;
if (text.length > maxLength) {
// 如果文本长度超过限制,剪裁文本并显示警告消息
this.value = text.slice(0, maxLength);
alert('输入的文字超过限制,已自动剪裁!');
}
});
</script>
<!-- 检测文字不能超过200 -->
<!--
<p>查看您的保存☞
:<a href="<?php echo $link; ?>">网页查看</a></p>
-->
<p>已保存的记事本内容👇:<font color = "red">保存后可往手机端/电脑端查看</font></p>
<div id="notes">
<?php
if (file_exists($filename)) {
$notes = file($filename);
foreach ($notes as $note) {
echo "<p>" . $note . "</p>";
}
} else {
echo "<p>尚未保存任何记事本内容。</p>";
}
?>
</div>
===============================
<?php
// 获取所有生成的内容并显示
echo '<p>查看最近全部</p>';
if (is_dir(get_template_directory() . 'l/copytext')) {
$dir = new RecursiveDirectoryIterator(get_template_directory() . '/myupload/mytool/copytext');
$iterator = new RecursiveIteratorIterator($dir);
foreach ($iterator as $file) {
if ($file->isFile()) {
$file_data = file_get_contents($file->getRealPath());
echo '<p><strong>' . $file->getBasename() . '</strong></p>';
echo '<p>' . $file_data . '</p>';
// 添加删除按钮
echo '<form id="form2" method="POST" action="" enctype="multipart/form-data">'; // 添加enctype属性以支持文件上传
echo '<input type="hidden" name="filenamedel" value="' . $file->getRealPath() . '">';
echo '<input type="submit" id="submit2" value="删除文件">';
echo '</form>';
}
}
} else {
echo '<p>尚未生成任何内容。</p>';
}
// 处理删除文件的函数
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST['filenamedel'])) {
$filenameToDelete = $_POST['filenamedel'];
// 检查文件是否存在并可写
if (file_exists($filenameToDelete) && is_writable($filenameToDelete)) {
// 删除文件
unlink($filenameToDelete);
echo '<p>文件已成功删除。</p>';
// 重定向到原始页面或进行其他适当的操作
//header('Location: ' . $_SERVER['REQUEST_URI']); // 重定向到当前页面
exit(); // 确保重定向发生
} else {
echo '<p>无法删除文件。</p>';
}
}
}
?>
</br>
========================
<p>请移动端和电脑端都收藏本网址。</p>
<p>本页是51福利网方便大家手机移动端和电脑PC端上传文字。</p>
<p>仅作临时记事本,为了您的隐私请使用后尽快删除。</p>
<p ><font color = "red">不得传递任何违法内容,如有发现直接举报相关部门。</font></p>
<p>内容不是长期保存,51福利网官方不定时删除内容。</p>
<?php
get_footer();
一些知识点记录:
1.strpos()
函数用于查找指定的字符串是否存在于提交的文本中。如果找到禁用的词或符号,strpos()
函数将返回字符串的起始位置的索引值(索引从0开始),否则返回false
。我们使用!== false
来确保禁用的词或符号确实存在于文本中。如果存在,就输出一条相应的错误消息。如果文本中不包含禁用的词或符号,则继续执行文件保存和其他操作。
2.增加数据验证和安全性措施。以下是对上述代码进行一些改进的建议:
- 数据验证:
在将用户输入保存到文件中之前,您可以添加一些数据验证来确保输入的合法性。例如,您可以检查用户输入的文本长度,禁止包含特定字符等。
以下是改进的数据验证示例:
<?php
// 数据验证
if (empty($_POST['note'])) {
echo "请输入记事本内容。";
exit;
}
if (strlen($_POST['note']) > 1000) {
echo "记事本内容不能超过1000个字符。";
exit;
}
// 其余代码保持不变...
?>
在上述代码中,我们首先检查提交的记事本内容是否为空,如果为空,则显示错误消息并退出。接下来,我们检查记事本内容的长度是否超过1000个字符,如果是,同样显示错误消息并退出。
2.为什么用上面代码制作的网页,手机浏览器上没有保存记录呢 但是电脑页面有
我的原因是我用wordpress缓存插件导致的,我直接再缓存插件中禁止缓存该页面并再缓存中删除改缓存就好了
其他原因请按下面自行检查
这可能是由于手机浏览器和电脑浏览器的处理机制不同导致的。为了解决这个问题,可以尝试以下几种方法:
- 检查网页的缓存设置:确保网页的缓存设置是启用的。这可以通过在网页的头部添加缓存控制元标记来实现。例如,可以添加以下代码:
<meta http-equiv="Cache-Control" content="max-age=86400" />
这行代码将告诉浏览器将网页缓存24小时。
2. 检查浏览器的缓存设置:确保手机浏览器的缓存设置是启用的。这可以在浏览器的设置菜单中找到。如果浏览器的缓存设置被禁用,网页将无法被保存在浏览器的缓存中。
- 检查网页的代码:确保网页的代码中没有禁止缓存的设置。例如,检查网页的头部是否包含以下代码:
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
这些代码将告诉浏览器不要缓存网页。
4. 使用缓存插件:如果以上方法都无法解决问题,可以尝试使用缓存插件。这些插件可以帮助网页更好地适应不同的浏览器和设备,并提供更好的缓存功能。
3.电脑页面没有问题,但是手机浏览器端直接跳到网站首页去了
在手机浏览器上,你的网页可能会因为表单提交而重新加载页面,这可能会导致页面跳转到网站的首页。这是因为在手机浏览器上,表单的默认行为是刷新页面。
为了解决这个问题,你可以使用JavaScript来阻止表单的默认提交行为,并使用Ajax来提交表单数据。这样,表单的提交就不会导致页面刷新,而是会在后台与服务器进行交互。
我将上面用在worpresss的页面里面,老是电脑端没问题,手机端跳转到网站首页。大家懂的自行研究吧。
4.一个页面上面的表单保存按钮相干涉了
为了避免与现有的表单提交框和按钮相干涉,您可以在两个表单中添加一个唯一的标识符,以便在处理表单时能够区分不同的操作。以下是修改后的代码示例
如第一个表单 :第一个表单的 name
属性设置为唯一的值,例如 “note_form”。这样,在处理表单时,您可以通过检查 name
属性的值来确定是哪个表单被提交。
<form id="form1" action="" method="POST" name="note_form">
<textarea id="note" name="note" rows="4" cols="50" placeholder="请输入文字,"></textarea><br>
<input type="hidden" name="action" value="save">
<input type="submit" id="submit1" value="保存">
</form>
然后,在处理表单时,您可以根据 name
属性的值执行相应的操作,例如:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST["note"])) {
// 处理第一个表单的提交
$note = $_POST["note"];
// 执行保存操作或其他适当的操作
} elseif (isset($_POST["filenamedel"])) {
// 处理第二个表单的提交
$filenameToDelete = $_POST["filenamedel"];
$action = $_POST["action"];
// 执行删除操作或其他适当的操作
}
}
如果您将两个表单的 PHP 代码分开处理,那么您可以在每个表单的处理代码中检查特定的字段来确定是哪个表单被提交。以下是示例代码:
第一个表单的处理代码:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST["note"])) {
// 处理第一个表单的提交
$note = $_POST["note"];
// 执行保存操作或其他适当的操作
}
}
第二个表单的处理代码:
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (isset($_POST["filenamedel"])) {
// 处理第二个表单的提交
$filenameToDelete = $_POST["filenamedel"];
$action = $_POST["action"];
// 执行删除操作或其他适当的操作
}
}
请确保在每个表单的处理代码中只检查该表单特有的字段,以避免混淆。这样,当您提交第一个表单时,只有第一个表单的处理代码会被执行,而当您提交第二个表单时,只有第二个表单的处理代码会被执行。
5.显示内容时去除HTML标签
你可以在PHP中使用strip_tags
函数这个函数可以去除字符串中的HTML和PHP标签
$note = strip_tags($note);
6.文件名从大到小排序,从小到大排序
// 按文件名从大到小排序
usort($files, function($a, $b) {
return -strnatcmp(basename($b), basename($a));
});
// 按文件名从小到大排序
usort($files, function($a, $b) {
return strnatcmp(basename($b), basename($a));
});
使用strnatcmp
函数进行自然排序,并在比较结果前加上负号以实现逆序。下面是修改后的代码示例: