https://www.frxoops.org/modules/newbb/ ... id=167783#forumpost167783Une remarque de Ghia dans ce post, m'a rappelé un script que j'avais fait il y a quelques temps pour m'affranchir de ce souci.
Ce que je vais décrire ci-dessous, se passe sur un site avec xoops 2.0.18.2.
Lorsqu'en tant que webmaster, vous déplacez un membre dans un groupe à accès restreint (banni par exemple), ce dernier conserve tous ses droits tant qu'il ne se déconnecte pas, ou que vous le déconnectez pas (en vidant la table session par exemple).
Mais c'était un peu sauvage de déconnecter tout le monde juste pour virer une personne !
J'ai donc préparé une page avec quelques lignes de code, dans laquelle, on indique simplement l'uid du membre à déconnecter et on valide.
Ainsi, lorsque j'ai viré le membre, je le déconnecte dans la foulée, et je suis tranquille.
Je joins 2 captures : une contenant la page de saisie de l'uid du membre à déconnecter.
Et l'autre la page de résultat après la validation de déconnexion (le pseudo du membre est cliquable, et on accès à son profil).
Je retrouve aussi un récap' des membres se trouvant dans le groupe des bannis.
Et ci-dessous, le script utilisé.
J'appelle ma page :
bannis.php, et je la pose dans un dossier
bannis à la racine du site.
Par défaut, on doit être connecté en tant qu'administrateur du site pour y accéder.
Mais on peut changer le groupe ayant le droit d'accéder à cette page.
<?php
include '../mainfile.php';
include XOOPS_ROOT_PATH.'/header.php';
include XOOPS_ROOT_PATH."/include/cp_functions.php";
global $xoopsDB, $xoopsConfig;
if (is_object($xoopsUser)){
$groupsok = $xoopsUser->getGroups();
}
else {$groupsok=99; }
if (!in_array("1", $groupsok)) //si n'est pas dans le groupe "webmastre" - vous pouvez indiquer un autre id de groupe
{
redirect_header("../index.php",2, "Vous n'avez pas les droits nécessaires pour accéder à cette page.");
exit();
}
//affiche le nombre de membres dans le groupe des bannis
$sqlbannis = "select distinct uid from `".$xoopsDB->prefix("groups_users_link")."` where `groupid` = 4;"; //changer l'id du groupe contenant les membres bannis
$resultbannis = $xoopsDB->query($sqlbannis);
echo "Actuellement : ".mysql_num_rows($resultbannis)." membres dans le groupe des Bannis<br /><br />";
//fin affichage du nombre de membres dans le groupe des bannis
if (!empty($_POST['envoi']))
{
$uid = intval($_POST['uid']);
if ($uid != 0)
{
$sql = "select * from `".$xoopsDB->prefix("session")."` where `sess_data` LIKE CONVERT( _utf8 '%:"".$uid.""%' USING latin1 ) COLLATE latin1_swedish_ci;";
$result = $xoopsDB->query($sql);
if (mysql_num_rows($result) == 0) {$message_remerciement = "Ce membre n'était pas connecté.";}
else {$message_remerciement = "";}
while($data = mysql_fetch_assoc($result))
{
$message_remerciement .= $data['sess_ip'].'<br />';
$sqldelete = "delete from `".$xoopsDB->prefix("session")."` where CONVERT(`".$xoopsDB->prefix("session")."`.`sess_id` USING utf8) = '".$data['sess_id']."';";
$resultdelete = $xoopsDB->query($sqldelete);
}//fin while
if (mysql_num_rows($result) == 0) {$message_remerciement .= "";}
else {
$postername = XoopsUser::getUnameFromId($uid);
$message_remerciement .= "<br />IP ci-dessus supprimée(s) de la base, et le membre correspondant à l'identifiant ".$uid." <b>(<a href="".XOOPS_URL."/userinfo.php?uid=".$uid."" target="_blank">".$postername."</a>)</b> a été déconnecté.";}
}//fin si
else {$message_remerciement = "Vous devez entrer un identifiant numérique pour désigner le membre à déconnecter.";}
}
?>
<html>
<head>
<title>Déconnexion d'un membre</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="JavaScript">
function verifSelection() {if (mail_form.uid.value == "") {
alert("Merci de rentrer l'identifiant numérique du membre à déconnecter")
return false
} } // Fin de la fonction
</script>
</head>
<body>
<u><a href="./bannis.php">Déconnecter un autre membre</a></u> <u><a href="../index.php">Retour sur le site</a></u><br /><br />
<form name="mail_form" method="post" action="<?=$PHP_SELF?>" onSubmit="return verifSelection()">
<?php
if ($message_remerciement) {
echo("<font face=Verdana size=2>");
echo(stripslashes($message_remerciement));
include XOOPS_ROOT_PATH.'/footer.php';
echo("</p></body></html>");
exit();
}
?>
<table border="0" align="left">
<tr>
<td>
<font face="Verdana" size="2">Identifiant numérique </font><input name="uid" type="text">
<input name="titre_uid" type="hidden" value="Identifiant">
<input type="reset" name="Reset" value="Vider la cellule">
<input type="submit" name="envoi" value="Envoyer">
</td>
</tr>
</table>
</form>
<?php
include XOOPS_ROOT_PATH.'/footer.php';
?>
</body>
</html>