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:
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:
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:
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:
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!
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:
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:
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:
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> |