Requête SQL à exécuter dans phpmyadmin pour ajouter le champ Online :
ALTER TABLE users ADD online Varchar(15) NULL
Ouvrez header.php
Cherchez :
// START SUBST - <pun_main>
ob_start();
Ajoutez avant :
if ($_SERVER['HTTP_REFERER'] != '' && !$pun_user['is_guest'])
{
if (basename($_SERVER['HTTP_REFERER']) == 'login.php') :
{
$db->query('UPDATE '.$db->prefix.'users SET online=\''.get_remote_address().'\' WHERE id='.$pun_user['id']) or error('Unable to update user online', __FILE__, __LINE__, $db->error());
}
elseif ($pun_user['online'] != get_remote_address()) :
{
pun_setcookie(1, md5(uniqid(rand(), true)), time() + 31536000);
redirect('index.php', $lang_login['Logout redirect']);
}
endif;
}
Explication de ce code :
Quand l'utilisateur se connecte, son adresse ip est envoyée dans son profil dans users de la bdd.
L'utilisateur utilise son compte normalement.
Si une personne se connecte avec le même pseudo, l'adresse ip est envoyée dans son profil dans users de la bdd.
Cette ip ne correspond plus à l'ip du 1er utilisateur connecté, alors on le déconnectera quand il ouvrira une page quelconque sur le forum.
Le dernier utilisateur connecté utilise le compte normalement, sans savoir qu'il vient de déconnecter quelqu'un.
Si le premier utilisateur veut continuer à utiliser son compte, il devra se reconnecter mais déconnectera la personne qui utilise son compte (si son ip est différente bien entendu).