php 数据库时间具体到分钟,php – 在设定的到期时间后删除数据库行(例如5分钟)...
背景:我正在设计一个在线虚拟教室管理系统……当教师创建教室并将其存储在数据库中时,它可以生成随机会话密钥(md5(时间)).
为了访问教室,学生访问唯一的教室URL,代码将URL中的会话密钥(使用GET)与数据库中的会话密钥进行比较.如果匹配则教室显示.
网址通常如下所示:/classroom.php?Instance = a529501db8373609f2d47a7843a461ea
需要编码帮助:我希望我的老师也能够设置会话“长度”,因此教室可以访问15分钟,25分钟或50分钟.
当创建教室以来的时间超过例如25分钟时,会话密钥将从数据库中删除,并且无法再访问教室.
到目前为止我所拥有的:
当教师单击按钮创建一个classroo时,下面的PHP将会话密钥($instance)和会话长度($duration)存储在数据库中……
session_start();
if (isset($_SESSION['id'])) {
if (isset($_POST['hidden'])) {
// Connects to the database
include_once("$_SERVER[DOCUMENT_ROOT]/classes/includes/dbconnect.php");
mysql_connect(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
// Sets the session duration
$currentTime = time();
$duration = $currentTime + $_POST['duration'];
// Session variables
$uid = $_SESSION['id'];
$usname = $_SESSION['username'];
// To generate the random hash from the current time
$time = time(); // time to hash
$instance = md5($time); // hash stored in variable
// Stores the session hash (instance) and duration in the instance database
$query = ("INSERT INTO `my-db-name-foo`.`instances` (`instance`, `expiry`) VALUES (`$instance`, $duration`);");
mysql_query($query) or die(mysql_error());
// Closes the database connection
mysql_close();
// Redirects the teacher header('Location:classroom.php?instance='.$instance);
}
} else {
echo 'Please login';
die();
}
?>
然后在实际的classroom.php页面上,一段代码检查会话是否已过期……如果是,则将其从数据库中删除.
$currentTime = time();
if ($currentTime > $duration){
// Connect to database and delete the row
} else {
// show the classroom
}
?>
任何帮助或建议将不胜感激!
更新—-
感谢所有伟大的答案,这就是目前这一切的工作原理……
在createclassroom.php页面上,我存储实例以及NOW()日期和时间以及持续时间为NOW()$_POST [‘duration’]; …
session_start();
if (isset($_SESSION['id'])) {
if (isset($_POST['duration']) && !EMPTY($_POST['duration'])) {
// Connects to the database
include_once("$_SERVER[DOCUMENT_ROOT]/classes/includes/dbconnect.php");
// Session variables
$uid = $_SESSION['id'];
$usname = $_SESSION['username'];
// To generate the random hash from the current time
$time = time(); // time to hash
$instance = md5($time); // hash stored in variable
// $duration = $_POST['duration'];
$duration = $_POST['duration'];
// Stores the hash (instance) in the instance database
$sql = ("INSERT INTO `xxx_xxxx`.`instances` (`id`, `teacher`, `instance`, `startdate`, `expiredate`) VALUES ('$uid', '$usname', '$instance', NOW(), NOW() + $duration);");
$query = mysqli_query($dbConnect, $sql)or die(mysql_error());
// Redirects the teacher
header('Location:classroom.php?instance='.$instance);
} else if (isset($_POST['hidden'])) {
echo 'Please select a duration';
}
} else {
echo 'Please login';
die();
}
?>
在实际的classroom.php页面上,我只检查未过期的会话实例.
session_start();
// Connects to the database
include_once("$_SERVER[DOCUMENT_ROOT]/classes/includes/dbconnect.php");
$instance = $_GET['instance']; // GETs instance from URL
$usname = $_SESSION['username']; // Gets teacher name
// script to retrieve all the Instances in the database and store them in a variable '$dbInstance'
$sql = "SELECT instance, expiredate FROM instances WHERE instance = '$instance' AND instances.expiredate > NOW()";
$query = mysqli_query($dbConnect, $sql);
$row = mysqli_fetch_row($query);
$dbInstance = $row[0];
if ($dbInstance == $instance){
echo $dbInstance.'
';
echo $instance;
} else {
echo $dbInstance.'
';
echo $instance.'
';
die('Instance not initiated');
}
?>
现在我只需要决定如何经常清理数据库.真的,我想感谢你们的帮助,正是我需要的!
php 数据库时间具体到分钟,php – 在设定的到期时间后删除数据库行(例如5分钟)...相关推荐
- oracle数据库升级失败,Oracle 11.2.0.1 rac 升级失败后,数据库降级方案(flashback database)...
升级失败后,数据库降级方案(flashback database) 环境:Oracle 11.2.0.1 rac on redhat 5.8 Flashback database 准备工作 查看是否f ...
- 被外包程序员植入了后门程序,触发后删除数据库但他们死不承认,该怎么办?...
事情搞到这份上了中间在合作过程中肯定出现了很多不愉快的事情,但是无论发生什么在程序里面植入后门程序都是不符合职业规范的,更何况还出现删除数据库恶性的事件,说明矛盾已经到了不可调和的地步,针对这种事情可 ...
- linux安装数据库乱码,Linux上Oracle安装前汉字乱码和安装后创建数据库乱码的解决方法...
相信每一位在Linux上安装过Oracle的朋友都受过汉字"口口"形乱码的困扰,在论坛上搜索了一下,没有找到完整的解决方案,大都是建议将Linux改成英文环境,有部分回复提到过更改 ...
- js中比较到期时间和当前时间
1.js中比较到期时间和当前时间 方式1.//到期时间let d2 = "2022-12-29";//转换为标准时间"2019/12/29 23:59:59"d ...
- 查域名怎么查?如何查询域名到期时间?
查域名怎么查?怎么查域名最方便?相信大家和小聚有过一样的经历,刚接触域名的时候摸不着头脑,这时候迫切需要一个域名查询工具来使用,了解域名的各种信息.下面就和大家一起来看看查域名怎么查最方便?如何查询域 ...
- “无法删除数据库,因为该数据库当前正在使用“问题解决
"无法删除数据库,因为该数据库当前正在使用"问题解决 参考文章: (1)"无法删除数据库,因为该数据库当前正在使用"问题解决 (2)https://www.cn ...
- python如何编写数据库_如何在几分钟内用Python编写一个简单的玩具数据库
python如何编写数据库 MySQL, PostgreSQL, Oracle, Redis, and many more, you just name it - databases are a re ...
- python现在时间减去过去时间等于20分钟怎么写_获取当前时间减去10分钟的话SQL语句怎么写...
展开全部 对于每个类型拥有的值范围以及并且指定日期e68a84e8a2ad62616964757a686964616f31333363353834何时间值的有效格式的描述见7.3.6 日期和时间类型. ...
- 前一段时间比较火的刷网课平台源码,带数据库和教程
前一段时间比较火的刷网课平台源码,带数据库和教程. 好在疫情已经结束了,希望今后世上再无网课. 这个代码免费提供给大家学习开发用吧,作为一个php的入门学习案例用用还可以. 使用办法 网站根目录解压 ...
最新文章
- 计算机科学与技术真的会掉头发吗,大学“最辛苦”的三个专业,“脱发率”很高,毕业后却都很吃香!...
- ssential Diagram for Windows FormsC#/winForm类似visio的拓扑图节点连线控件免费下载
- 基于 axios 的 Vue 项目 http 请求优化
- 可以装linux的路由器,[转载]linux路由器Quagga的配置(一):安装
- 查询网站web服务器,web服务器地址查询
- jpg转pdf怎么转换?jpg转pdf方法
- 在ARM+LINUX上使用pppd拔号上网(GPRS)流程
- 判断字符串是否为空方法
- 数据库mysql表常见字段大小_常用数据库的字段类型及大小
- python去除图片复杂背景_用Python去除图像的黑色或白色背景实例
- 【10】Docker的安装 --Mac
- PHP面试经常被问到的问题(附答案)
- shape_predictor_5_face_landmarks.dat以及shape_predictor_68_face_landmarks.dat资源分享
- Web前端-aria2:AriaNg
- 【FPGA创新设计竞赛——2022紫光同创杯】1、“基于 RISC-V 处理器的软硬件系统设计”赛题介绍
- Lists.newArrayList
- pgsql报错:User query might have needed to see row versions that must be removed.
- 采集到竞品数据的10个经典方法
- B2B企业品牌驱动增长的底层逻辑
- Win11使用串口转换USB失败问题处理
热门文章
- IDEA使用@Data注解,类调用get、set方法标红的解决办法
- 【问题解决方案】git clone失败的分析和解决
- 在JavaScript中从base64字符串创建Blob
- 子集数据帧中的丢包因子级别
- 为特定的提交生成一个git补丁
- spring cloud微服务注册中心EurekaServer
- servlet过滤器(Filter)
- 常见移动机器人运动学模型总结(图片版)
- 电子信息计算机调剂到能源动力,江苏科技大学机械、电子信息、电子信息能源动力、土木水利2020年考研调剂信息...
- 解决docker push镜像到docker hub报没有权限