希望在退出时重新连接服务器.我可以设置任何形式的Javascript / jQuery / AJAX陷阱


Looking to connect back with the server upon exit. Any form of Javascript / jQuery / AJAX trap out there I can set?

首先要做的事。 我在 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 注入的影响。