Lire une page web

Petit nouveau ! | 2 Messages

30 janv. 2008, 14:23

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

30 janv. 2008, 15:08

Modération :
Afin d'obtenir plus de réponses, le sujet est déplacé dans le forum "Débuter en PHP".

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 445 Messages

30 janv. 2008, 15:15

Oui cela est possible avec fopen()

Petit nouveau ! | 2 Messages

30 janv. 2008, 17:10

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
Modifié en dernier par alain62 le 30 janv. 2008, 17:23, modifié 1 fois.

Eléphant du PHP | 445 Messages

30 janv. 2008, 17:22

Il faut lire la page Web avec fopen()/fgets() puis trouver la ligne ou se trouve les infos du joueur.

Petit nouveau ! | 3 Messages

03 févr. 2008, 00:52

Bonsoir,
Et quand le site distant interdit le fopen y'a une autre solution ? :cry:

Eléphant du PHP | 445 Messages

03 févr. 2008, 01:35

Le site distant ne peux pas interdire le fopen() directement.

Quel est l'erreur ou le comportement anormal ?

Petit nouveau ! | 3 Messages

03 févr. 2008, 18:33

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.

Eléphant du PHP | 445 Messages

03 févr. 2008, 23:20

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");

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

04 févr. 2008, 00:00

Bonjour,

En une ligne tu peux utiliser également la fonction file_get_contents():
print file_get_contents("http://www.winamax.com/poker/index.php");
Quand tout le reste a échoué, lisez le mode d'emploi...

Petit nouveau ! | 3 Messages

05 févr. 2008, 17:27

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 ?

Eléphant du PHP | 445 Messages

05 févr. 2008, 18:32

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.";
}

?>

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

05 févr. 2008, 22:59

Demande à ton hébergeur, tu le payes pour ça et ton code est correct...
Quand tout le reste a échoué, lisez le mode d'emploi...