[PHP] fsockopen et fopen (Free et Multimania) - page web distante

fsockopen et fopen (Free et Multimania) - page web distante [PHP] - Programmation

Marsh Posté le 30-01-2002 à 16:52:10    

bonjour,
je me sers actuellement, sur free.fr, de la fonction fsockopen
pour ouvrir une page web a distance et integrer son contenu sur mon site, mais j'ai 2 petits "pb" avec le code suivant:
 
$fp = fsockopen("books.dreambook.com", 80, &$errno, &$errstr, 60);
if(!$fp) {
 echo "$errstr ($errno)<br>\n";
} else {
 fputs($fp,"GET /malleusmaleficarum/forum.html HTTP/1.0\n\n" );
 while(!feof($fp)) {
                          echo fgets($fp,15000);
 }
 fclose($fp);
}
 
donc il m'affiche la page que je veux, pas de pb mais au debut
de cette page il met l'entete Http:
HTTP/1.1 200 OK Date: Wed, 30 Jan 2002 15:48:15 GMT Server: Apache/1.3.19 (Unix) mod_gzip/1.3.19.1a mod_ssl/2.8.1 OpenSSL/0.9.4 PHP/4.0.6 Last-Modified: Tue, 29 Jan 2002 02:01:40 GMT ETag: "20099f-2ada1-3c560284" Accept-Ranges: bytes Content-Length: 175521 Connection: close Content-Type: text/html  
 
et je trouve pas le moyen de la virer !
 
Sinon, pour information, qd j'etais sur Multimania, vu qu'il n'autorise pas le fsockopen, je faisais un fopen, et donc pouvais
afficher seulement les choses qui m'interessait (c'etait moins rapide mais j'avais plus de pub sur mon dreambook :), avec le code suivant:
 
$fp = fopen("http://books.dreambook.com/malleusmaleficarum/forum.html","r" );  
while (!feof($fp)) {  
$page .= fgets($fp, 1);  
}  
$titre = eregi("</center>(.*)<table>",$page,$regs);  
echo $regs[1];  
 
 
Donc en fait j'aimerais me servir de eregi avec un fsockopen, comme ça , ça reglerait d'un coup ces 2 pb, mais je ne vois pas
comment faire en fait :)...
 
Merci d'avance pour votre aide !

Reply

Marsh Posté le 30-01-2002 à 16:52:10   

Reply

Marsh Posté le 30-01-2002 à 17:10:02    

heu....personne n'a ne serait ce qu'une ebauche de solu° a me proposer ? plz ?  :pt1cable:  
au fait, pour info Free ne fait pas fopen mais fsockopen
et Multimania inversement.

Reply

Marsh Posté le 30-01-2002 à 18:46:47    

Disconect a écrit a écrit :

heu....personne n'a ne serait ce qu'une ebauche de solu° a me proposer ? plz ?  :pt1cable:  
au fait, pour info Free ne fait pas fopen mais fsockopen
et Multimania inversement.  




 
Si chez Free tu peux utiliser fopen() (en PHP3 et 4) !!!
 
 
Pour ton problème tu peux attendre d'atteindre la première balise HTML pour récupérer le contenu...
 
$contents = fgets($fp,512);
       
while(preg_match("/^[^<]+$/",$contents,$reg))
{
         $contents = fgets($fp,512);
}
 
while(!feof($fp))
{
 $h_html .= fgets($fp,512); //Ta page HTML
}
       
fclose($fp);
 
A développer...

Reply

Marsh Posté le 30-01-2002 à 19:04:22    

merci pour ta reponse, mais je t'assure que le script avec fopen ne fonctionne pas sur free, il ne m'affiche rien du tout, c bizarre !  
sinon, suis en train d'essayer de me servir de ta methode,mais
je ne comprend pas vraiment tout ce qu'elle fait ...

Reply

Marsh Posté le 30-01-2002 à 19:09:07    

suffit que tu stockes le contenue de la page dans une var et tu la tritures pour virer les X eres lignes ..

Reply

Marsh Posté le 30-01-2002 à 20:20:40    

ouais ok, mais comment on fait en fait...  
Bon sinon, je pense que je vais faire mon propre guestbook en php à la dreambook. Vous en pensez quoi ? sachant que je suis chez Free, l'acces SQL ne sera pas trop long ? (les acces actuels que je fait ne sont que pour environ 100 enregistrements,
tandis que là pour le guestbook ce sera plus du double , idem  
pour le contenu des champs, etc...) c'est gerable ?
 
merci d'avance  :hello:

Reply

Marsh Posté le 30-01-2002 à 22:54:33    

Disconect a écrit a écrit :

ouais ok, mais comment on fait en fait...  




 
Tu utilises le code que je t'ai donné, ta page est dans la variable $h_html...
 
Sinon, entre 100 enregistrements ou 1000, voir 10000 si tu te demerde bien à la construction de tes tables et de tes requêtes cela ne change pas grand chose. Le problème de Free est tout autre, d'abord c'est du CGI, ce qui implique que tu ne peux pas faire de connexions permanentes sur MySQL (tu te reconnectes à chaque fois que tu exécutes une requête = perte de temps) et les serveurs sont plus ou moins en charge.

Reply

Sujets relatifs:

Leave a Replay

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