start ajax query bij sluiten browser geeft 'error'
Ik heb een projectmanagement systeem ontwikkeld, echter krijg ik het niet voor elkaar om bepaalde gegevens in de database te veranderen op het moment dat iemand de browser sluit. Het locked.php wordt wel aangeroepen, echter geeft hij de $_GET in het rood weer (dit zie ik in mijn FireFox door gebruik van FireBug) en voert de Update query dus niet uit :S (zie screenshot)

Ik gebruik onderstaande javascript/jquery op me index.php in <head>
in locked.php staat het volgende:

Ik gebruik onderstaande javascript/jquery op me index.php in <head>
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<script type="text/javascript">
window.onbeforeunload = function(){ myUnloadEvent(); }
function myUnloadEvent() {
$.ajax({ url: "./includes/locked.php?unload=1"});
}
</script>
window.onbeforeunload = function(){ myUnloadEvent(); }
function myUnloadEvent() {
$.ajax({ url: "./includes/locked.php?unload=1"});
}
</script>
in locked.php staat het volgende:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
//enable sessions PHP
ini_set('session.save_path', '/tmp');
ini_set('session.auto_start', '1');
session_start();
if(!isset($_SESSION['username']) || !isset($_SESSION['admin'])){
header("Location: login.php");
die();
}
include_once 'functions.php';
include_once 'connectdb.php';
$loggedin = str_replace('@*****.nl','',$_SESSION["username"]);
if(isset($_REQUEST["unload"])){
$queryunlock = "UPDATE levering_projects SET locked = '0', lockedby = '' WHERE lockedby = '$loggedin' and locked = '1'";
mysql_query($queryunlock) or die('Error, update query failed: '.$queryunlock.' - ' . mysql_error());
echo "Lock verwijderd";
}
?>
//enable sessions PHP
ini_set('session.save_path', '/tmp');
ini_set('session.auto_start', '1');
session_start();
if(!isset($_SESSION['username']) || !isset($_SESSION['admin'])){
header("Location: login.php");
die();
}
include_once 'functions.php';
include_once 'connectdb.php';
$loggedin = str_replace('@*****.nl','',$_SESSION["username"]);
if(isset($_REQUEST["unload"])){
$queryunlock = "UPDATE levering_projects SET locked = '0', lockedby = '' WHERE lockedby = '$loggedin' and locked = '1'";
mysql_query($queryunlock) or die('Error, update query failed: '.$queryunlock.' - ' . mysql_error());
echo "Lock verwijderd";
}
?>
En wat zie je onder 'headers' in firebug?
Wouter J op 24/09/2012 10:24:40:
En wat zie je onder 'headers' in firebug?
Accept */*
Accept-Encoding gzip, deflate
Accept-Language nl,en-us;q=0.7,en;q=0.3
Connection keep-alive
Cookie __utma=61752703.1110796363.1343805088.1347890302.1348066605.11; __utmz=61752703.1343805088.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); PHPSESSID=fpik9itgr38h3l2eopvmglj8h3
Host levering.****.nl
Referer http://levering.****.nl/index.php
User-Agent Mozilla/5.0 (Windows NT 6.1; rv:15.0) Gecko/20100101 Firefox/15.0.1 FirePHP/0.7.1
X-Requested-With XMLHttpRequest
x-insight activate
onbeforeunload en de meeste alternatieven zijn onbetrouwbaar. Dit zal vaker niet werken dan wel. Het zal ook altijd anders reageren in andere browsers.
Als ik jou was, zou ik dit niet proberen te maken.
Zou je het op een andere manier kunnen doen?
bv. om de zoveel minuten met ajax een teken van leven geven (automatisch uiteraard); wie langer dan die tijd niets stuurt wordt beschouwd als 'browser gesloten'?
Of zoiets?
Als ik jou was, zou ik dit niet proberen te maken.
Zou je het op een andere manier kunnen doen?
bv. om de zoveel minuten met ajax een teken van leven geven (automatisch uiteraard); wie langer dan die tijd niets stuurt wordt beschouwd als 'browser gesloten'?
Of zoiets?
@Kris,
Dat vermoeden had ik al... Het zou inderdaad ook kunnen met een timestamp vergelijking, misschien is dat dan de beste optie. Dan doe ik dat wel met een cron of een javascript die draait onder de ingelogde gebruikers...
Thanks
Dat vermoeden had ik al... Het zou inderdaad ook kunnen met een timestamp vergelijking, misschien is dat dan de beste optie. Dan doe ik dat wel met een cron of een javascript die draait onder de ingelogde gebruikers...
Thanks




