背景:我正在设计一个在线虚拟教室管理系统……当教师创建教室并将其存储在数据库中时,它可以生成随机会话密钥(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分钟)...相关推荐

  1. oracle数据库升级失败,Oracle 11.2.0.1 rac 升级失败后,数据库降级方案(flashback database)...

    升级失败后,数据库降级方案(flashback database) 环境:Oracle 11.2.0.1 rac on redhat 5.8 Flashback database 准备工作 查看是否f ...

  2. 被外包程序员植入了后门程序,触发后删除数据库但他们死不承认,该怎么办?...

    事情搞到这份上了中间在合作过程中肯定出现了很多不愉快的事情,但是无论发生什么在程序里面植入后门程序都是不符合职业规范的,更何况还出现删除数据库恶性的事件,说明矛盾已经到了不可调和的地步,针对这种事情可 ...

  3. linux安装数据库乱码,Linux上Oracle安装前汉字乱码和安装后创建数据库乱码的解决方法...

    相信每一位在Linux上安装过Oracle的朋友都受过汉字"口口"形乱码的困扰,在论坛上搜索了一下,没有找到完整的解决方案,大都是建议将Linux改成英文环境,有部分回复提到过更改 ...

  4. js中比较到期时间和当前时间

    1.js中比较到期时间和当前时间 方式1.//到期时间let d2 = "2022-12-29";//转换为标准时间"2019/12/29 23:59:59"d ...

  5. 查域名怎么查?如何查询域名到期时间?

    查域名怎么查?怎么查域名最方便?相信大家和小聚有过一样的经历,刚接触域名的时候摸不着头脑,这时候迫切需要一个域名查询工具来使用,了解域名的各种信息.下面就和大家一起来看看查域名怎么查最方便?如何查询域 ...

  6. “无法删除数据库,因为该数据库当前正在使用“问题解决

    "无法删除数据库,因为该数据库当前正在使用"问题解决 参考文章: (1)"无法删除数据库,因为该数据库当前正在使用"问题解决 (2)https://www.cn ...

  7. python如何编写数据库_如何在几分钟内用Python编写一个简单的玩具数据库

    python如何编写数据库 MySQL, PostgreSQL, Oracle, Redis, and many more, you just name it - databases are a re ...

  8. python现在时间减去过去时间等于20分钟怎么写_获取当前时间减去10分钟的话SQL语句怎么写...

    展开全部 对于每个类型拥有的值范围以及并且指定日期e68a84e8a2ad62616964757a686964616f31333363353834何时间值的有效格式的描述见7.3.6 日期和时间类型. ...

  9. 前一段时间比较火的刷网课平台源码,带数据库和教程

    前一段时间比较火的刷网课平台源码,带数据库和教程. 好在疫情已经结束了,希望今后世上再无网课. 这个代码免费提供给大家学习开发用吧,作为一个php的入门学习案例用用还可以. 使用办法 网站根目录解压 ...

最新文章

  1. 计算机科学与技术真的会掉头发吗,大学“最辛苦”的三个专业,“脱发率”很高,毕业后却都很吃香!...
  2. ssential Diagram for Windows FormsC#/winForm类似visio的拓扑图节点连线控件免费下载
  3. 基于 axios 的 Vue 项目 http 请求优化
  4. 可以装linux的路由器,[转载]linux路由器Quagga的配置(一):安装
  5. 查询网站web服务器,web服务器地址查询
  6. jpg转pdf怎么转换?jpg转pdf方法
  7. 在ARM+LINUX上使用pppd拔号上网(GPRS)流程
  8. 判断字符串是否为空方法
  9. 数据库mysql表常见字段大小_常用数据库的字段类型及大小
  10. python去除图片复杂背景_用Python去除图像的黑色或白色背景实例
  11. 【10】Docker的安装 --Mac
  12. PHP面试经常被问到的问题(附答案)
  13. shape_predictor_5_face_landmarks.dat以及shape_predictor_68_face_landmarks.dat资源分享
  14. Web前端-aria2:AriaNg
  15. 【FPGA创新设计竞赛——2022紫光同创杯】1、“基于 RISC-V 处理器的软硬件系统设计”赛题介绍
  16. Lists.newArrayList
  17. pgsql报错:User query might have needed to see row versions that must be removed.
  18. 采集到竞品数据的10个经典方法
  19. B2B企业品牌驱动增长的底层逻辑
  20. Win11使用串口转换USB失败问题处理

热门文章

  1. IDEA使用@Data注解,类调用get、set方法标红的解决办法
  2. 【问题解决方案】git clone失败的分析和解决
  3. 在JavaScript中从base64字符串创建Blob
  4. 子集数据帧中的丢包因子级别
  5. 为特定的提交生成一个git补丁
  6. spring cloud微服务注册中心EurekaServer
  7. servlet过滤器(Filter)
  8. 常见移动机器人运动学模型总结(图片版)
  9. 电子信息计算机调剂到能源动力,江苏科技大学机械、电子信息、电子信息能源动力、土木水利2020年考研调剂信息...
  10. 解决docker push镜像到docker hub报没有权限