首先要做的事。 我在 PHP/MySQL 站点上运行 CodeIgniter。
我的任务是为一系列电影创建一个"shell"应用程序,人们可以为我正在构建的培训网站查看该应用程序。 这里的想法是,一个人将能够登录到一个页面,单击"参加课程"并让它记录课程的时间。 然后,当这个人离开带有电影的页面时,我将能够记录课程结束的时间。 通过这种方式,我可以比较开始和结束时间,并确定用户是否观看了大部分电影,以便给予用户信任。 嗯,第一部分很容易。 首先,我在数据库中构建了一个包含以下字段的表:
- intKey (intKey(10((
- strHash (varchar(255((
- dt开始(日期时间(
- dt已结束(日期时间(
- varIpAddress (varchar(255((
我已经放置了一个控制器来执行此操作:
$ip_address = $_SERVER['REMOTE_ADDR'];
$data['hash'] = md5(time() . "Proof of Concept!");
$this->db->query("INSERT INTO pocTime SET strHash = '" . $data['hash'] . "', dtBegan = now(), varIpAddress='$ip_address'");
$this->load->view('welcome_message',$data);
好吧......足够简单,是吗? 我也知道,当我完成后,我想启动一个这样做的文件:
$ip_address = $_SERVER['REMOTE_ADDR'];
$this->db->query("UPDATE pocTime SET dtEnded = now() WHERE strHash = '" . $data['hash'] . "' AND varIpAddress='$ip_address'");
我希望做的是有一个由第一个代码块调用的页面,并设置一个"陷阱",以便在呈现的页面关闭时,第二个代码块由某种"回发"运行。 有什么建议吗? 我知道我可以放一些大的"单击此处结束您的视频"类型的按钮来覆盖这一点,但我正在寻找以某种形式的页面退出运行代码,因为我不知道用户在观看视频后会做什么。 有什么想法吗?
简单但应该可以工作,使用 jQuery
$(window).unload(function(){
$.get("test.php?dim1=turn&dim2=off");
});
使用unload
哪个jQuery文档可以说明是什么触发了这个:http://api.jquery.com/unload/
使用get
jQuery 文档在这里:http://api.jquery.com/get/
或者您也可以使用帖子
$(window).unload(function(){
$.post("test.php", { dim1: "turn", dim2: "off" } );
});
http://api.jquery.com/jQuery.post/
您正在寻找 jQuery 的卸载事件。
我还建议您在数据库查询中使用Codeigniter的活动记录语法。它不仅使编写 INSERT 和 UPDATE 查询变得更加容易,而且还会转义并清理您的输入,以保护您免受 SQL 注入的影响。