Tester qu'une page sur un serveur distant est accessible

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Tester qu'une page sur un serveur distant est accessible

par Invité » 29 août 2005, 17:08

je ne sais pas si tu as résolu ton problème mais au cas où voila un code qui marche:
$ressource_serveur=fsockopen("www.ecolo-valdesambre.org",80);
$reket="GET http://www.ecolo-valdesambre.org/index.php5 HTTP/1.0\r\n";
$reket.="Connection: close\r\n\r\n";
fputs($ressource_serveur,$reket);
//recupére la première ligne avec le code réponse http
$res=fgets($ressource_serveur,20);
fais attention aux réponses type 302 qui peuvent t'obliger à suivre des redirections(ce n'est le cas dans le site de ton exemple que pour les pages qui n'existent pas donc pas de soucis).
par contre je ne sais pas où tu as vu que le port 80 n'était pas à spécifier.

par Invité » 27 août 2005, 16:20

en ce moment je ne peux pas tester mais essaie ça:
$reket_http='GET http://www.ecolo-valdesambre.org/index.php5 HTTP/1.1';
n'oublis pas que tu dois parler le langage du serveur.
la requête que tu envois est similaire à celles que l'on met dans un navigateur, navigateur qui ensuite la traduit comme il peut dans le langage adéquat.
dans le cas présent c'est à toi d'utiliser la bonne syntaxe(regardes bien le lien vers commentçamarche).

par h2o » 27 août 2005, 11:59

Si je comprends bien, $reponse est censé contenir les 256 premier caractère du documents de la requête http.

Mais je n'obtiens rien.
//tu établis le contact avec le serveur 
$ressource_serveur=fsockopen("www.ecolo-valdesambre.org"); 
//tu interroge le serveur
fputs($ressource_serveur,"http://www.ecolo-valdesambre.org/index.php5"); 
//tu récupères la réponse 
$reponse = fgets($ressource_serveur,256);
echo "Reponse= " . $reponse;
Et si j'ajoute un numéro de port (80) dans fsockopen (données facultative, comme vu dans l'aide), le chargement est considérablement ralentis, mais, mais je n'obtiens toujours rien dans $reponse

Pourtant, le site est ouvert et la page demandée existe.

Ou est mon erreur. J'ai pourtant lu l'aide pour chacune de ces lignes.

par Invité » 27 août 2005, 11:00

un p'tit oublis:
$reponse=fgets($ressource_serveur,256);
[/php]

par Invité » 27 août 2005, 10:40

si tu dois être précis la solution que t'as filé smarties pourrait te convenir.

en passant par les sockets cela te permet d'établir un dialogue direct avec un serveur, donc sans passer par les surcouches des fonctions php.
cela te permet donc d'envoyer des requêtes et d'obtenir des réponses précises(en sachant que chaque serveur utilise un langage propre).

dans ton cas tu devra envoyer une requête http vers le fichier que tu dois tester, et suivant la réponse du serveur tu sauras ce qu'il en ai.
//tu établis le contact avec le serveur
$ressource_serveur=fsockopen($adresse, $port));
//tu interroge le serveur
fputs($ressource_serveur,$requête_http);
//tu récupères la réponse
fgets($ressource_serveur,256);
si tu as telnet à disposition ça peut être un bon moyen de tester tes requêtes et les réponses reçus.
http://fr2.php.net/function.fsockopen
http://www.commentcamarche.net/internet/http.php3

par h2o » 27 août 2005, 09:00

Je ne cherche évidemment pas des solutions toutes faites. Je voulais simplement savoir quelle syntaxe permet de vérifier qu'une page distante est accessible.
Désolé si j'ai eu un ton un peu "polémique" :oops:

La page distante est un fil info xml-rss dont j'affiche certaines parties sur mon site.
J'ai pour cela écris un feuille de transformation xsl et c'est-elle qui sélectionne le document distant.

Code : Tout sélectionner

<xsl:variable name="feed" select="document(&apos;http://www.serveur.be/rss2.php&apos;)"/>
Le code php étant mon code "passe-partout"
1. Je sélectionne un document xml
2. Je sélectionne un documen xsl
3. Je transforme le document xml avec un ou plusieurs paramètres
4. J'évalue et j'affiche le résultat.

Mais dans le cas d'un document distant, je ne suis pas certain à 100% que celui soit accessible. Et s'il ne l'est pas, j'ai un erreur php qui arrête l'affichage de ma page.

Je voulais donc simplement vérifier l'accessibilité du document xml-rss distant.

par Invité » 26 août 2005, 22:00

je voulais qu'il trouve cette solution tout seul
Je sais bien qu'aucun forum n'est là pour faire le travail à la place du demandeur.
Un forum, c'est un peu comme une auberge espagnole où chacun trouve ce que tous y apportent.
Mais de la à dire, M. ou Mme Invité anonyme, que votre souhait est que l'interlocuteur trouve sa solution "tout seul"... :cry:
Je ne me suis pourtant pas trompé de forum, je suis bien dans "Débuter en php". ?
c'est pas méchant h2o, en te posant la question je te mettais sur la voie.
et puis si je te files des solutions toutes faites je te mache le travail(ça arrive aussi), et si je te mache le travail c'est pas le meilleur moyen d'apprendre des choses vu que tu n'as pas à réfléchir.

après si tu ne trouves pas revient sur le forum, que je doive répondre une fois ou plusieurs fois sur le même post c'est pas un souci pour moi.
quand je répond à un post j'essaie de ne pas lacher l'auteur, après ça dépend de mes compétences ou bien si quelqu'un répond plus intelligemment que moi.

thierry

par Xenon_54 » 26 août 2005, 21:47

Bonjour,

Prochaine fois je laisserai chercher l'auteur et le participant qui voulait savoir si c'était bien un fichier distant...

par h2o » 26 août 2005, 21:47

je voulais qu'il trouve cette solution tout seul
Je sais bien qu'aucun forum n'est là pour faire le travail à la place du demandeur.
Un forum, c'est un peu comme une auberge espagnole où chacun trouve ce que tous y apportent.
Mais de la à dire, M. ou Mme Invité anonyme, que votre souhait est que l'interlocuteur trouve sa solution "tout seul"... :cry:
Je ne me suis pourtant pas trompé de forum, je suis bien dans "Débuter en php". ?

par Invité » 26 août 2005, 21:18

fopen() (en mode lecture) devrait suffir à vérifier si le fichier distant est accessible. (puisqu'il s'agit d'un fichier distant selon le titre du sujet)
et
est ce que quand tu fais un fopen sur ce fichier ça te retourne quelquechose?
bien que je trouve la méthode un peu barbare(il faut aussi qu'il prenne en compte que le serveur peut être down et je ne sais pas pourquoi il veut faire tout ça), je voulais qu'il trouve cette solution tout seul :wink:

par Xenon_54 » 26 août 2005, 20:48

Bonjour,

fopen() (en mode lecture) devrait suffir à vérifier si le fichier distant est accessible. (puisqu'il s'agit d'un fichier distant selon le titre du sujet)

par smarties » 26 août 2005, 19:10

sinon avec les socket peurt être :?

par Invité » 26 août 2005, 19:04

est ce que quand tu fais un fopen sur ce fichier ça te retourne quelquechose?

par h2o » 26 août 2005, 18:55

Compris. Merci.

Mais alors, comment vérifier qu'un fichier est accessible ?

par Invité » 26 août 2005, 18:44

Cette fonction retourne FALSE pour les fichiers non accessibles en raison des restrictions du safe mode. Cependant, ces fichiers peuvent toujours être inclus s'ils sont dans le dossier safe_mode_include_dir.
ça peut venir de là si le serveur où il y a le fichier que tu veux applique cette restriction.
http://fr.php.net/file_exists