Configuration API vote

Discussion dans 'Support serveur et plugins' créé par MrBaguette07, 5 Décembre 2018.

  1. MrBaguette07

    MrBaguette07 Cueilleur de roses

    Inscrit:
    22 Février 2018
    Messages:
    12
    J'aime reçus:
    1
    Bonjour,

    Actuellement je suis en train de finaliser mon site de classement de vote.
    Mais je n'ai jamais appris comment créer une api de vote.
    Enfaite j'aimerais faire comme ceci : https://github.com/MineWeb/Plugin-Vote/blob/master/Model/Website.php

    --------------------------------------------------------------------------------------------
    case 'MON-SITE':
    // Check with API
    $result = @file_get_contents("MON-SITE/api/{$website['data']['server_id']}/?ip=$ip");
    if ($result || intval($result) > 0)
    return true;
    break;
    default:
    return true;
    }
    return false;
    --------------------------------------------------------------------------------------------​

    Si je dois allez autre part, ou un forum spécialisé à me conseiller je suis toujours preneur !

    Bonne journée à tous !

    -Pour éviter toute pub je ne publie pas le lien de mon site-
     
  2. DiscowZombie

    DiscowZombie Dev passionné
    Staff Modérateur Support

    Inscrit:
    2 Mars 2017
    Messages:
    2 584
    J'aime reçus:
    859
    Salut,

    je n'ai pas bien compris ce que tu essayes de faire. Tu fais un site de vote et donc tu cherches à faire une API permettant aux serveurs Minecraft d'intégrer ton système de vérification dans leur site ou alors tu souhaites intégrer les sites de votes déjà existant au site de ton serveur ?

    D'ailleurs, on réfléchit généralement à la manière de faire un système technique (de façon théorique) et on évite de se baser sur un code qui ne sera sûrement pas adapté dans notre cas précis.
     
  3. MrBaguette07

    MrBaguette07 Cueilleur de roses

    Inscrit:
    22 Février 2018
    Messages:
    12
    J'aime reçus:
    1
    Je cherche surtout, à faire une API permettant aux serveurs Minecraft d'intégrer le système de vérification dans leur site.
    Mais je n'arrive pas à trouver comment faire, ou même chercher quelqu'un qui pourrait me le faire (payant ou gratuit).
     
  4. DiscowZombie

    DiscowZombie Dev passionné
    Staff Modérateur Support

    Inscrit:
    2 Mars 2017
    Messages:
    2 584
    J'aime reçus:
    859
    Salut,

    je reviens vers toi, désolé pour le délai.

    Du coup, vu que je ne sais pas comment tu as fait ton système de vote, on va partir du principe que tu sauvegardes à un endroit l'IP de l'utilisateur ayant voté et que tu bases ta vérification sur ça.
    La chose la plus simple à faire, autant pour toi côté serveur que pour les personnes qui l'intégreront côté client, c'est de proposer une page retournant un résultat json qui contient les informations utiles.

    Côté serveur :
    Par exemple, imaginons un fichier appelé check.php dans un dossier api. Ton fichier ressemblerait à quelque chose comme ça :
    PHP:
    <?php

    $vote 
    false;

    if (isset(
    $_GET["ip"])) {
        
    $ip $_GET["ip"];
        
    $vote true// Aller chercher dans ton stockage si l'IP a voté ou non
    }

    $jsonData = [
        
    "response" => $vote
    ];

    header('Content-Type: application/json;charset=utf-8');
    echo 
    json_encode($jsonData);
    Côté client :
    Si on se rebase sur mon fichier précédent, il est très simple pour les utilisateurs de l'intégrer. La vérification ressemble à quelque chose comme ça :
    PHP:
    <?php

    $result 
    file_get_contents("http://SITE/api/check.php?ip=127.0.0.1");
    $jsonResult json_decode($result);

    $vote $jsonResult->response ?: 0;
    J'espère que ma réponse éclaire ta lanterne, si tu as encore des questions, n'hésite pas ! ;)
     
    MrBaguette07 apprécie ceci.
  5. MrBaguette07

    MrBaguette07 Cueilleur de roses

    Inscrit:
    22 Février 2018
    Messages:
    12
    J'aime reçus:
    1
    Bonsoir,

    Tout d'abord, merci de votre réponse !

    Cela m'éclaire beaucoup. Enfaite, je pense qu'il faut que je refasse mon système de vote, car non je n'ai pas fais de système qui enregistre l'ip, mais un cookie, du coup le problème qui se r'ajoute c'est qu'ils peuvent voter en "illimité" dès qu'il change de navigateur.

    Si je schématise, voila ce que ça donne :
    [​IMG]
    Du coup il faut repartir du moment ou il clique sur le bouton et le moment ou il reçoit le message ou la redirection vers la page d'accueil.
    Par dessus on r'ajoute votifier mais ça c'est bon.

    Pouvez-vous m'éclaircir sur un tutoriel ou quelque chose dans ce genre pour réaliser l'api ?

    Bonne soirée à vous.
     
  6. DiscowZombie

    DiscowZombie Dev passionné
    Staff Modérateur Support

    Inscrit:
    2 Mars 2017
    Messages:
    2 584
    J'aime reçus:
    859
    Re,

    oui il faut éviter au maximum de stocker ce genre de chose chez le client ; certains n'auraient pas mis longtemps à trouver le "usebug" (même pas besoin de changer de navigateur)

    Côté serveur :
    L'idée, derrière un vote, c'est ça :
    On va sur ton site de vote et on cherche notre serveur favori -> On clique sur le gros bouton "Voter" sur la page du serveur.
    Lorsqu'un joueur clique sur "Voter", c'est là que tu dois faire ta logique :
    - D'abord vérifier qu'il n'a pas déjà voté
    - S'il n'a pas voté, tu fais ta logique donc ajouter l'IP à la liste de celle qui ont déjà votés et éventuellement afficher un message "Merci pour le vote"

    Côté client :
    Lorsqu'un utilisateur a été rédigée vers ton site de vote, le site du serveur n'a rien à faire.
    Lorsque l'utilisateur a voté (soit le site client vérifies automatiquement toutes les X secondes, soit ils mettent un bouton "Vérifier"), ils font une requête vers ton site de vote avec l'IP de l'utilisateur.
    Si ton site (via ton API) leur répond "true" c'est que l'utilisateur a récemment voté et donc ils peuvent donner les récompenses et publier le tout sur Jsonapi. Sinon c'est que l'utilisateur n'a pas voté.

    => Ce qui est important c'est de bien faire la différence entre les actions réalisées par le site de vote (enregistrer un vote par IP et empêcher les votes multiples) et celles réalisés par le site du serveur (vérifier un vote grâce à l'API du site du vote et attribuer les récompenses aux joueurs).

    Oui mais où bloques-tu précisément ?
     
  7. MrBaguette07

    MrBaguette07 Cueilleur de roses

    Inscrit:
    22 Février 2018
    Messages:
    12
    J'aime reçus:
    1
    Bonjour, désolé de ma réponse tardive.
    Effectivement j'avais fais un petit script qui enregistre l'ip ainsi que des points. sous ce type :
    $result = $database->query("SELECT `id` FROM `points` WHERE `type` = 1 AND `server_id` = {$_SESSION['server_id']} AND `ip` = '{$_SERVER['REMOTE_ADDR']}' AND `timestamp` > UNIX_TIMESTAMP(NOW() - INTERVAL 1 DAY)");
    Il enregistre l'id du serveur, l'ip, ainsi que le temp pour le vote.
    Du coup, je retourne sur le moment ou il faut vérifier l'ip. Je ne sais pas si j'ajoute votre code ci-dessus ?
     
    #7 MrBaguette07, 11 Décembre 2018
    Dernière édition: 11 Décembre 2018
  8. DiscowZombie

    DiscowZombie Dev passionné
    Staff Modérateur Support

    Inscrit:
    2 Mars 2017
    Messages:
    2 584
    J'aime reçus:
    859
    Salut,

    ce code enregistre un vote, il doit donc être exécuté lorsqu'un joueur clique sur le bouton "Voter".

    Ce que tu dois faire maintenant, c'est la condition pour vérifier si un joueur a voté il y a moins de 24 heures.
    PHP:
    $vote true// Aller chercher dans ton stockage si l'IP a voté ou non
    Sinon l'API te dira que tu as déjà voté dans tous les cas.

    Ensuite, je ne sais pas où tu as appris à faire du Sql mais ce n'est pas la bonne manière que tu utilises là. Avec ce code, tu vas provoquer ce qui s'appeler des injections Sql car ta requête va être "forcée" à s'éxécuter. La bonne manière de faire du Sql c'est ce qui s'appele les requêtes préparés (notamment avec PDO prepare() en Php), je t'invite à te renseigner là-dessus.

    En outre, et pour finir, il me semble qu'il arrive d'avoir des problèmes avec $_SERVER['REMOTE_ADDR'] qui parfois ne retourne pas l'IP attendue. Il pourrait être bon de faire quelques recherches là-dessus également. ;)
     
  9. MrBaguette07

    MrBaguette07 Cueilleur de roses

    Inscrit:
    22 Février 2018
    Messages:
    12
    J'aime reçus:
    1
    D'accord, je vais approfondir quelques recherches pour pouvoir l'implémenter dans mon scripts de vérification.


    Ah, d'accord. Merci de votre renseignement, je vais mettre à jour mes connaissance en sql ;)

    Et bien, comme ça je ne vais pas m'ennuyait, ;)

    Bonne journée à vous et merci ;)
     
    DiscowZombie apprécie ceci.
  10. DiscowZombie

    DiscowZombie Dev passionné
    Staff Modérateur Support

    Inscrit:
    2 Mars 2017
    Messages:
    2 584
    J'aime reçus:
    859
    Salut,

    n'hésite pas en tout cas si tu ressens encore des difficultés. ;)
     

Partager cette page