1. Ce site utilise des cookies. En continuant à utiliser ce site, vous acceptez l'utilisation des cookies. En savoir plus.

Vote avec un pseudonyme

Discussion dans 'Vos demande de Code/Script pour CraftMyWebsite' créé par Mario359, 14 Février 2016.

MineStrator, Votre hébergeur de serveur minecraft
Tags:
  1. Mario359

    Mario359 ✬ Maréchal ✬

    1 021
    144
    63
    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 :
    [​IMG]
    Ç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
     
    Dernière édition: 21 Février 2016
  2. AngryKiller

    AngryKiller ✬ Maréchal ✬

    1 037
    159
    63
    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 :)
     
  3. Mario359

    Mario359 ✬ Maréchal ✬

    1 021
    144
    63
    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
     
  4. Mario359

    Mario359 ✬ Maréchal ✬

    1 021
    144
    63
  5. Mario359

    Mario359 ✬ Maréchal ✬

    1 021
    144
    63
  6. Elmoren

    Elmoren Sergent-chef

    290
    52
    28
    Je vais voir pour te le faire ce soir ^^
     
  7. Elmoren

    Elmoren Sergent-chef

    290
    52
    28
    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
    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
    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">&times;</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">&times;</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">&times;</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 :)
     
    • Gagnant ! Gagnant ! x 1
  8. Mario359

    Mario359 ✬ Maréchal ✬

    1 021
    144
    63
    Ca ne marche pas, il met que le joueur n'est pas connecté
     
  9. Elmoren

    Elmoren Sergent-chef

    290
    52
    28
    Comment ça il n'est pas connecté ? J'ai retiré le système qui vérifie si il est co ou pas ^^
    Merci de vous Connecter/S'inscrire pour voir les liens.
    J'ai crée un livehost pour test ^^
     
    • J'aime J'aime x 1
    • Gagnant ! Gagnant ! x 1
  10. Mario359

    Mario359 ✬ Maréchal ✬

    1 021
    144
    63
    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à ?
     
  11. Florentlife

    Florentlife Administrateur Forum CMW Staff Administrateur Forum Développeur officiel de CraftMyWebsite

    2 594
    376
    83
    Faudras que j'essaie de te le faire ;) mais je promet rien ;) J'ai une petite idée ... :D
     
  12. Elmoren

    Elmoren Sergent-chef

    290
    52
    28
    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
     
  13. Florentlife

    Florentlife Administrateur Forum CMW Staff Administrateur Forum Développeur officiel de CraftMyWebsite

    2 594
    376
    83
    Pour utiliser ça faut d'abord faire un session_start() non ?

    Et je vois pas le session_start(), a part s'il est ailleurs
     
  14. Elmoren

    Elmoren Sergent-chef

    290
    52
    28
    non y'en a pas besoin et dans l'index.php du site y'a un session_start(); de toute manière
     
  15. Mario359

    Mario359 ✬ Maréchal ✬

    1 021
    144
    63
    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
     
    Dernière édition: 11 Mars 2016
  16. kumakuma215

    kumakuma215 ✬ Maréchal ✬

    1 641
    238
    83
    Pour régler le problème d'IP, tu fais une reconnaissance par Navigateur, comme Merci de vous Connecter/S'inscrire pour voir les liens.
     

Partager cette page

Chargement...