Page 1 sur 1

Lire une page web

Posté : 30 janv. 2008, 14:23
par alain62
Bonjour,

voilà le problème :
J'aurais besoin de prendre des informations (statistiques de jeu) sur un site web.

Peut-on lire une page web, la mettre dans une variable, que je puisse ensuite en tirer les informations nécessaires ?

Merci beaucoup pour votre aide..
Cordialement

@lain

Posté : 30 janv. 2008, 15:08
par Truc
Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Débuter en PHP".

Posté : 30 janv. 2008, 15:15
par h0_noMan
Oui cela est possible avec fopen()

Posté : 30 janv. 2008, 17:10
par alain62
Avec votre aide, j'ai trouvé :
$filename = "http://la page web";
$handle = fopen ($filename, "rb");
while (!feof($handle)) {
$contents .= fread($handle, 8192);
}

fclose ($handle);
Merci beaucoup

Posté : 30 janv. 2008, 17:22
par h0_noMan
Il faut lire la page Web avec fopen()/fgets() puis trouver la ligne ou se trouve les infos du joueur.

Posté : 03 févr. 2008, 00:52
par Pax24
Bonsoir,
Et quand le site distant interdit le fopen y'a une autre solution ? :cry:

Posté : 03 févr. 2008, 01:35
par h0_noMan
Le site distant ne peux pas interdire le fopen() directement.

Quel est l'erreur ou le comportement anormal ?

Posté : 03 févr. 2008, 18:33
par Pax24
Ah ben pourtant si...
J'ai un script pour récupérer l'agenda de tournois de poker qui marchait et depuis une semaine :

Code : Tout sélectionner

$test = fopen('http://www.winamax.com/poker/index.php', 'r');
Warning: fopen(http://www.winamax.com/poker/index.php) [function.fopen]: failed to open stream: Connection timed out

J'ai bien sûr testé depuis un autre serveur et autre IP au cas où mais idem.

Posté : 03 févr. 2008, 23:20
par h0_noMan
Je viens de tester et je recupere bien leur site.

Mon code :
<?php

$handle = fopen("http://www.winamax.com/poker/index.php","r");

if ($handle)
{
	while (!feof($handle))
	{
        $buffer = fgets($handle, 4096);
        echo "<!-- ".$buffer."\n" ;
	}
	
	fclose($handle);
}

?>
Edit : Verifie que allow_url_fopen est bien a 1.
echo "allow_url_fopen : ".ini_get("allow_url_fopen");

Posté : 04 févr. 2008, 00:00
par @rthur
Bonjour,

En une ligne tu peux utiliser également la fonction file_get_contents():
print file_get_contents("http://www.winamax.com/poker/index.php");

Posté : 05 févr. 2008, 17:27
par Pax24

Code : Tout sélectionner

Warning: fopen(http://www.winamax.com/poker/index.php) [function.fopen]: failed to open stream: Connection timed out on line 2 allow_url_fopen : 1
:? :cry:
Mon serveur est sur OVH mais j'ai essayé aussi depuis un hébergement free.fr et là ça marche... Autrement dit est-ce que le site peut avoir en quelque sorte blacklisté l'IP de mon serveur OVH ?

Posté : 05 févr. 2008, 18:32
par h0_noMan
Fais un essai avec fsockopen() et un proxy.
Puis tu testeras sans le proxy pour voir si il t'a bloque.
<?php

// Header
header("Content-type: text/plain;charset=ISO-8859-1"); 

// Parametre du proxy
$proxy_ip   = "xxx.xxx.xxx.xxx" ;
$proxy_port = "80" ;

// On cree la Socket avec proxy
$socket = fsockopen($proxy_ip,$prox_port,$errno,$errstr,30);

// On cree la Socket sans proxy
// $socket = fsockopen("www.winamax.com",80,$errno,$errstr,30);

// Le CRNL
$CRNL    = "\r\n" ;

// On cree l'entete HTTP
$entete  = "GET poker/index.php HTTP/1.0".$CRNL ;
$entete .= "Host: www.winamax.com".$CRNL ;
$entete .= "Connection: close".$CRNL ;
$entete .= $CRNL ;

if($socket)
{
    // On envoie la Socket
    fwrite($socket,$entete);

    while(!feof($socket))
    {
        $line = fgets($socket);
        echo $line ;
    }

    // on ferme la Socket
    fclose($socket);
}else{
    echo "Proxy non disponible.";
}

?>

Posté : 05 févr. 2008, 22:59
par @rthur
Demande à ton hébergeur, tu le payes pour ça et ton code est correct...