Page 1 sur 2

Tester qu'une page sur un serveur distant est accessible

Posté : 26 août 2005, 18:06
par h2o
Avec le code suivant, le résultat est "faux" même quand la page est accessible. Où est mon erreur ?

if (file_exists("http://www.serveur.fr/rss.php"))
{
/* le code à exécuter */
}

Posté : 26 août 2005, 18:44
par Invité
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

Posté : 26 août 2005, 18:55
par h2o
Compris. Merci.

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

Posté : 26 août 2005, 19:04
par Invité
est ce que quand tu fais un fopen sur ce fichier ça te retourne quelquechose?

Posté : 26 août 2005, 19:10
par smarties
sinon avec les socket peurt être :?

Posté : 26 août 2005, 20:48
par Xenon_54
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)

Posté : 26 août 2005, 21:18
par Invité
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:

Posté : 26 août 2005, 21:47
par h2o
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". ?

Posté : 26 août 2005, 21:47
par Xenon_54
Bonjour,

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

Posté : 26 août 2005, 22:00
par Invité
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

Posté : 27 août 2005, 09:00
par h2o
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.

Posté : 27 août 2005, 10:40
par Invité
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

Posté : 27 août 2005, 11:00
par Invité
un p'tit oublis:
$reponse=fgets($ressource_serveur,256);
[/php]

Posté : 27 août 2005, 11:59
par h2o
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.

Posté : 27 août 2005, 16:20
par Invité
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).