Comment exécuter un script php après la fermeture d'une page web?
Bonjour,
tu peux faire un enregistrement a chaque connection dans une table qui memorise la date et lheure de l'utilisateur avec son ip ou son id d'utilisateur,
ensuite quand la page ou le chat est chargé tu affiche le nombre d'utilisateur ou les personnes connecté depuis moins de tant de temps.
la page qui calcul tout ca se charge deffacer les utilisateur deconnecté depuis trop longtemps.
une page : connected.php
<?php
// Connexion à MySQL
require('connexion.php');
// -------
// ÉTAPE 1 : on vérifie si l'IP se trouve déjà dans la table.
// Pour faire ça, on n'a qu'à compter le nombre d'entrées dont le champ "ip" est l'adresse IP du visiteur.
$retour = /*$bdd->query*/mysql_query('SELECT COUNT(*) AS nbre_entrees FROM albumsconnected WHERE ip=\'' . $_SERVER'REMOTE_ADDR'] . '\'');
$donnees = mysql_fetch_array($retour);
//$donnees = $reponse->fetch();
if ($donnees'nbre_entrees'] == 0) // L'IP ne se trouve pas dans la table, on va l'ajouter.
{
mysql_query('INSERT INTO albumsconnected VALUES(\'' . $_SERVER'REMOTE_ADDR'] . '\', ' . time() . ')');
}
else // L'IP se trouve déjà dans la table, on met juste à jour le timestamp.
{
mysql_query('UPDATE albumsconnected SET timestamp=' . time() . ' WHERE ip=\'' . $_SERVER'REMOTE_ADDR'] . '\'');
}
// -------
// ÉTAPE 2 : on supprime toutes les entrées dont le timestamp est plus vieux que 5 minutes.
// On stocke dans une variable le timestamp qu'il était il y a 5 minutes :
$timestamp_5min = time() - (60 * 5); // 60 * 5 = nombre de secondes écoulées en 5 minutes
mysql_query('DELETE FROM albumsconnected WHERE timestamp < ' . $timestamp_5min);
// -------
// ÉTAPE 3 : on compte le nombre d'IP stockées dans la table. C'est le nombre de visiteurs connectés.
$retour = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM albumsconnected');
$donnees = mysql_fetch_array($retour);
?>
ton code a placer ou tu veux :
<?php
include ('connected.php');
echo '<p>' . $donnees'nbre_entrees'] . ' visiteur(s) connecté(s)</p>';
?>
la page connexion.php contient tes parametres de connexion.
J'espere t'avoir aidé
Tu ne peux pas, il faudrait bloquer la fermeture du site en Javascript (mais très chiant pour l'utilisateurs)
En ajax avec un evenement sur la fermeture de la page ?
Même si comme le précise Grafikart c'est pas opti pour les utilisateurs
J'ai essayé les évènements onbeforeunload et onunload mais a chaque fois que j'actualise la page, une boite dialogue me demande si je veux quitter le site.
Sinon est ce qu'on pourait mettre un timer pour chaque requete qui déconnecte l'utilisateur s'il n'envoie aucun données ($_POST)
Oui. En fait, il ya un script en php que je voudrais exécuter quand il ferme la page ou le navigateur. Ce script met à jour un champs dans une base de données.
Il met a jour l'état de la session. Quand un utilisateur parvient à se connecter l'état de la session est initialisé à 1. Et quand il se déconnecte ou quitte le navigateur sans se déconnecter l'état de la sesssion est réinitialisé à 0.
la session est détruite automatiquement quand la page est fermé il me semble.
Ce qu'il te faudrait je pense c'est ajouter à ton système d'identification une gestion par cookies
On ne peut pas contourner le problème faut que tu trouver un autre système pour ce que tu cherche à faire.
Est-il possible de mettre un timer sur une requete MySQL? Si oui, comment? Exemple exécuter une requete après x secondes.