Bonjour ! J’aimerai avoir un script qui permet de voter pour le serveur en entrant son psedonyme dans une case et en cliquant sur le bouton ! Comme ceci : Ça a l'air simple comme ça mais je crois qu'il faut refaire toute la partie "vote" du coup, avec détection d'IP pour ne pas qu'une personne vote avec plusieurs pseudonyme différents
Le problème de l'IP c'est que si t'as deux personnes qui habitent ensemble et qui veulent voter seulement une seule personne le pourra Avec les comptes on a pas ce problème
Si, si 2 personne qui habite au même endroit veulent voter, ça ne marche pas non plus pour le site de vote vu qu'ils ont le même IP Par contre tous les 2 reçcoivent une récompense alors qu'un seul a voté réellement
Je l'ai fait et je suis parti du principe qu'un mec n'as qu'un pseudo donc tiens voici comment j'ai changé les fichiers : controleur/voter.php Spoiler PHP: <?php$id = $_POST['site'];include('controleur/topVoteurs.php');if(!ExistPost($id, $liensVotes)) header('Location: ?&page=voter&erreur=3'); if(isset($_POST['pseudo']) & $_POST['pseudo'] != null){for($i = 0; $i < count($lecture['Json']); $i++){ $jsonCon[$i]->SetConnectionBase($bddConnection);}if(!ExisteJoueur($_POST['pseudo'], $id, $bddConnection)) CreerJoueur($_POST['pseudo'], $id, $bddConnection);$donnees = RecupJoueur($_POST['pseudo'], $id, $bddConnection);$succes = false; if(!Vote($_POST['pseudo'], $id, $bddConnection, $donnees, $liensVotes[$id]['temps'])) { header('Location: ?&page=voter&erreur=1&time=' .GetTempsRestant($donnees['date_dernier'], $liensVotes[$id]['temps'], $donnees)); } else { $lectureVotes = new Lire('modele/config/configVotes.yml'); $lectureVotes = $lectureVotes->GetTableau(); $message = str_replace('{JOUEUR}', $_POST['pseudo'], str_replace('{QUANTITE}', $lectureVotes['quantite'], str_replace('{ID}', $lectureVotes['id'], $lectureVotes['message']))); if($lectureVotes['methode'] == 2) { $jsonCon[$liensVotes[$id]['serveur']]->SendBroadcast($message); $jsonCon[$liensVotes[$id]['serveur']]->GivePlayerItem($lectureVotes['id'] . ' ' .$lectureVotes['quantite']); } else for($j =0; $j < count($jsonCon); $j++) { $jsonCon[$j]->SendBroadcast($message); $jsonCon[$j]->GivePlayerItem($lectureVotes['id'] . ' ' .$lectureVotes['quantite']); } $succes = true; }if($succes == true){ header('Location: ?page=voter&success=true');}}else{ header('Location: ?&page=voter&erreur=2');} function ExistPost($id, $votesLiens) { if(isset($votesLiens[$id])) return true; else return false; } function RecupJoueur($pseudo, $id, $bddConnection) { $line = $bddConnection->prepare('SELECT * FROM cmw_votes WHERE pseudo = :pseudo AND site = :site'); $line->execute(array( 'pseudo' => $pseudo, 'site' => $id )); $donnees = $line->fetch(); return $donnees; } function Vote($pseudo, $id, $bddConnection, $donnees, $temps) { if($donnees['date_dernier'] + $temps < time()) { $req = $bddConnection->prepare('UPDATE cmw_votes SET nbre_votes = nbre_votes + 1, date_dernier = :tmp WHERE pseudo = :pseudo AND site = :site'); $req->execute(array( 'tmp' => time(), 'pseudo' => $pseudo, 'site' => $id )); return true; } else return false; } function ExisteJoueur($pseudo, $id, $bddConnection) { $line = $bddConnection->prepare('SELECT * FROM cmw_votes WHERE pseudo = :pseudo AND site = :site'); $line->execute(array( 'pseudo' => $pseudo, 'site' => $id )); $donnees = $line->fetch(); if(empty($donnees['pseudo'])) return false; else return true; } function CreerJoueur($pseudo, $id, $bddConnection) { $req = $bddConnection->prepare('INSERT INTO cmw_votes(pseudo, site) VALUES(:pseudo, :site)'); $req->execute(array( 'pseudo' => $pseudo, 'site' => $id )); } function GetTempsRestant($temps, $tempsTotal, $donnees) { $tempsEcoule = time() - $temps; $tempsRestant = $tempsTotal - $tempsEcoule; $tempsH = 0; $tempsM = 0; while($tempsRestant >= 3600) { $tempsH = $tempsH + 1; $tempsRestant = $tempsRestant - 3600; } while($tempsRestant >= 60) { $tempsM = $tempsM + 1; $tempsRestant = $tempsRestant - 60; } return $tempsH. ':' .$tempsM; }?> theme/default/pages/voter.php Spoiler PHP: <div class="container" style="background-color: white;margin-top: -20px;margin-bottom: -20px;border-left: 4px solid #e74c3c;border-right: 4px solid #e74c3c;"><h1 class="titre"><center>Voter</center></h1> <?php if(isset($_GET['erreur'])) { if($_GET['erreur'] == 1) { ?><div class="alert alert-danger">Vous devez encore attendre <?php echo $_GET['time']; ?> avant de pouvoir voter sur ce site !<a class="close" data-dismiss="alert" href="#" aria-hidden="true">×</a><script>$(".alert").alert()</script></div><?php } if($_GET['erreur'] == 2) { ?><div class="alert alert-danger">Vous devez vous connecter si vous voulez gagner une récompense...<a class="close" data-dismiss="alert" href="#" aria-hidden="true">×</a><script>$(".alert").alert()</script></div><?php } } elseif(isset($_GET['success'])) { ?><div class="alert alert-success">Votre récompense arrive, si vous n'avez pas vu de fenêtre s'ouvrir pour voter, la fenêtre à dû s'ouvrir derrière votre navigateur, validez le vote et profitez de votre récompense In-Game !<a class="close" data-dismiss="alert" href="#" aria-hidden="true">×</a><script>$(".alert").alert()</script></div><?php } ?> <div class="panel panel-primary"> <div class="panel-heading"> <h3 class="panel-title"><h4 style="color: white;"><center><?php echo $_Serveur_['General']['name']; ?> à besoin de vous !</center></h4></h3> </div> <form action="?&action=voter" method="post"> <div class="panel-body"> <p><center><strong> Voter pour le serveur permet d'améliorer son référencement ! Les votes sont récompensés par des items In-Game.<br /><br /> Votre pseudo : <input type="text" name="pseudo" required></input> </strong></center></p> </div></div> <h3 class="header-bloc">Voter pour votre serveur :</h3> <div class="corp-bloc"> <ul class="nav nav-tabs"> <?php if(!isset($jsonCon) OR empty($jsonCon)) echo '<p>Veuillez relier votre serveur à votre site à votre serveur avec JsonAPI depuis le panel pour avoir les liens de votes !</p>'; for($i = 0; $i < count($jsonCon); $i++) { ?> <li <?php if($i == 0) echo 'class="active"'; ?>><a href="#voter<?php echo $i; ?>" data-toggle="tab"><?php echo $lecture['Json'][$i]['nom']; ?></a></li> <?php } ?> </ul> <div class="tab-content"> <?php for($i = 0; $i < count($jsonCon); $i++) { ?> <div class="tab-pane<?php if($i == 0) echo ' active'; ?>" id="voter<?php echo $i; ?>"> <?php $k = 0; for($j = 0; $j < count($liensVotes); $j++) { if($i == $liensVotes[$j]['serveur']) {?> <button type="submit" class="btn btn-primary bouton-vote" name="site" value="<?php echo $j; ?>"> <a style="color:white;" onclick="window.open('<?php echo $liensVotes[$j]['lien']; ?>','Fiche','toolbar=no,status=no,width=1350 ,height=900,scrollbars=yes,location=no,resize=yes,menubar=yes')"> <?php echo $liensVotes[$j]['titre']; ?> </a> </button> <?php } else{ $k++; } } if($k == $j) echo '</br><p>Aucun lien de vote n\'est disponible pour ce serveur...</p>'; ?> </div> <?php } ?> </div> </form> </div> <div class="footer-bloc"> </div> <h3 class="header-bloc">Top voteurs</h3> <div class="corp-bloc"> <table class="table table-hover"> <thead> <tr><th>#</th><th>Pseudo</th><th>Votes</th></tr> </thead> <?php for($i = 0; $i < count($topVoteurs) AND $i < 10; $i++) { ?> <tr><td><?php echo $i ?></td><td><img src="http://api.craftmywebsite.fr/skin/face.php?u=<?php echo $topVoteurs[$i]['pseudo']; ?>&s=30&v=front" alt="none" /> <strong><?php echo $topVoteurs[$i]['pseudo']; ?></strong></td><td><?php echo $topVoteurs[$i]['nbre_votes']; ?></td></tr> <?php }?> </table> </div></div> Tu me diras si ça marche
Comment ça il n'est pas connecté ? J'ai retiré le système qui vérifie si il est co ou pas ^^ Please Login/Register to view links J'ai crée un livehost pour test ^^
Ouais ... Ça doit être mon thème qui était bugué J'utilise le code en tout cas, merci ! Après, si quelqu'un arrive à faire une détection d'IP merci à lui J'ai fait combien de demande déjà ?
C'est pas dur : Dans la BDD celle des votes tu rajoute une colonne pour l'IP, tu met : PHP: <?php$id = $_POST['site'];include('controleur/topVoteurs.php');if(!ExistPost($id, $liensVotes)) header('Location: ?&page=voter&erreur=3');if(isset($_POST['pseudo']) & $_POST['pseudo'] != null){for($i = 0; $i < count($lecture['Json']); $i++){ $jsonCon[$i]->SetConnectionBase($bddConnection);}if(!ExisteJoueur($_POST['pseudo'], $id, $bddConnection)) CreerJoueur($_POST['pseudo'], $id, $bddConnection);$donnees = RecupJoueur($_POST['pseudo'], $id, $bddConnection);$succes = false; if(!Vote($_POST['pseudo'], $id, $bddConnection, $donnees, $liensVotes[$id]['temps'])) { header('Location: ?&page=voter&erreur=1&time=' .GetTempsRestant($donnees['date_dernier'], $liensVotes[$id]['temps'], $donnees)); } else { $lectureVotes = new Lire('modele/config/configVotes.yml'); $lectureVotes = $lectureVotes->GetTableau(); $message = str_replace('{JOUEUR}', $_POST['pseudo'], str_replace('{QUANTITE}', $lectureVotes['quantite'], str_replace('{ID}', $lectureVotes['id'], $lectureVotes['message']))); if($lectureVotes['methode'] == 2) { $jsonCon[$liensVotes[$id]['serveur']]->SendBroadcast($message); $jsonCon[$liensVotes[$id]['serveur']]->GivePlayerItem($lectureVotes['id'] . ' ' .$lectureVotes['quantite']); } else for($j =0; $j < count($jsonCon); $j++) { $jsonCon[$j]->SendBroadcast($message); $jsonCon[$j]->GivePlayerItem($lectureVotes['id'] . ' ' .$lectureVotes['quantite']); } $succes = true; }if($succes == true){ header('Location: ?page=voter&success=true');}}else{ header('Location: ?&page=voter&erreur=2');} function ExistPost($id, $votesLiens) { if(isset($votesLiens[$id])) return true; else return false; } function RecupJoueur($pseudo, $id, $bddConnection) { $line = $bddConnection->prepare('SELECT * FROM cmw_votes WHERE pseudo = :pseudo AND site = :site'); $line->execute(array( 'pseudo' => $pseudo, 'site' => $id )); $donnees = $line->fetch(); return $donnees; } function Vote($pseudo, $id, $bddConnection, $donnees, $temps) { if($donnees['date_dernier'] + $temps < time()) { $req = $bddConnection->prepare('UPDATE cmw_votes SET nbre_votes = nbre_votes + 1, date_dernier = :tmp WHERE ip = :ip AND site = :site'); $req->execute(array( 'tmp' => time(), 'ip' => $_SERVER["REMOTE_ADDR"], 'site' => $id )); return true; } else return false; } function ExisteJoueur($pseudo, $id, $bddConnection) { $line = $bddConnection->prepare('SELECT * FROM cmw_votes WHERE pseudo = :pseudo AND site = :site'); $line->execute(array( 'pseudo' => $pseudo, 'site' => $id )); $donnees = $line->fetch(); if(empty($donnees['pseudo'])) return false; else return true; } function CreerJoueur($pseudo, $id, $bddConnection) { $req = $bddConnection->prepare('INSERT INTO cmw_votes(pseudo, site,ip) VALUES(:pseudo, :site)'); $req->execute(array( 'pseudo' => $pseudo, 'site' => $id, 'ip' => $_SERVER["REMOTE_ADDR"] )); } function GetTempsRestant($temps, $tempsTotal, $donnees) { $tempsEcoule = time() - $temps; $tempsRestant = $tempsTotal - $tempsEcoule; $tempsH = 0; $tempsM = 0; while($tempsRestant >= 3600) { $tempsH = $tempsH + 1; $tempsRestant = $tempsRestant - 3600; } while($tempsRestant >= 60) { $tempsM = $tempsM + 1; $tempsRestant = $tempsRestant - 60; } return $tempsH. ':' .$tempsM; }?> Si je me suis pas trompé tu devrais vérifier le temps et tout par rapport à l'IP et non plus le pseudo
Pour utiliser ça faut d'abord faire un session_start() non ? Et je vois pas le session_start(), a part s'il est ailleurs
J'ai plusieurs erreurs : 1) On peut voter plusieurs fois avant la fin du temps imparti 2) Sur la console : Code: [Votes] Merci à Mario359 qui gagne 2 diamants et 1 gâteau pour son vote ! http://Petitcraft.raidghost.com [Server thread/INFO]: CONSOLE issued server command: /give Diamond 2 [Server thread/INFO]: Erreur : Le joueur est introuvable. Il n'y a pas de joueur après le "/give " 3) Le pseudonyme n'apparait pas dans le classement
Pour régler le problème d'IP, tu fais une reconnaissance par Navigateur, comme Please Login/Register to view links