[PHP] récupérer le code source

récupérer le code source [PHP] - PHP - Programmation

Marsh Posté le 19-09-2006 à 20:45:27    

Salut tout le monde,
J'aimerai savoir quelle méthode peut on utiliser pour récupérer le code source d'une page web dans une variable php.
Merci deme dire si je suis pas clair :pt1cable:  
 :hello:


---------------
http://over-templates.c.la
Reply

Marsh Posté le 19-09-2006 à 20:45:27   

Reply

Marsh Posté le 19-09-2006 à 20:55:53    

hugoOo a écrit :

Salut tout le monde,
J'aimerai savoir quelle méthode peut on utiliser pour récupérer le code source d'une page web dans une variable php.
Merci deme dire si je suis pas clair :pt1cable:  
 :hello:


Cherche sur le manuel php qui est très bien fait. Dans ton cas tu vas sûrement te tourner vers DOM.

Reply

Marsh Posté le 19-09-2006 à 21:04:50    

Salut, moi j'avai pensé a quelque chose de ce type :

Code :
  1. <?php 
  2. function getSource($url) {
  3. $file = fopen ($url,"r" );     
  4. if (!$file) {
  5. return null;
  6. }     
  7. $doc = "";     
  8. while (!feof ($file)) {
  9. $doc .= fgets ($file, 1024);     
  10. fclose($file);     
  11. return $doc; 
  12. }
  13. ?>


est-ce que c'est bon à votre avis?


---------------
http://over-templates.c.la
Reply

Marsh Posté le 19-09-2006 à 21:09:32    

hugoOo a écrit :

Salut, moi j'avai pensé a quelque chose de ce type :

Code :
  1. <?php 
  2. function getSource($url) {
  3. $file = fopen ($url,"r" );     
  4. if (!$file) {
  5. return null;
  6. }     
  7. $doc = "";     
  8. while (!feof ($file)) {
  9. $doc .= fgets ($file, 1024);     
  10. fclose($file);     
  11. return $doc; 
  12. }
  13. ?>


est-ce que c'est bon à votre avis?


Quand tu veux lire un fichier en entier utilises file_get_contents().

Message cité 1 fois
Message édité par CNeo le 19-09-2006 à 21:21:00
Reply

Marsh Posté le 19-09-2006 à 21:17:31    

merci pour les conseils, alors comment est ce que je peut faire pour lire un fichier sur un serveur distant?


---------------
http://over-templates.c.la
Reply

Marsh Posté le 19-09-2006 à 21:34:57    

hugoOo a écrit :

merci pour les conseils, alors comment est ce que je peut faire pour lire un fichier sur un serveur distant?


Essaye ca : ;)

$doc = new DomDocument;
$doc->LoadHTMLFile('Modèle.htm');
$doc->saveXML($doc->getElementsByTagName('html')->item(0));

Reply

Marsh Posté le 19-09-2006 à 21:51:10    

est-ce que tu peut expliquer un peu ton code silteplait :hello:


---------------
http://over-templates.c.la
Reply

Marsh Posté le 19-09-2006 à 22:10:23    

Google aide bien aussi dans ce genre de cas ;)

Reply

Marsh Posté le 20-09-2006 à 09:49:06    

CNeo a écrit :

Quand tu veux lire un fichier en entier utilises file_get_contents().


Biieeeeeennn .....
 

CNeo a écrit :

Essaye ca : ;)

$doc = new DomDocument;
$doc->LoadHTMLFile('Modèle.htm');
$doc->saveXML($doc->getElementsByTagName('html')->item(0));



Pas bieeeeeennnn ...
 
Nan mais la 2eme méthode c'est un peu abusé sans blaguer. Utiliser le DOM pour lire un fichier au secours  [:roane]  

Reply

Marsh Posté le 20-09-2006 à 13:33:15    

anapajari a écrit :

Nan mais la 2eme méthode c'est un peu abusé sans blaguer. Utiliser le DOM pour lire un fichier au secours  [:roane]

Ca fait un fichier plus propre en sortie ;) mais si t'es pas sûr que le page que tu veux lire soit correctement codé il faut faire file_get_contents(). [:airforceone]

Reply

Marsh Posté le 20-09-2006 à 13:33:15   

Reply

Marsh Posté le 20-09-2006 à 13:43:04    

hugoOo a écrit :

est-ce que tu peut expliquer un peu ton code silteplait :hello:


Ce code utilises DOM. Il charge un fichier HTML et le sauvegarde ensuite en respectant les normes XML.

Reply

Marsh Posté le 20-09-2006 à 14:02:20    

Quelqu'un peut t'il me dire clairement comment je dois m'y prendre svp ?


---------------
http://over-templates.c.la
Reply

Marsh Posté le 20-09-2006 à 14:10:25    

hugoOo a écrit :

Quelqu'un peut t'il me dire clairement comment je dois m'y prendre svp ?


On te l'a dit. [:airforceone]

$file=file_get_contents('http://www.exemple.com/page.htm');

Reply

Marsh Posté le 20-09-2006 à 14:29:42    

oui mais j'obtient cette erreur :

Citation :


Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration


---------------
http://over-templates.c.la
Reply

Marsh Posté le 20-09-2006 à 15:20:20    

hugoOo a écrit :

oui mais j'obtient cette erreur :

Citation :


Warning: fopen() [function.fopen]: URL file-access is disabled in the server configuration



Pourquoi tu veux faire fopen() ? Fais juste file_get_contents(). Et apprends à lire la doc. [:airforceone] En plus elle est en français ...

Reply

Marsh Posté le 20-09-2006 à 15:33:12    

n'empeche que j'ai toujours la même erreur... le serveur n'est pas configuré pour.


---------------
http://over-templates.c.la
Reply

Marsh Posté le 20-09-2006 à 15:37:41    

T'es en local ? Si non, c'est quoi ton hébergeur ?

Reply

Marsh Posté le 20-09-2006 à 19:15:37    

là je suis pour ifrance mais le script est déstiné à tourner sur un serveur de bonne qualité, j'ai demandé a l'administrateur de faire des tests!


---------------
http://over-templates.c.la
Reply

Marsh Posté le 20-09-2006 à 20:05:36    

j'ai fait un test avec fsockopen mais je ne sais pas trop comment utiliser la fonction, mon code est il juste? :

Code :
  1. <?php
  2. $source = fsockopen('http://www.webcarcenter.com/occasion/bmw/x3/1988624.html');
  3. $source = file_get_contents($source);
  4. echo $source;
  5. ?>


---------------
http://over-templates.c.la
Reply

Marsh Posté le 20-09-2006 à 20:09:56    

hugoOo a écrit :

j'ai fait un test avec fsockopen mais je ne sais pas trop comment utiliser la fonction, mon code est il juste? :

Code :
  1. <?php
  2. $source = fsockopen('http://www.webcarcenter.com/occasion/bmw/x3/1988624.html');
  3. $source = file_get_contents($source);
  4. echo $source;
  5. ?>



On t'a dit de regarder la doc ...

Reply

Marsh Posté le 20-09-2006 à 21:46:17    

je l'ai regardé la doc, et c'est en regardant la doc que j'ai écrit ce code..


---------------
http://over-templates.c.la
Reply

Marsh Posté le 20-09-2006 à 22:45:12    

hugoOo a écrit :

là je suis pour ifrance mais le script est déstiné à tourner sur un serveur de bonne qualité, j'ai demandé a l'administrateur de faire des tests!


 
 :lol:
 

Code :
  1. $html = file_get_contents("http://www.lemonde.fr" );


Message édité par supermofo le 20-09-2006 à 22:46:32
Reply

Marsh Posté le 21-09-2006 à 19:10:26    

c'est quoi la vanne là ?


---------------
http://over-templates.c.la
Reply

Marsh Posté le 21-09-2006 à 19:29:06    

hugoOo a écrit :

je l'ai regardé la doc, et c'est en regardant la doc que j'ai écrit ce code..


file_get_contents() ouvre le fichier, le lit et le referme et que donc il n'y a pas besoin fsockopen()

Reply

Marsh Posté le 21-09-2006 à 20:38:19    

Oui, un appel à file_get_contents() avec comme paramètre l'url doit suffire.
 
Par contre, vu ce que tu as écrit précédemment, si l'accès à des fichiers distants est interdit chez ifrance (comme chez 1and1 avec php5), tu risques de devoir forcément utiliser la fonction fsockopen() (et les fonctions de lecture/fermeture des E/S).
Ce qui est un peu plus long.
 
Mais le mieux serait quand même que tu développes en PHP selon la version installée sur le serveur pro. Pourquoi ? Tu sembles débuter en PHP et mieux vaut commencer par faire simple (soit faire des scripts php adaptés à la machine sur laquelle ils doivent tourner).
 
Aussi, si cette fonctionnalité concernant les fichiers distants est activée, c'est en partie pour éviter que des programmeurs en herbe se fassent avoir avec la célèbre faille include...

Reply

Marsh Posté le 21-09-2006 à 21:03:25    

en faite sur le seveur "pro", l'accès à des fichiers distants est interdit aussi donc il faut bien que je passe par fsockopen(), quelqu'un pourrait m'éclairer un peu plus sur le fonctionnemment de cette fonction.
 
ça fait bien longtemps que je me fais plus avoir avec les include quand même^^
 
EDIT : je vien de tester ce code :

Code :
  1. <?php
  2. $inF = fsockopen($url) or die('fsockopen interdit');
  3. while (!feof($inF)) {
  4. echo fgets($inF);
  5. }
  6. fclose($inF);
  7. ?>


 
Et la horreur :::  
fsockopen interdit

Message cité 1 fois
Message édité par hugoOo le 21-09-2006 à 21:05:18

---------------
http://over-templates.c.la
Reply

Marsh Posté le 22-09-2006 à 08:13:02    

[:haha]
 
au cas ou avant de developper pour un serveur que tu ne peux pas configurer toi meme ca vaut toujours le coup de faire un petit phpinfo  
ca evite ca genre de mauvaises surprises
http://jdnetdev.ifrance.com/phpinfo.php
 
allow_url_fopen Off
donc c est mort

Reply

Marsh Posté le 22-09-2006 à 21:52:42    

oui mais le serveur sur lequel devra tourné le script est un serveur dédié et l'administrateur peut donc modifier la configuration (enfin normalement)


---------------
http://over-templates.c.la
Reply

Marsh Posté le 23-09-2006 à 01:59:14    

hugoOo a écrit :

oui mais le serveur sur lequel devra tourné le script est un serveur dédié et l'administrateur peut donc modifier la configuration (enfin normalement)


S'il est dédié oui il pourra, à toi de te demander s'il vaut mieux pourvoir le faire ou faire autrement :??:
 

Reply

Marsh Posté le 23-09-2006 à 10:26:28    

hugoOo a écrit :

en faite sur le seveur "pro", l'accès à des fichiers distants est interdit aussi donc il faut bien que je passe par fsockopen(), quelqu'un pourrait m'éclairer un peu plus sur le fonctionnemment de cette fonction.
 
ça fait bien longtemps que je me fais plus avoir avec les include quand même^^
 
EDIT : je vien de tester ce code :

Code :
  1. <?php
  2. $inF = fsockopen($url) or die('fsockopen interdit');
  3. while (!feof($inF)) {
  4. echo fgets($inF);
  5. }
  6. fclose($inF);
  7. ?>


 
Et la horreur :::  
fsockopen interdit


 
 
Ouuuuhlala, ça marche pas comme ça la récupération de page avec fsockopen.  :non:  
Il faut :  
1. ouvrir le socket
2. envoyer la requête http
3. récupérer la réponse
 
Un exemple qui permet de récupérer la page /index.php:
 
 $socket=@fsockopen('www.php.net',80,$errno, $errstr, 5);
   
 if ($socket){
            $out = "GET /index.php HTTP/1.1\r\n";
     $out .= "Host: www.php.net \r\n";
     $out .= "Connection: Close\r\n\r\n";
     fwrite ($socket, $out);
   
     $data=""; while(!feof($socket)) $data.=fgets ($socket,1024);
     fclose($socket);
 }
 
Pour une page en ssl tu fais précéder l'adresse dans fsockopen par 'ssl://'
 
 
Et là attention, il te faudra encore virer les headers HTTP de la réponse.
 
En ce qui concerne l'autorisation d'utiliser fsockopen par ton hébergeur, je pense que tout dépend... de l'hébergeur.
Je suis chez 1and1 qui n'autorise fsockopen que vers les ports 80,8080,443 et >1024...


Message édité par nicobru le 02-10-2006 à 15:44:54
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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