Appeller du Php en javascript

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

isolu
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 104
Inscription: Lun Nov 21, 2005 20:52

Appeller du Php en javascript

Message le Jeu Sep 28, 2006 6:03

Bonjour,

J'ai un petit problème qui selon mon peut pas être réglé mais ont le sait jamais, un ptit génie pourrait trouver la solution.

J'ai un script que j'appelle avec un include dans une page php et il fonctionne bien. Maintenant je veux appeller ce script dans une page html.

J'appelle donc mon script avec du javascript de cette façon
Code: Tout sélectionner
<script type="text/javascript" src="http://www.mondomaine.com/monscript.php"></script>


Le problème est le suivant, je dois envoyer au script l'url de la page.
En php j'utilise
Code: Tout sélectionner
include("monscript.php?url=".$HTTP_HOST."&page=".$REQUEST_URI);


Je sais que l'équivalent de $HTTP_HOST en javascript est window.location.hostname et pour $REQUEST_URI c'est window.location.pathname mais je sais pas comment l'intégrer à
Code: Tout sélectionner
<script type="text/javascript" src="http://www.mondomaine.com/monscript.php"></script>


D'après moi c'est pas faisable mais si vous connaissez un autre moyen de le faire cela sera très apprécié.

Merci!

PigeonDeCombat
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 206
Inscription: Dim Aoû 06, 2006 9:24

Message le Jeu Sep 28, 2006 7:02

include("monscript.php?url=".$HTTP_HOST."&page=".$REQUEST_URI);

ca ne devrait pas marcher ça déjà.
Et puis poourquoi ne pas faire appel à ces deux variables d'environnement directement depuis le script ?


e-kiwi
Modérateur
Modérateur
 
Messages: 13876
Inscription: Mar Déc 23, 2003 9:04

Message le Jeu Sep 28, 2006 7:35

attention, le php est écécuté coté serveur et le javascript coté client, donc l'un sera exécuté avant l'autre.

tu veux faire quoi exactement, faire un outils de statistiques?

PaulArdemue
Nouveau WRInaute
 
Messages: 30
Inscription: Lun Sep 25, 2006 7:37

Message le Jeu Sep 28, 2006 8:35

Ce que tu peux faire c'est un code javascript qui ajoute dans ton document un objet HTML, IMG ou SCRIPT, qui pointe vers le fichier PHP en question, du coup tu pourras lui passer toutes les variables JS que tu voudras.


dadovb
WRInaute accro
WRInaute accro
 
Messages: 2038
Inscription: Mar Nov 22, 2005 9:50

Message le Jeu Sep 28, 2006 9:03

euh j'ai toujours pas compris l'intéret du truc...

sgaze
WRInaute passionné
WRInaute passionné
 
Messages: 538
Inscription: Lun Fév 02, 2004 16:54

Message le Jeu Sep 28, 2006 9:03

PaulArdemue a écrit:Ce que tu peux faire c'est un code javascript qui ajoute dans ton document un objet HTML, IMG ou SCRIPT, qui pointe vers le fichier PHP en question, du coup tu pourras lui passer toutes les variables JS que tu voudras.


Pour faire ça, AJAX ! c'est l'occasion idéale de s'y mettre :

Le contenu d'un .js attaché :
Code: Tout sélectionner
function createHTTPObject() {
   var objHTTP = null;
   
   if (typeof XMLHttpRequest != 'undefined') {
      try {
         // Native XML support (Firefox, etc...)
         objHTTP = new XMLHttpRequest();
      }
      catch (e1) {}
   }
   else {
       try {
         // Internet Explorer support (new library)
         objHTTP = new ActiveXObject("Msxml2.XMLHTTP");
      }
      catch (e2) {
         try {
            // Internet Explorer support (old library)
              objHTTP = new ActiveXObject("Microsoft.XMLHTTP");
           }
         catch (e3) {}
        }
   }
   return objHTTP;
}

var _objHTTP = createHTTPObject();

function getvoid(url) {

   _objHTTP.open('GET', url, true);
   _objHTTP.onreadystatechange = function() {
      if (_objHTTP.readyState == 4) {
         if (_objHTTP.status != 200) {
            //alert('Error: refresh failed !\r\nReason : ' + _objHTTP.statusText);
         }
      }
   }
   _objHTTP.send(null);
}


L'appel à la fonction getvoid :
Code: Tout sélectionner
<body onload="getvoid('monscript.php?url='+window.location.hostname+'&page='+window.location.pathname)">

PaulArdemue
Nouveau WRInaute
 
Messages: 30
Inscription: Lun Sep 25, 2006 7:37

Message le Jeu Sep 28, 2006 9:09

AJAX c'est bien mais il faut arrêter de l'utiliser n'importe où et n'importe quand... Isolu n'a aucun intérêt à utiliser AJAX dans ce cas là. Il ne va pas utiliser 20 lignes de JS pour appeler une page PHP alors qu'il peut faire la même chose avec 3 lignes.

dadovb > C'est utile si tu veux recueillir des informations sur le client que tu ne peux pas obtenir avec un langage côté serveur. La résolution écran, par exemple, ne peut être obtenue qu'avec JS. L'idée c'est de passer ensuite cette résolution à une page serveur pour en faire quelque chose. C'est cette méthode qu'utilisent Xiti et Google analytics pour faire des statistique sur les sites web à l'aide de marqueurs.

sgaze
WRInaute passionné
WRInaute passionné
 
Messages: 538
Inscription: Lun Fév 02, 2004 16:54

Message le Jeu Sep 28, 2006 10:33

PaulArdemue a écrit:AJAX c'est bien mais il faut arrêter de l'utiliser n'importe où et n'importe quand... Isolu n'a aucun intérêt à utiliser AJAX dans ce cas là. Il ne va pas utiliser 20 lignes de JS pour appeler une page PHP alors qu'il peut faire la même chose avec 3 lignes.


Ca dépend :wink:
Une fois globalisées les 20 lignes qui permettent de créer la requête xmlhttp, l'appel est fait en une seule ligne. Et disposer d'un objet xmlhttp partout ça ouvre plein de possibilités en terme de comportement lorsqu'on mene des évolutions sur un site.

PaulArdemue
Nouveau WRInaute
 
Messages: 30
Inscription: Lun Sep 25, 2006 7:37

Message le Jeu Sep 28, 2006 11:07

sgaze a écrit:Ca dépend :wink:
Une fois globalisées les 20 lignes qui permettent de créer la requête xmlhttp, l'appel est fait en une seule ligne. Et disposer d'un objet xmlhttp partout ça ouvre plein de possibilités en terme de comportement lorsqu'on mene des évolutions sur un site.


AJAX ouvre plein de possibilités, c'est certain. Mais AJAX n'est pas adapté à cette demande en particulier: Il ne souhaite pas utiliser dynamiquement des données provenant d'une autre page, il souhaite transmettre dynamiquement des données à une autre page.

isolu
WRInaute occasionnel
WRInaute occasionnel
 
Messages: 104
Inscription: Lun Nov 21, 2005 20:52

Message le Jeu Sep 28, 2006 15:47

Merci tout le monde,

sgaze ne le prend pas personnel, mais je veux essayer de garder le tout le plus simple possible. J'ai juste besoin que le javascript recoivent l'infos retourné par php qui sont des images. Je veux donc essayer le AJAX mais si il y a pas d'autre moyen je vais l'essayer.

Chaque images doivent avoir un lien different pour chaque page, c'est a dire qu'ils doivent contenir l'url de la page active. C'est pour traduire mon site, j'ai donc un drapeau français, anglais et espagnole. Donc si tu es sur la page X le drapeau doit contenir l'url de la page X pour que lorsque que tu cliques dessus cela appelle mon traducteur et dit traduit la page X.

Ça fonctionne parfaitement sur mes sites en PHP avec mon include, mon but est de faire fonctionner mon script sur n'importe quel site afin de partager ce script.

PaulArdemue a écrit:Ce que tu peux faire c'est un code javascript qui ajoute dans ton document un objet HTML, IMG ou SCRIPT, qui pointe vers le fichier PHP en question, du coup tu pourras lui passer toutes les variables JS que tu voudras.


J'aimerais bien le faire mais je sais pas comment. J'ai essayé d'écrire le code
Code: Tout sélectionner
<script type="text/javascript" src="http://www.mondomaine.com/monscript.php?url=$mon_url"></script>


En utlisant le javascript du genre
Code: Tout sélectionner
<script>document.write('<script type="text/javascript" src="http://www.mondomaine.com/monscript.php?url='+window.location.hostname+'"></script>');</script>


Mais ça fonctionne pas. Comment je peux faire un code javascript qui ajoute un objet javascript? Je savais même pas que c'était faisable.

PaulArdemue
Nouveau WRInaute
 
Messages: 30
Inscription: Lun Sep 25, 2006 7:37

Message le Jeu Sep 28, 2006 16:09

Voici une méthode en deux fichiers.



test.php
Code: Tout sélectionner
<html>
<body>

<script type="text/javascript">
var obj=document.createElement('img');
obj.src='test2.php?pouet=OK';
document.childNodes[0].appendChild(obj);
</script>

</body>
</html>


test2.php
Code: Tout sélectionner
<?php

$str=isset($_GET['pouet']) ? $_GET['pouet'] : '';
$img=imagecreatetruecolor(300,200);

imagestring($img, 10, 10,50, $str, imagecolorallocate($img, 255, 255, 255) );
imagegif($img);
imagedestroy($img);

?>


Si on demande l'affichage de test.php une image noire apparaît avec en inscription blanche: "OK"


Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités