[PHP] Effectuer une requête sur une page distante. (résolu)

Effectuer une requête sur une page distante. (résolu) [PHP] - PHP - Programmation

Marsh Posté le 25-08-2003 à 22:36:11    

Voilà, je veux qu'un script php effectue une requête sur une page lors d'un traitement sur par exemple:


http://www.monsite.com/update.php


 
Le but est d'appeler la page sans le faire via mon navigateur. Ca doit être invisible du niveau de l'utilisateur.  
Je pourrais ouvrir un socket et envoyer les entêtes mais il doit sûrement y avoir bien plus simple. Voilà ...


Message édité par belgique le 25-08-2003 à 23:09:36
Reply

Marsh Posté le 25-08-2003 à 22:36:11   

Reply

Marsh Posté le 25-08-2003 à 22:40:38    

Belgique a écrit :

Voilà, je veux qu'un script php effectue une requête sur une page lors d'un traitement sur par exemple:


http://www.monsite.com/update.php


 
Le but est d'appeler la page sans le faire via mon navigateur. Ca doit être invisible du niveau de l'utilisateur.  
Je pourrais ouvrir un socket et envoyer les entêtes mais il doit sûrement y avoir bien plus simple. Voilà ...
 


Un tag <img...> avec l'url php en src (par exemple).
 
Edit: non c'est débile, laisse tomber mon idée.


Message édité par ACut le 25-08-2003 à 22:43:45

---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 25-08-2003 à 22:44:19    

Non, non, tu ne m'as pas compris... je ne veux pas appeler la page depuis le  navigateur client.  
Exemple concret :
 
J'ai mon site perso... Les gens voient toujours la même page. Tous les xx visites, je dois contacter un site distant pour le prévenir. Le client lui doit continuer à voir mon site normalement, même s'il est le xx visiteur :)

Reply

Marsh Posté le 25-08-2003 à 22:48:05    

fopen(), ou utiliser une classe HTTP POST ?


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
Reply

Marsh Posté le 25-08-2003 à 22:48:18    

Belgique a écrit a écrit :

Non, non, tu ne m'as pas compris... je ne veux pas appeler la page depuis le  navigateur client.  




Ouais je m'en suis rendu compte après avoir posté (d'où mon Edit), scuze-moi.
 

Belgique a écrit a écrit :

 
Exemple concret :
J'ai mon site perso... Les gens voient toujours la même page. Tous les xx visites, je dois contacter un site distant pour le prévenir. Le client lui doit continuer à voir mon site normalement, même s'il est le xx visiteur :)




Je suis assez branquignole en PHP, dc je risque pas de t'aider puissamment, mais ton truc m'intéresse. Le critère déclencheur, ce serait ce_visiteur == xx c'est ça?
- xx est fixe?
- y a une db dans l'histoire?


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 25-08-2003 à 22:49:22    

moi j'ai rien capté a ce qu'il voulait  [:southpark1]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 25-08-2003 à 22:51:19    

simogeo a écrit :

moi j'ai rien capté a ce qu'il voulait  [:southpark1]  


Il veut déclencher un process PHP, genre màj d'une DB, de façon transparente pour l'utilisateur MAIS déclenchée par l'arrivée d'un xxième utilisateur.


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 25-08-2003 à 22:51:29    

simogeo a écrit :

moi j'ai rien capté a ce qu'il voulait  [:southpark1]  


[:benou_+1]
Surtout que le code php est interprété coté server et de ce fait l'utilisateur ne verra pas la différence... [:spamafote]
 
Edit:

ACut a écrit :


Il veut déclencher un process PHP, genre màj d'une DB, de façon transparente pour l'utilisateur MAIS déclenchée par l'arrivée d'un xxième utilisateur.


Benh il fait un test sur sa page avec le numéro du visiteur (je sais pas coment compte aussi...)


Message édité par RiderCrazy le 25-08-2003 à 22:53:57
Reply

Marsh Posté le 25-08-2003 à 22:51:33    

simogeo a écrit :

moi j'ai rien capté a ce qu'il voulait  [:southpark1]  


 
Il veut que son script appelle une autre page sans que ce soit visible pour l'utilisateur.


---------------
Faux & usage de faux ¤ Machins roses ¤ ASCIImage ¤ HFR Enhance v0.8.6
Reply

Marsh Posté le 25-08-2003 à 22:53:06    

ACut a écrit :


Il veut déclencher un process PHP, genre màj d'une DB, de façon transparente pour l'utilisateur MAIS déclenchée par l'arrivée d'un xxième utilisateur.


c tjrs transparent pour l'utilisateur ce genre de trucs heinnnn  :o


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
Reply

Marsh Posté le 25-08-2003 à 22:53:06   

Reply

Marsh Posté le 25-08-2003 à 22:55:34    

Bon, on résume:
- quel événement doit déclencher l'appel du script PHP?
- sur quel serveur ce script est-il hébergé?
- quel est le client de ce serveur?


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 25-08-2003 à 22:58:18    

ACut a écrit :

Bon, on résume:
- quel événement doit déclencher l'appel du script PHP?
- sur quel serveur ce script est-il hébergé?
- quel est le client de ce serveur?


-un visiteur en plus (impliquant un test car je ne pense qu'il souhaite envoyer une requête à chaque visiteur)
-il va nous le dire je pense mais je ne suis pas sûr que cela ai un réel intêret (sauf si ils ont bloqué les appels sur des sites distants)
- :??:

Reply

Marsh Posté le 25-08-2003 à 22:58:29    

simogeo a écrit :


c tjrs transparent pour l'utilisateur ce genre de trucs heinnnn  :o  


Je dirais pas ça: l'utilisateur est généralement CONSCIENT qu'il émet une requête vers une url suffixée PHP et le client reçoit l'html craché par l'interpréteur PHP. Ce qui est transparent, c'est la cuisine faite par le script PHP pour pondre l'HTML.
Ici, je pense que l'objectif est que l'utilisateur (disons le déclencheur) n'aurait pas conscience qu'il provoque l'invocation d'un script PHP...


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 25-08-2003 à 23:00:07    

ACut a écrit :


Je dirais pas ça: l'utilisateur est généralement CONSCIENT qu'il émet une requête vers une url suffixée PHP et le client reçoit l'html craché par l'interpréteur PHP. Ce qui est transparent, c'est la cuisine faite par le script PHP pour pondre l'HTML.
Ici, je pense que l'objectif est que l'utilisateur (disons le déclencheur) n'aurait pas conscience qu'il provoque l'invocation d'un script PHP...

bah il y verra rien
client (envoie d'une requête, appel d'un page quoi...) -> server (traitement de l'info en php) -> client (reçoit le html)

Reply

Marsh Posté le 25-08-2003 à 23:00:54    

C'est le couvre-feu en Belgique ou quoi?


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 25-08-2003 à 23:04:16    

Je règlais mon problème c'est tout. Le xième visiteur, c'était juste pour donner un exemple.  
Merci pour les réponses de tout le monde. En fait la question c'était :"Comment effectuer une requête http depuis le serveur".
 
La solution:
 

function http_request($url, $post=false, $cookie=false, $head=false, $referer=false) {
 
    $headers = '';
    $data = '';
    $res = '';
 
    $method = $post ? 'POST' : 'GET';
    $method = $head ? 'HEAD' : $method;
 
    extract(parse_url($url));
 
    $cport = isset($port) ? (int)$port : 80;
    $port = isset($port) ? ':'.$port : '';
 
    $headers .= $method.' '.$path;
    $headers .= isset($query) ? '?'.$query : '';
    $headers .= " HTTP/1.1\r\n";
 
    $headers .= "Host: $host$port\r\n";
 
    $headers .= ($referer) ? "Referer: $referer\r\n" : '';
 
    if($post && !$head) {
 
        $tmpvars = array();
        foreach($post as $key=>$val) {
            $tmpvars[] = rawurlencode($key).'='.rawurlencode($val);
        }
        $data .= implode('&', $tmpvars) . "\r\n";
 
        $headers .= "Content-type: application/x-www-form-urlencoded\r\n";
 
    }
 
    if($cookie) {
 
        $tmpvars = array();
        foreach($cookie as $key=>$val) {
            $tmpvars[] .= rawurlencode($key) .'='. rawurlencode($val);
        }
 
        $headers .= 'Cookie: '. implode('; ', $tmpvars) ."\r\n";
 
    }
 
    $headers .= "Connection: close\r\n";
 
    if($data) {
        $headers .= 'Content-length: '.strlen($data)."\r\n";
    }
 
    $request = $headers."\r\n".$data;
 
    $fs = @fsockopen($host, $cport, $error, $errno, 10);
 
    if(!$fs) {
        echo "Erreur $errno: $error<br />\r\n";
    } else {
 
        fputs($fs, $request);
 
        while(!feof($fs)) {
            $res .= fgets($fs, 512);
        }
 
        fclose($fs);
 
        return $res;
 
    }
 
    return false;
 
}


Message édité par belgique le 25-08-2003 à 23:06:36
Reply

Marsh Posté le 25-08-2003 à 23:06:21    

En plus c'est pas un truc aussi simple qu'auquel on pensait...
Bon, au moins t'as trouvé ta solution [:xp1700]

Reply

Marsh Posté le 25-08-2003 à 23:07:11    

Disons que je ne suis pas toujours super bon pour exprimer mes problèmes ;).
Et que la solution là semble complexe car elle traite les POST et GET ainsi que les cookies.


Message édité par belgique le 25-08-2003 à 23:07:57
Reply

Marsh Posté le 25-08-2003 à 23:14:37    

Belgique a écrit :

Je règlais mon problème c'est tout. Le xième visiteur, c'était juste pour donner un exemple.  
Merci pour les réponses de tout le monde. En fait la question c'était :"Comment effectuer une requête http depuis le serveur".
 
La solution:
...


 
Ah ouais c'est pas vraiment la même chose. Je (on?) pensais que tu voulais "appeler" la page www.serveur.com/update.php (cf. ton premier post) de façon invisible. Ici tu paramètres toi-même de A à Z la requête et dc Freekill avait raison...
Bon ben ça répond pas à ma question mais il est vrai que çépamontopik.
@+


---------------
NOUVEAU! Le guide de l'édition en version ebook : http://marcautret.free.fr/autret/150q-ebook/
Reply

Marsh Posté le 25-08-2003 à 23:18:06    

Ben ça se fait de manière invisible... Un visiteur se connecte au site. Je décide d'effectuer le traitemet, j'utilise ma fonction et je continue mon traitement comme si de rien était. L'utilisateur ne voit rien.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed