【前端】代码求助
本帖最后由 lizf2019 于 2023-8-19 20:54 编辑源码:https://k-n.lanzouw.com/iyXX215u95wd
看着主要是layui的框架 奈何不太熟悉
看了半个多小时也不太明白咋改
想把这个
对话框改大一些 把文本框变成
可以多行的文本域 然后按钮的位置放在中间或者左边
求大佬指点{:301_997:}
js:
(主要是在压缩包的index.php和js里)
JS:
function sendfile(){
layer.open({
type: 1,
title: '传输文件',
//skin: 'layui-layer-rim', //加上边框
//area: ['420px', '240px'], //宽高
content: '<div class="layui-container"><br><form action="?type=uploadfile" method="post" enctype="multipart/form-data"><input type="file" name="file" id="file"><br><br><input type="submit" name="submit" value="立即上传" class="layui-btn"></form><br></div>',
anim:5
});
}
function sendtext(){
layer.open({
type: 1,
title: '传输文字',
//area: ['420px', '240px'],
content: '<div class="layui-container"><br><form action="?type=text" method="post"><div class="layui-form-item"><label class="layui-form-label">文字</label><div class="layui-input-inline"><input type="text" name="text" required lay-verify="required" placeholder="需要传输的文字" autocomplete="off" class="layui-input"></div></div><input type="submit" value="发送" class="layui-btn"><br></form><br></div>',
anim:5
});
}
function gettext(){
layer.open({
type: 1,
title: '接收文字',
//area: ['420px', '240px'],
content: '<div class="layui-container"><br><form action="?type=get" method="post"> <div class="layui-form-item"><label class="layui-form-label">提取码</label><div class="layui-input-inline"><input type="text" name="getcode" required lay-verify="required" placeholder="输入提取码" autocomplete="off" class="layui-input"></div></div><input type="submit" value="获取" class="layui-btn"><br></form><br></div>',
anim:5
});
}
function getfile(){
layer.open({
type: 1,
title: '接收文件',
//area: ['420px', '240px'],
content: '<div class="layui-container"><br><form action="?type=getfile" method="post"> <div class="layui-form-item"><label class="layui-form-label">提取码</label><div class="layui-input-inline"><input type="text" name="getcode" required lay-verify="required" placeholder="输入提取码" autocomplete="off" class="layui-input"></div></div><input type="submit" value="获取" class="layui-btn"><br></form><br></div>',
anim:5
});
}index.PHP:
<?php
//检测是否安装(阅读协议)
$file = "./install/install.lock";
if(!file_exists($file))
{
header("Location: ./install/index.php");
}
//引入配置文件,为后台清空数据做铺垫
include 'config.php';
?>
<!--版权说明
程序名称: 一码空传
作者:轻云
协议:MIT开源协议
授权类型:免费授权
官网:http://send.s-gew.com/
请注明版权!
-->
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title><?=title; ?></title>
<link rel="stylesheet" type="text/css" href="https://www.layuicdn.com/layui/css/layui.css" />
</head>
<body>
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<script src="./other/layer/layer.js"></script>
<script src="./js/functions.js"></script>
<ul class="layui-nav" lay-filter="">
<li class="layui-nav-item"><a href=""><?=title; ?></a></li>
</ul>
<br><br>
<div class="layui-container">
<blockquote class="layui-elem-quote layui-quote-nm">公告:<?=tip; ?></blockquote>
<br>
<fieldset class="layui-elem-field">
<legend>选择传输类型</legend>
<div class="layui-field-box">
<a class="layui-btn layui-btn-fluid"><i class="layui-icon"></i> 传输文件</a><br><br>
<a class="layui-btn layui-btn-primary layui-btn-fluid"><i class="layui-icon"></i> 传输文字</a>
</div>
</fieldset>
<br>
<fieldset class="layui-elem-field">
<legend>选择接收类型</legend>
<div class="layui-field-box">
<a class="layui-btn layui-btn-warm layui-btn-fluid"><i class="layui-icon"></i> 接收文件</a><br><br>
<a class="layui-btn layui-btn-primary layui-btn-fluid"><i class="layui-icon"></i> 接收文字</a>
</div>
</fieldset>
<br>
<p align="center">© <?=date("Y"); ?> <a ref="<?=copylink; ?>"><?=copyr; ?></a></p>
</div>
</body>
<footer>
</footer>
</html>
<?php
//引入配置类
require_once 'Config.class.php';
//初始化配置类
$C = new Config('dataconfig');
/*保存的精简写法
* $C->set('名称', '数据')->save();
*查看写法
* $C->get('名称', '默认值');
*删除写法
* $C->delete("名称")->save();
*/
if ($_GET['type'] == "text"){
$getcode = rand(100000,999999); //提取码生成
$text = $_POST['text'];
$C->set("$getcode", "$text")->save(); //写数据,你懂的
echo "<script> layer.open({ title: '获取提取码' ,content: '上传成功!您的提取码是:" . $getcode . "' ,icon:1});</script>";
}elseif ($_GET['type'] == "get"){
$getcode = $_POST['getcode'];
$text = $C->get("$getcode", "提取码错误或者已被销毁!"); //获取文字
echo "<script> layer.open({ title: '接收文字' ,content: '" . $text . "' });</script>"; //输出文字
$C->delete("$getcode")->save(); //删除文字
}elseif ($_GET['type'] == "getfile"){
include "config.php";
require_once 'Config.class.php'; //引入配置类
$C = new Config('filedata'); //初始化配置类
$downloadsite = website . "upload/" . $C->get($_POST['getcode'], 'error'); //读取数据,若没有读到数据就默认error
$now=date("y-m-d h:i:s"); //当前时间
$time= $C->get($_POST['getcode'] . "overtime", 'error');//过期时间
if(strtotime($now)<strtotime($time)){
header("Location: $downloadsite"); //跳转到文件
}else{
$file = "upload/" . $C->get($_POST['getcode'], ' '); //文件路径
if (!unlink($file)) {
echo ("<script> layer.open({ title: '错误' ,content: '404,文件不存在!请检验文件是否过期或提取码是否正确' ,icon:2});</script>"); //若删除失败就输出
} else {
echo ("<script> layer.open({ title: '错误' ,content: '404,文件不存在!请检验文件是否过期或提取码是否正确' ,icon:2});</script>"); /* 若成功则输出,两者输出一模一样的 */
$C->delete($_POST['getcode']); //删除配置文件
$C->save(); //保存更改
$C->delete($_POST['getcode'] . "overtime"); //删除配置文件
$C->save(); //保存更改
/* 很多朋友不理解为什么要这样写
* 其实这是在给你和服务器减负
* 读取配置的过期时间,用户访问的时候检查时间。若没到,则可以跳转。若到了,就提示并删除文件
* 你可能会问:为什么不用定时任务?万一用户只用一次...
* 我只想说:PHP是弱语言,离开了客户机就不能运作了。所以如果要用定时任务的话你可以手动清理。或者用宝塔面板。
* OK就到这里,不懂不解释。
*/
}
}
}elseif ($_GET['type'] == "uploadfile"){
// 允许上传的文件后缀
$allowedExts = array(
"gif",
"jpeg",
"jpg",
"png",
"zip",
"rar",
"7z",
"doc",
"docx",
"xls",
"xlsx",
"ppt",
"pptx",
);
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp); // 获取文件后缀名
/* 文件判断核心开始
* 这里提供两种方案,最好的就是目前的黑名单方式
* 如果想要设置为白名单,那就去掉==前的感叹号!,就会变成白名单形式
* 去掉了感叹号以后再把==后面引号里面的改为你自己要的后缀
*/
if ((($extension!== "php") || ($extension!== "ini") || ($extension!== "html") || ($extension!== "asp") || ($extension!== "jsp") || ($extension!== "exe") || ($extension!== "htm") || ($extension!== "js") || ($extension!== "css")) && ($_FILES["file"]["size"] < 204800000) // 小于 200 mb
&& in_array($extension, $allowedExts)) {
if ($_FILES["file"]["error"] > 0) {
echo "<script> layer.open({ title: '错误' ,content: '系统内部错误,请重试!' ,icon:2});</script>"; //当上传出错提醒错误
} else {
//随机产生六位数密码Begin
//第一种解决方案,当您的用户很多的时候就选用这种混合6位数方法
function randStr($len = 6, $format = 'ALL') {
switch ($format) {
case 'ALL':
$chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
break;
case 'CHAR':
$chars = 'abcdefghijklmnopqrstuvwxyz';
break;
case 'NUMBER':
$chars = '0123456789';
break;
default:
$chars = 'abcdefghijklmnopqrstuvwxyz0123456789';
break;
}
mt_srand((double)microtime() * 1000000 * getmypid());
$password = "";
while (strlen($password) < $len) $password.= substr($chars, (mt_rand() % strlen($chars)) , 1);
return $password;
}
//随机产生六位数密码End
$lsm = randStr(6); //这个其实是一开始写废的代码,留着就好,别删。
// $lsm这个变量的第二种解决方案:rand(1000,9999); 这样写生成四位随机数
$link = website . "upload/" . $filenames;
$filenames = md5("xlsx88skzkl" . $_FILES["file"]["name"] . "getgetspakejxn" . rand(0000, 9999)) . "." . $extension; /* md5加密更改后的文件名,保证文件安全 */
/* echo "上传文件名: " . $filenames . "<br>";
echo "文件类型: " . $_FILES["file"]["type"] . "<br>";
echo "文件大小: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
/* echo "文件临时存储的位置: " . $_FILES["file"]["tmp_name"] . "<br>"; */
// 判断当前目录下的 upload 目录是否存在该文件
// 如果没有 upload 目录,你需要创建它,upload 目录权限为 777
if (file_exists("upload/" . $_FILES["file"]["name"])) {
echo "<script> layer.open({ title: '错误' ,content: '系统内部错误,请重试!' ,icon:2});</script>"; //当存在重名文件,就报错。
} else {
// 如果 upload 目录不存在该文件则将文件上传到 upload 目录下
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
/* echo "文件下载直链: " . $website . "upload/" . $_FILES["file"]["name"]; */
require_once 'Config.class.php'; //引入孟坤的配置读取类
$tqm = rand(100000,999999); //定义提取码为6位混合(第一种方案),第二种方案: randStr(6); 即为生成四位随机数
$link = $filenames; //这里的变量名本来是下载链接,但是后来考虑到了有删除功能,就直接等于了变量filenames(文件名)
$overtime = date('y-m-d h:i:s',time()+24*60*60);
$tqname = $tqm . "overtime";
$C = new Config('filedata'); //初始化配置类
$C->set("$tqm", "$link")->save(); //写入数据文件dataconfig.php,分别是提取码和下载文件名
$C->set("$tqname", "$overtime")->save(); //写入数据文件dataconfig.php,分别是提取码标识和过期时间
echo "<script> layer.open({ title: '获取提取码' ,content: '上传成功!您的提取码是:" . $tqm . "' ,icon:1});</script>"; //输出成功。
rename("upload/" . $_FILES["file"]["name"], "upload/" . $filenames); //重命名文件名,加密文件名
}
}
} else {
echo "<script> layer.open({ title: '错误' ,content: '您上传的文件不符合规定,请检查大小或者后缀!' ,icon:2});</script>"; /* 当所有条件不满足,就报错。 */
}
}
?>
源码:https://k-n.lanzouw.com/iyXX215u95wd 本帖最后由 萌萌嗒的小白 于 2023-8-19 21:47 编辑
这样就可以了
完整代码居中
function sendtext() {
layer.open({
type: 1,
title: '传输文字',
area: ['520px', '340px'],
content: '<div style="margin-top: 20px"><form action="?type=text" method="post"><div class="layui-form-item"><label class="layui-form-label">文字</label><div class="layui-input-inline">' +
'<textarea rows="4" cols="50" name="text">输入内容</textarea></div>' +
'</div><div style="display: flex;justify-content: center;"><input type="submit"value="发送" class="layui-btn"></div></form></div>',
anim: 5
});
} 按钮居中
<div style="display: flex;justify-content: center;"><input type="submit"value="发送" class="layui-btn"></div> 这种一般改一下css就好了 萌萌嗒的小白 发表于 2023-8-19 21:36
这样就可以了
大佬这个手机访问的话能不能适配下窗口弹出的对话框显示不全
页:
[1]