begin process at 2012 05 31 01:09:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Aide & documentation

 > 

Probleme avec la fonction fopen


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Probleme avec la fonction fopen

dimanche 10 janvier 2010 à 21:38:07 | Probleme avec la fonction fopen

meltraxxx

Bonsoir,

J'ai toujours des problèmes avec la fonction fopen en php.

Pour info url_1 est une page qui existe et url_2 et une page qui n'existe pas.

Voici le script :

$url_1 = "http://www.phpcs.com/g/logos/normal/logophp.png";
$url_2 = "http://www.phpcs.com/g/logos/normal/azertyuiop.png";

if($handle = fopen("$url_1", "rb")){
echo"Ouverture du fichier => $url_1<br>";
}else{
echo"$url_1 introuvable<br>";
}

if($handle = fopen("$url_2", "rb")){
echo"Ouverture du fichier => $url_2<br>";
}else{
echo"$url_2 introuvable<br>";
}

Le serveur qui m'héberge ( mavenhosting.com ) me dit que les deux pages existes, ce qui est faut. Le même test effectué sur mon autre serveur ( strato.com ) fonctionne parfaitement, url_1 existe, url_2 n'existe pas.

J'ai essayé avec et sans l'option => ini_set ('user_agent', $_SERVER['HTTP_USER_AGENT']); en début de script.

J'ai modifier l'ini_set par toutes les options que j'ai trouvé sur les forums, documentation officiels, etc... et rien ne fonctionne.

Si quelqu'un à une idée elle est la bien venu.
dimanche 10 janvier 2010 à 22:30:56 | Re : Probleme avec la fonction fopen

kohntark

Membre Club

Salut,


[...]url_2 et une page qui n'existe pas.


Oui, mais non.
En fait elle existe, le site renvoie un code 302 (page trouvée) mais redirige sur /404.aspx?aspxerrorpath=/g/logos/normal/azertyuiop.png

pas très respectueux des standards tout ça.

Impossible à détecter donc via fopen, par contre moyennent un strpos voir une regex sur le contenu renvoyé :
<html><head><title>Object moved</title></head><body>

<h2>Object moved to <a href="%2f404.aspx%3faspxerrorpath%3d%2fg%2flogos%2fnormal%2fazertyuiop.png">here</a>.</h2>

</body></html>


Ca devrait le faire.

Cordialement,

Kohntark -

dimanche 10 janvier 2010 à 23:30:55 | Re : Probleme avec la fonction fopen

meltraxxx

Merci pour ton aide.

La situation est pire.

Aucune informations sur la redirection.
Lorsque j'enlève le @, pas de message d'erreur.
Lorsque je demande à afficher le contenu de la page ( qui devrais être celle d'une erreur 404 ) il ni a rien, c'est vide.

Je viens de remarque à l'instant qu'une autre fonction php ne fonctionne pas.

if (checkdnsrr("http://www.google.fr","A")){echo "Google actif !";}else{echo "Google inactif !";}

C'est invraisemblable.
lundi 11 janvier 2010 à 00:17:04 | Re : Probleme avec la fonction fopen

kohntark

Membre Club

Aucune informations sur la redirection.


Heu, sisi, il fait bien une redirection sur l'adresse indiquée plus haut.
Si tu cherches cela via fopen / fread bien évidemment tu ne risques pas de le voir

Lorsque j'enlève le @, pas de message d'erreur.


Quel @ ??
Pourquoi voudrais tu qu'il y ait une erreur ? Le site renvoie un code 302, pas 404.

Lorsque je demande à afficher le contenu de la page ( qui devrais être celle d'une erreur 404 ) il ni a rien, c'est vide.


Peut on voir ton code ? Parce qu'il n'y a pas de raison que ça ne fonctionne pas.


Je viens de remarque à l'instant qu'une autre fonction php ne fonctionne pas.


Qu'est ce qui ne fonctionne pas ? Quel résultat ?
Quelle version de PHP ? Quel OS ?
http://www.google.fr
=>
www.google.fr

Cordialement,

Kohntark -

lundi 11 janvier 2010 à 00:53:26 | Re : Probleme avec la fonction fopen

meltraxxx

En faite l'adresse http n'est qu'un exemple. Je peu prendre n'importe quel URL de n'importe quel site que fopen me répond que l'URL existe.

Le signe @ avant fopen désactive l'erreur en cas d'échec. ( Si l'URL n'existe pas ).

Le code est celui que j'ai fourni plus haut. Une page index.php est le script c'est tout basique.

Cette ligne de code me répond que le site n'existe pas =>

if (checkdnsrr("http://www.google.fr","A")){echo "Google actif !";}else{echo "Google inactif !";}

J'ai tester avec différent sites, c'est toujours la même chose domaine inactif.
lundi 11 janvier 2010 à 05:55:39 | Re : Probleme avec la fonction fopen

kohntark

Membre Club

Le même test effectué sur mon autre serveur ( strato.com ) fonctionne parfaitement, url_1 existe, url_2 n'existe pas.


J'ai dû mal à comprendre pourquoi il renverrait qu'url_2 (http://www.phpcs.com/g/logos/normal/azertyuiop.png) n'existe pas
Etait ce bien avec les mêmes exemples ?
A mon avis, Codes Sources ne renvoi jamais d'erreur 404.

Le signe @ avant fopen désactive l'erreur en cas d'échec[...]
Le code est celui que j'ai fourni plus haut. Une page index.php est le script c'est tout basique.


J'avais bien compris pour le @, mais vu qu'il n'est pas présent dans le script que tu donnais, ni même la partie "affichage" qui ne te retourne rien, je m'interrogeais sur la façon dont tu l'avais mis en oeuvre.

if (checkdnsrr("http://www.google.fr","A")){echo "Google actif !";}else{echo "Google inactif !";}


Je l'ai dit juste avant :

http://www.google.fr
=>
www.google.fr



Remplace donc http://www.google.fr par www.google.fr

... et accessoirement réponds à mes questions :

Quelle version de PHP ? Quel OS ?




Juste pour lever le doute, si tu fais ça :

Code PHP :
<?php
$aUrl = array (
"http://www.fghfhzeazae.fr/",
"http://kohntark.fr/eesqdqsee.jpg",
"http://www.google.fr/images/firefox/firefox.png"
);

foreach ($aUrl as $k=>$url) {
    if (false !== $handle = fopen($url, "rb")) {

        echo 'Ouverture du fichier '.$url.' => OK<br />';
    } else {
        echo 'Ouverture du fichier '.$url.' => Introuvable<br />';
    }
}
?>


Quels sont les messages exacts affichés ??



Kohntark -

lundi 11 janvier 2010 à 08:30:42 | Re : Probleme avec la fonction fopen

meltraxxx

Voici l'adresse du site avec le script original. Le code source apparait avec le résultat.

http://www.datao.be

Le signe @ que je le met ou pas ne change strictement rien.

http://www.google.fr ou www.google.fr m'affiche que google n'existe pas mais je peu remplacer l'URL par n'importe laquelle que le script me dit qu' il n'existe pas.

J'ai ajouter le phpinfo(); sur le site :

PHP Version 5.2.9
Linux serveur.maven2-4.com 2.6.31.5-grsec-xxxx-grs-ipv4-64 #3 SMP Tue Nov 24 16:51:16 UTC 2009 x86_64

Le resultat tel qu'il apparait sur mon site de ton script :

Warning: fopen() [function.fopen]: Couldn't resolve host name in /home/dataobe/public_html/index.php on line 61

Warning: fopen(http://www.fghfhzeazae.fr/) [function.fopen]: failed to open stream: operation failed in /home/dataobe/public_html/index.php on line 61
Ouverture du fichier http://www.fghfhzeazae.fr/ => Introuvable
Ouverture du fichier http://kohntark.fr/eesqdqsee.jpg => OK
Ouverture du fichier http://www.google.fr/images/firefox/firefox.png => OK
lundi 11 janvier 2010 à 08:50:37 | Re : Probleme avec la fonction fopen

meltraxxx

la fonction checkdnsrr semble fonctionner se matin.
lundi 11 janvier 2010 à 17:13:23 | Re : Probleme avec la fonction fopen

kohntark

Membre Club
humm ... bizarre, il y a sans doute une explication simple, mais pour le coup je sèche un peu (mais on va trouver ).

Afin d'avoir plus d'éléments peux tu modifier ta page ainsi (si tu peux laisse uniquement ce code afin de faciliter les tests) :
(en laissant l'affichage des erreurs activé comme c'est déjà le cas)

Code PHP :
<?php
$aUrl = array (
"http://kohntark.fr/eesqdqsee.jpg",
"http://kohntark.fr/cs_test.php"
);

foreach ($aUrl as $k=>$url) {
    if (false !== $handle = fopen($url, "rb")) {
        echo '<hr />Ouverture du fichier '.$url.' => OK<br />';
        var_dump($http_response_header);
        echo '<hr />';
    } else {
        echo 'Ouverture du fichier '.$url.' => Introuvable<br />';
        var_dump($http_response_header);
        echo '<hr />';
    }
}
?>


Ca va permettre de voir avec une précision suffisante les échanges et les résultats de ces derniers (en modifiant de mon côté les réponses envoyées)

Sans y réfléchir plus que ça fopen devrait retourner false si le code renvoyé est 404, et c'est ce que je te renvoie lorsque tu appelles "http://kohntark.fr/eesqdqsee.jpg"
J'ai rapidement fait le test sur 3 config différentes et le résultat est le même.

Je confirme, maintenant que j'ai réellement fait le test avec le code, que ""http://www.phpcs.com/g/logos/normal/azertyuiop.png";" redirige via un 302 et que très logiquement fopen renvoie true.

Cordialement,


Kohntark -

lundi 11 janvier 2010 à 18:37:20 | Re : Probleme avec la fonction fopen

meltraxxx

Bonsoir,

j'ai mis le code en place. Je te laisse juger du résultat.

Merci encore du coup de mains.

1 2 3

Cette discussion est classée dans : url, existe, echo, fopen, com


Répondre à ce message

Sujets en rapport avec ce message

passage d'un tableau dans l'url [ par jbardet ] Bonjour,Je voudrais passer un tablo en parametre de mon url. J'ai trouvé des fonctions pour transformer mon tablo en string mais je dois encore faire gerer les utilisateur [ par hyunkel95 ] bonjour à tousVoila g un petit pb.j'aimerais pouvoir sécurisé mon site en demandant o gens de se logué. Mais pour ce qui ne sont pas inscrit il fo kil Faire passer une variable javascript issue d'un select avec des variables php via l'url [ par ar3a ] Bonjour,Comme l'indique le titre, je voudrais faire passer une variable javascript issue d'un avec des variables php via l'url.J'ai donc fait ce code Comment ouvrir un fichier qui est un url sans fopen ? [ par mifinoufou ] Bonjour, j'aimerais ouvrir un fichier url mais la fonction fopen() ne fonctionne pas car sur le serveur la config allow_url_fopen doit etre à off. Exi Recuperer la source html en faisant rentrer url de cette page [ par Teclis01 ] Voilà tout est dans le topic je vous donne mon code pour vous faire une isée plus precise!<body background="fond.bmp" text="#FFFF00" link="#0000C vérifier si une url existe [ par cz1702 ] Bonjour, j'aimerais vérifier si une url existe comme avec file_exists() pour un fichier comment faire ? Merci ! PHP Version 4. Probleme affichage URL [ par 22max ] Bonjour, Je fais commencer par mettre mon code source : $resultat = mysql_query("SELECT * FROM publicite"); if ($resultat==NULL) {     echo "pas de pu verification de la présence d'un lien [ par seabird ] salut, J'ai un petit problème. En effet j'aimerais vérifier la présence de mon lien sur différents sites. J'essaye de faire ça en PHP. J'ai créé un fi suppression cookie [ par titeuf974 ] Bonjour,Voila. Sur mon site, j'utilise des cookies qui sont définis comme suit :                        $_SESSION['t'] = md5(time());                  Diaporama PHP simple [ par gilloux67 ] Bonjour,j'ai récupérais, le code php pour faire un diaporama, qui affiche le nom de la page ex : http://votresite/diaporama?photo=2  . Le problème


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,920 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales