IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AJAX Discussion :

Afficher le total des gains coinhive avec l'api coinhive


Sujet :

AJAX

  1. #1
    Invité
    Invité(e)
    Par défaut Afficher le total des gains coinhive avec l'api coinhive
    Bonjour, j'aurais besoin de votre aide et retours sur expérience pour tenter d'aboutir ce script :
    Source d'origine du message : https://forum.joomla.fr/forum/joomla...este-fig%C3%A9

    J'ai récemment découvert coinhive. Ma synthèse, que je vous conseille :
    https://www.visionduweb.eu/wiki/inde...A9_sur_un_site

    Comme indiqué dans la synthèse, on peut afficher le montant total miné avec l'api de coinhive :
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php $valeurs = file_get_contents('https://api.coinhive.com/stats/site?secret=PRIVATE_KEY');
    $affiche = json_decode($valeurs, true); $xmrPending = $affiche['xmrPending'];
    echo ('<div id="xmr" align="center" style="color:grey;">Le montant des donations pour Vision du web est de '.$xmrPending.' Monero.</div>'); ?>
    Jusque la, tout va bien, ce script fonctionne.

    Les difficultés commencent avec mon hébergeur. Apparemment, il ne reconnaît pas file_get_contents ce qui m'empêche d'exploiter mon script.
    Je passe donc sur un autre mutualisé pour afficher mon script :
    1- Le script statique : http://green.legtux.org/api-coinhive-affiche.php
    2- Le script dynamique : http://green.legtux.org/api-coinhive-curl-affiche.php

    Sur cet hébergeur, j'arrive à afficher le total généré par coinhive, de façon statique, ou, dynamique avec un refresh toutes les 5 secondes.
    Ci-dessous, le code utilisé en Javascript pour rafraichir l'information, et, le code PHP pour afficher le contenu initial.

    La balise de conteneur est un div ayant pour ID " xmr".
    Les scripts suivant sont donc bien fonctionnels sur l'hébergeur legtux, mais, quand je tente de l'utiliser via curl PHP sur mon site Vision du web, l'affichage reste statique.
    J'ai tenté quelques manipulations, sans succès.
    Il y a bien eu un moment, lorsque j'ai remplacé l'url dans la portion de code suivante
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    xhr.open("GET","http://green.legtux.org/api-coinhive-curl-affiche.php",true);
    par ./index.php ou j'ai cru que j'allais arriver à améliorer ce code, mais, non, car, même si alors, l'information enfin se charge de façon dynamique, j'ai une très vilaine boucle qui recharge mon site, et, qui le surcharge, je vois 1 fois mon site, puis, 2 fois l'un sous l'autre, puis 3 fois l'un sous l'autre, un vilain bogue.

    Le script présenté ci-dessous est ma situation actuelle, fonctionnelle sur legtux, et, statique sur Vision du web.

    Je n'ai pas chargé la bibliothèque JQuery sur legtux. J'ai des bibliothèques chargées sur Vision du web.

    Ma question est donc la suivante : Comment rafraichir un div de Joomla pour dynamiser le contenu ?
    Existe t'il un module de type iframe qui permettre la prise en compte immédiate du nécessaire technique pour afficher directement mon contenu de façon dynamique ?

    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    <script type="text/javascript">
    function timer()
    {
    comp=(setTimeout("go()",5000));
    }
    function getXhr(){
    var xhr = null;
    if(window.XMLHttpRequest) // Firefox et autres
    xhr = new XMLHttpRequest();
    else if(window.ActiveXObject){ // Internet Explorer
    try {
    xhr = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    }
    else { // XMLHttpRequest non supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    xhr = false;
    }
    return xhr
    }
    function go()
    {
    var xhr = getXhr()
    // On défini ce qu'on va faire quand on aura la réponse
    xhr.onreadystatechange = function()
    {
    // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
    if(xhr.readyState == 4 && xhr.status == 200)
    {
    var html = xhr.responseText;
    document.getElementById('xmr').innerHTML = html;
    }
    }
    xhr.open("GET","http://green.legtux.org/api-coinhive-curl-affiche.php",true);
    xhr.send(null);
    setTimeout('go()',5000);
    }
    window.onload=timer();
    </script>

    Directement suivi par :

    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
    $url = 'http://green.legtux.org/api-coinhive-affiche.php';
    $timeout = 10;
     
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
     
    if (preg_match('`^https://`i', $url))
    {
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
    }
     
    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     
    // Récupération du contenu retourné par la requête
    $page_content = curl_exec($ch);
     
    curl_close($ch);
    echo '<div style="text-align:center;">';
    echo $page_content;
    echo '</div>';
    ?>

    Merci de vos conseils pour arriver à rendre cet affichage dynamique, sur Joomla!
    Dernière modification par Invité ; 13/10/2017 à 20h00. Motif: Titre

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    Déjà je pense ce n'est pas sur le serveur green.legtux.org que le rafraichissement devrait se faire.
    Le plus simple serait que la page "api-coinhive-affiche.php" envoie seulement la données sans le code HTML autour. ainsi si vous voulez modifier la phrase d'affichage, la couleur, ou la police d'affichage, cela sera beaucoup plus simple puisque vous n'aurez pas d'aller sur cet autre serveur

    ensuite pour récupérer cette donnée sur le site visionduweb.eu vous devrez l'autoriser avec l'entête "Access-Control-Allow-Origin"

    donc au final le code devra donner quelque chose comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?php
     
    $valeurs = file_get_contents('https://api.coinhive.com/stats/site?secret=PRIVATE_KEY');
    $affiche = json_decode($valeurs, true);
     
    $total = $affiche['xmrPending'] + $affiche['xmrPaid']; // total des dons déjà reçus
     
     
    header("Access-Control-Allow-Origin: https://www.visionduweb.eu");
     
    echo $total;
    exit();

  3. #3
    Invité
    Invité(e)
    Par défaut Afficher le total des gains coinhive avec l'api coinhive et Javascript pour un affichage dynamique sur Joomla!
    Afficher le total des gains coinhive avec l'api coinhive et Javascript pour un affichage dynamique sur Joomla!

    NB : Merci Mathieu pour ton retour. J'ai effectivement pu activer la fonction PHP nécessaire, pour ne pas avoir besoin d'utiliser green.legtux.org
    J'ai aussi pu trouver les bons chemins qu'il me manquait, pour que le script puisse fonctionner et se rafraîchir correctement.

    Placer le code suivant dans Joomla! avec mod_custom de Joomla
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?php
    $valeurs = file_get_contents('https://api.coinhive.com/stats/site?secret=PRIVATE_KEY');
    $affiche = json_decode($valeurs, true);
    $xmrPending = $affiche['xmrPending'];
    echo ('<div id="xmr" align="center" style="color:grey;">Le montant des donations pour NOM DU SITE est de '.$xmrPending.' Monero.</div>');
    ?>

    Placer le code Javascript suivant dans le template de Joomla! Ce script doit être placé dans le <head>.
    Code Javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
    function timer() {
        comp = (setTimeout("go()", 15000));
    }
     
    function getXhr() {
        var xhr = null;
        if (window.XMLHttpRequest) // Firefox et autres
            xhr = new XMLHttpRequest();
        else if (window.ActiveXObject) { // Internet Explorer
            try {
                xhr = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }
        } else { // XMLHttpRequest non supporté par le navigateur
            alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
            xhr = false;
        }
        return xhr
    }
     
    function go() {
        var xhr = getXhr()
            // On défini ce qu'on va faire quand on aura la réponse
        xhr.onreadystatechange = function() {
            // On ne fait quelque chose que si on a tout reçu et que le serveur est ok
            if (xhr.readyState == 4 && xhr.status == 200) {
                var html = xhr.responseText;
                document.getElementById('xmr').innerHTML = html;
            }
        }
        xhr.open("GET", "https://www.domain.ext/templates/nom_du_template/js/api-coinhive-affiche.php", true);
        xhr.send(null);
        setTimeout('go()', 15000);
    }
    window.onload = timer();

    Placer le code PHP suivant au même niveau que le script Javascript
    Code PHP : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    <html>
    <head></head>
    <body>
    <?php
    $valeurs = file_get_contents('https://api.coinhive.com/stats/site?secret=PRIVATE_KEY');
    $affiche = json_decode($valeurs, true);
    $xmrPending = $affiche['xmrPending'];
    echo ('<div id="xmr" align="center" style="color:grey;">Le montant des donations pour Nom du Site est de '.$xmrPending.' Monero.</div>');
    ?>
    </body>
    </html>
    Dernière modification par Invité ; 13/10/2017 à 20h10.

  4. #4
    Invité
    Invité(e)
    Par défaut Un dernier bogue
    Un dernier bogue fait que lors de l'affichage, les valeurs augmentent, diminuent augmentent augmentent diminuent ... Une idée ?
    Dans l'ordre d'affichage lors de mon test :

    0020797492499683
    0020801590169199 -
    0020801962684609
    0020801590169199 -
    0020804942807894
    0020807177900357 /
    0020808667961999
    0020807177900357 /
    0020810903054463
    0020811648085284 ...
    0020815000723979
    0020811648085284 ...
    0020816490785621
    0020818353362674
    0020820960970548
    0020825058640064 ......
    0020826921217117 **
    0020825058640064 ......
    0020826921217117 **
    0020828783794169
    0020826921217117 **
    0020829528824991
    0020831018886633
    0020833999009917
    0020834371525328 ..
    0020835489071559
    0020834371525328 ..

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Afficher le total des montants selon choix de critère de recherche
    Par BRUNO71 dans le forum VBA Access
    Réponses: 2
    Dernier message: 03/04/2016, 21h49
  2. Twitter exige des communications chiffrées avec son API
    Par Stéphane le calme dans le forum Sécurité
    Réponses: 2
    Dernier message: 20/01/2014, 08h35
  3. Réponses: 3
    Dernier message: 15/07/2010, 19h07
  4. Réponses: 0
    Dernier message: 16/06/2010, 11h14
  5. Etablir des diagrammes graphiques avec l'API JUNG
    Par zizoux5 dans le forum Multimédia
    Réponses: 2
    Dernier message: 15/03/2007, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo