start ajax query bij sluiten browser geeft 'error'

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marvin H

Marvin H

24/09/2012 10:07:52
Quote Anchor link
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)

Afbeelding

Ik gebruik onderstaande javascript/jquery op me index.php in <head>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<script type="text/javascript">
window.onbeforeunload = function(){ myUnloadEvent(); }
function myUnloadEvent() {
    $.ajax({ url: "./includes/locked.php?unload=1"});
}
</script>


in locked.php staat het volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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";
}

?>
 
PHP hulp

PHP hulp

22/12/2024 09:44:28
 
Wouter J

Wouter J

24/09/2012 10:24:40
Quote Anchor link
En wat zie je onder 'headers' in firebug?
 
Marvin H

Marvin H

24/09/2012 10:26:02
Quote Anchor link
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
 
Kris Peeters

Kris Peeters

24/09/2012 10:34:13
Quote Anchor link
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?
 
Marvin H

Marvin H

24/09/2012 10:36:46
Quote Anchor link
@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
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.