2

第一件事。我在 PHP/MySQL 站点上运行 CodeIgniter。

我的任务是为一系列电影创建一个“外壳”应用程序,人们可以在我正在构建的培训网站上观看这些电影。这里的想法是一个人可以登录到一个页面,单击“参加课程”并让它记录课程的时间。然后,当这个人带着电影退出页面时,我就能记录课程结束的时间。通过这种方式,我可以比较开始时间和结束时间,并确定用户是否观看了大部分影片,以便给予用户信任。嗯,第一部分很简单。首先,我在我的数据库中建立了一个包含以下字段的表:

  • intKey (intKey(10))
  • strHash (varchar(255))
  • dtBegan(日期时间)
  • dtEnded(日期时间)
  • 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'");

我希望做的是有一个由第一个代码块调用的页面,并设置一个“陷阱”,可以这么说,以便第二个代码块由某种“回发”运行,如果呈现页面关闭。有什么建议么?我知道我可以放置某种大的“单击此处结束您的视频”类型的按钮来涵盖这一点,但我希望在某种形式的页面退出时运行代码,因为我不知道是什么用户在观看视频后会这样做。有什么想法吗?

4

3 回答 3

2

简单但应该工作,使用 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/

或者你也可以使用 post

$(window).unload(function(){ 
    $.post("test.php", { dim1: "turn", dim2: "off" } ); 
});

http://api.jquery.com/jQuery.post/

于 2012-05-02T20:19:52.263 回答
0

我还建议您在数据库查询中使用 Codeigniter 的Active Record 语法。它不仅使编写 INSERT 和 UPDATE 查询变得更加容易,而且还可以转义和清理您的输入以保护您免受 SQL 注入。

于 2012-05-02T22:13:08.237 回答
0

您正在寻找 jQuery 的卸载事件。

于 2012-05-02T20:18:36.970 回答