2

まず最初に。PHP/MySQLサイトでCodeIgniterを実行しています。

私は、私が構築しているトレーニングWebサイトで人が見ることができる、一連の映画の「シェル」アプリケーションを作成するという任務を負っています。ここでの考え方は、ユーザーがページにログオンし、[コースを受講]をクリックして、コースの受講時刻をログに記録できるようにすることです。そして、その人が映画を持っているページを出るとき、私はコースが何時に終わったかを記録することができるでしょう。このようにして、開始時間と終了時間を比較し、ユーザーにクレジットを与えるためにユーザーが映画のほとんどを視聴したかどうかを判断できます。さて、最初の部分は簡単です。まず、次のフィールドを使用してデータベースにテーブルを作成しました。

  • 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);

OK ...簡単ですよね?また、完了したら、これを実行するファイルを起動したいことも知っています。

$ip_address = $_SERVER['REMOTE_ADDR'];
$this->db->query("UPDATE pocTime SET dtEnded = now() WHERE strHash = '" . $data['hash'] . "' AND varIpAddress='$ip_address'");

私が望んでいるのは、コードの1番目のブロックによって呼び出されるページを作成し、レンダリングされた場合にコードの2番目のブロックが何らかの「ポストバック」によって実行されるように、いわば「トラップ」を設定することです。ページが閉じています。助言がありますか?これをカバーするような大きな「ビデオを終了するにはここをクリック」タイプのボタンを配置できることは知っていますが、ページからの何らかの形の終了でコードを実行しようとしています。ユーザーはビデオを見た後に行います。何かご意見は?

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/

または、投稿も使用できます

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

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

于 2012-05-02T20:19:52.263 に答える
0

jQueryのアンロードイベントを探しています。

于 2012-05-02T20:18:36.970 に答える
0

また、データベースクエリでCodeigniterのアクティブレコード構文を使用することをお勧めします。INSERTクエリとUPDATEクエリの記述がはるかに簡単になるだけでなく、入力をエスケープしてサニタイズし、SQLインジェクションから保護します。

于 2012-05-02T22:13:08.237 に答える