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 ?

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
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...