Aller au contenu
Top-Metin2.org - Vous êtes à la recherche d'un serveur Metin 2 ? ×
×
×
  • Créer...
  • 0

Bannir php


PaJa41

Question

[Message d'introduction]Version des files :Domaine (Base de données, Core, etc.) :Votre niveau (débutant, intermédiaire, avancé) : debutantDescription du problème :Comment reproduire le problème :Recherches et tests effectué :Résultat des recherches et tests :Message d'erreur, capture d'écran :En postant ma demande d'aide, j'affirme avoir lu et accepté le règlement des demandes d'aides.Bonsoir à tous. Ayant rencontrer des soucis avec certain de mes joueurs, je voudrait en ban. Seulement je peut en ban que avec l'ip. J'aimerait pouvoir ajouter une methode de ban par compte est-ce possible? j'ai essayer plein de chose sans vraiment de succée. Ma page pour bannir par ip est la suivante :

            Bannir une Ip                                                    
                        IP :                                                                     <?phpif (isset($_POST['bannir'])) {    $ip = $_POST['ip'];    $sql = "SELECT ip FROM player WHERe ip='$ip'";    $sql_fetch = bdd('player')->query($sql);    if ($ex = $sql_fetch->fetch()) {        $sql_play = "SELECT account_id FROM player WHERE ip='$ip'";        $play_fetch = bdd('player')->query($sql_play);        while ($pl = $play_fetch->fetch()) {            $idd_acc = $pl['account_id'];            $Sel = bdd('account')->query("SELECT login FROM account WHERE id='$idd_acc'")->fetch();                        $sql_upd = "UPDATE account SET status='BLOCK' WHERE id='$idd_acc'";            $upd_exe = bdd('account')->query($sql_upd);            if ($upd_exe->execute()) { ?>                                            Le compte : <?php echo $Sel['login']?> est desormais bannis.                            <?php    } else { ?>                                            Un erreur est survenue.                             <?php    }        }        $filename = "../.htaccess";        $fichier=fopen($filename, 'a+');         fwrite($fichier,"\nDeny from ".$ip."");        fclose ($fichier);    } else { ?>                                    Aucune adresse Ip ne correspond.                     <?php   }    }?>

un petit coup de main ne serait pas de refus

Lien vers le commentaire
Partager sur d’autres sites

  • Réponses 19
  • Créé
  • Dernière réponse

Meilleurs contributeurs dans cette question

Meilleurs contributeurs dans cette question

19 réponses à cette question

Messages recommandés

  • 0

ban.php

<?php if($securite!='JEREMaimelaquequete!numero:0687541251'){ exit();}?><?php$log=$_SESSION['login23_syg']; if ($log!="") { ?>

 

Bann ou Debann d'un compte

Nom du joueur
   
   
Bannir ou Debannir BannirDebannir

 

 

Bannir / Debannir TOUS les comptes d'un joueur

Nom du joueur:
   
Bannir ou Debannir BannirDebannir

 

<?php } else { ?> <?php }?>
plop_ban_envoie.php
<?php if($securite!='JEREMaimelaquequete!numero:0687541251'){ exit();}?><?php$log=$_SESSION['login23_syg'];if ($log!="") { $type=strip_tags($_GET['type']); $status=strip_tags($_POST['ban']); $ip=strip_tags($_POST['joueur_ip']); // pseudo_ip: on recup l'ip de ce joueur donc tous les comptes de cette IP $joueur=strip_tags($_POST['joueur_id']); // pseudo_id: on recup le compte du pseudo du joueur saisie $getallipbynam=mysql_query("SELECT * FROM player.player WHERE player.player.name='$joueur'"); //1 Get l'ip du pseudo du joueur saisi $getallipbyname=mysql_fetch_array($getallipbynam); $comptejoueur=$getallipbyname['account_id']; $ipjoueur=$getallipbyname['ip']; $query3=$comptejoueur; if($status=='BLOCK'){ if($type=='player'){ mysql_query("UPDATE account.account SET account.account.status='$status' WHERE account.account.id='$comptejoueur'"); echo "
Compte id($query3) Bloqué."; } elseif($type=='all'){ $getallipbynam=mysql_query("SELECT * FROM player.player WHERE player.player.name='$joueur'"); $getallipbyname=mysql_fetch_array($getallipbynam); $comptejoueur=$getallipbyname['account_id']; $ipjoueur=$getallipbyname['ip']; $RASLECUL=mysql_query("SELECT * FROM player.player WHERE player.player.ip='$ipjoueur'"); while($data=mysql_fetch_assoc($RASLECUL)){ $compteid=$data['account_id']; mysql_query("UPDATE account.account SET account.account.status='$status' WHERE account.account.id='$comptejoueur'"); echo "
$comptejoueur Banni.

"; } } } elseif($status=='OK'){ if($type=='player'){ mysql_query("UPDATE account.account SET account.account.status='$status' WHERE account.account.id='$comptejoueur'"); echo "

Compte id($comptejoueur) Débloqué."; } elseif($type=='all'){ $getallipbynam=mysql_query("SELECT * FROM player.player WHERE player.player.name='$joueur'"); $getallipbyname=mysql_fetch_array($getallipbynam); $comptejoueur=$getallipbyname['account_id']; $ipjoueur=$getallipbyname['ip']; $RASLECUL=mysql_query("SELECT * FROM player.player WHERE player.player.ip='$ipjoueur'"); while($data=mysql_fetch_assoc($RASLECUL)){ $compteid=$data['account_id']; mysql_query("UPDATE account.account SET account.account.status='$status' WHERE account.account.id='$comptejoueur'"); echo "
$comptejoueur Débanni.

"; }}}}echo "

";?>
A mettre dans l'index.php :case '27':include ('ban.php');break;case '28':include ('plop_ban_envoie.php');break;

 

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Je vois que snow a répondu.Je t'envoie quand même mon script qui est fonctionnel (testé par moi même). Je l'ai commenté pour que tu comprennes bien chaque étape.

            Bannir une Ip                		<?php		if (isset($_POST['bannir'])) //Si le formulaire a été envoyé		{			if (isset($_POST['ip']) and $_POST['ip'] != "") //Si on a bien renseigné le champs IP			{				$ip_ban = mysql_real_escape_string($_POST['ip']); //On sécurise la variable ip (on sait jamais)								$req1 = mysql_query('SELECT COUNT(*) as nb FROM player.player WHERE ip = "'.$ip_ban.'"');				$dnn1 = mysql_fetch_array($req1);								if	($dnn1['nb'] > 0) //Si l'IP est celle d'un joueur				{					//On selectionne les ids de compte de tous les persos se rapportant à l'IP choisie					$req2 = mysql_query('SELECT account_id FROM player.player WHERE ip = "'.$ip_ban.'"');					while ($dnn2 = mysql_fetch_array($req2))					{						$account_id = $dnn2['account_id'];						//On bloque les comptes						mysql_query('UPDATE account.account SET status = "BLOCK" WHERE id = '.$account_id.'');					}															//On bloque l'IP dans le htaccess							$filename = "../.htaccess";					$fichier=fopen($filename, 'a+'); 					fwrite($fichier,"\nDeny from ".$ip_ban.""); 					fclose ($fichier);									//On informe l'utilisateur que les comptes et l'ip ont été bloqués.					echo 'Les comptes liés à l\'adresse '.$ip_ban.' ont été bloqué avec succès.';				}				else //Si on n'a pas trouvé l'ip dans les personnages				{					echo 'Aucun personnage n\'est relié à cette adresse IP.';				}							}			else //Si le champs IP n'a pas bien été renseigné			{				echo 'Le champs IP doit être rempli correctement.';			}		}		?>       									
						IP : 															    

Si tu constates un problème, hésite pas à me le faire savoir. Une erreur est si vite arrivée...

Lien vers le commentaire
Partager sur d’autres sites

  • 0

je vais tester tout ça merci a vous tous

edit @Takron balise mise

@Kanade malheuresement ton script ne fonctionnera surement pas je vais tout de même tester et te tenir au courant mais j'ai un panel externe au site.

@ProleptylMT2 2.0 Merci de ton descriptif mais serait-il possible d adapter le code pour que au lieux de faire un ban par ip se sois par compte?

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Je ne comprends pas ta demande.

 

Tu souhaiterais rentrer un compte et que ce dernier soit banni ?

 

voila le ban par ip en sois est pas genant, mais j'aimerait aussi pouvoir ban par compte toute en entrant la raison et par qui sans devoir le faire manuellement dans la bdd.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

J'ai la flemme de te l'écrire en code alors je te fais une description de ce qui doit être fait pour faire ce que tu veux.

 

Je te propose déjà de créer dans ta table account 2 nouveaux champs : ban_motif (text) et ban_by (varchar - 25).

 

Comme tu l'as sans doute deviné, ban_motif contiendra le motif et ban_by le pseudo du modérateur.

 

Il te suffit ensuite de créer un formulaire avec le nom de compte et le pseudo de l'admin. Ensuite, une simple requête "UPDATE" suffit (après avoir bien sur vérifié toutes les informations fournies par l'utilisateur). Tu passes le champs status en "BLOCK", le champs ban_modif par le texte entré et ban_by par le pseudo (rentré ou bien le nom de compte du modérateur (attention cependant à la faille de sécurité à laisser un nom de compte accessible aux utilisateurs, GMs en plus)) là où le login est le nom de compte donné au départ.

 

Pour débannir, il te suffit de passer le "BLOCK" en "OK". Les autres informations resteront mais le compte ne sera pas affiché dans le pilory. De plus, la prochaine fois qu'il sera bloqué elles seront supprimées et remplacées automatiquement.

 

Il y a bien sur beaucoup à améliorer : écrire un système de durée (pour bannir par exemple 1 jour, 2 jours et que le compte soit débloqué automatiquement), écrire un système de points d'avertissements (un peu comme sur ce forum avec le %). Si tu as des questions, je serai heureux d'y répondre.

Lien vers le commentaire
Partager sur d’autres sites

Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.


  • brilliantdiscord_widget
  • Flux d'Activité

    1. 2

      Demande d'aide

    2. 2

      Demande d'aide

    3. 2

      Demande d'aide

    4. 161

      VDI - Server Files 2016 - Team FE

    5. 1

      Problème de modification du coffre de l'apprenti

  • En ligne récemment

    • Aucun utilisateur enregistré regarde cette page.

Information importante

Conditions d’utilisation / Politique de confidentialité / Règles / Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.