[PHP] Récuperer une chaine dans une page

Fermé
Kicko - 18 févr. 2010 à 17:36
 pfff - 2 févr. 2012 à 03:37
Bonjour,

Alors je tiens tout d'abord à dire que j'ai fait beaucoup de recherches, j'ai trouvé des réponses mais tout mes tests n'ont pas fonctionné.
Une page me donne une phrase avec un code dedans, et je souhaite récupérer cette donnée sur cette page (d'un site externe).

J'ai donc tout testé, j'ai vu "essaye fopen('www...');" ou file_get_content, fsockopen..
Donc j'ai testé comme ça :
$infos = fopen('www.lesite.com');
echo $infos
(pour voir ce que ça allait me renvoyer, si ça fonctionnait), et même avec les autres fonctions, rien ne marche.

C'est quoi le problème ? =(
De plus, je voudrais récuperer un code précis (des chiffres), et donc utiliser une regex. J'ai déjà lu des dossiers sur les regex sur le SDZ mais pour récuperer ce code dans la phrase, je sais pas comment m'y prendre =s.
Mais je ne me suis pas encore penché vraiment dessus, par rapport a l'ouverture des fichiers. Donc ce dernier m'importe le + =).

Merci d'avance
Bonne soirée !
A voir également:

19 réponses

Pas bien de faire ça en publique...non respect a NC :(
2
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
18 févr. 2010 à 17:39
Pour l'ouverture de fichiers personnellement quand je dois analyser des pages extérieurs j'utilise :
$page = file_get_contents("http://www.lesite.fr");
qui marche a merveille...

A quoi ressemble ton code de chiffres ?

EDIT : Cette fonction te renvoie tout le contenu de la page, en un coup. Tu peux faire un echo directement dessus.
0
Heu, c'est une phrase du style "Le code est 2552642".
Je veux récupérer juste les chiffres, en ouvrant la page et en choisissant uniquement des chiffres à l'aide d'une expression régulière (regex).

Et donc dans un premier temps je tentais d'ouvrir la page avec un file_get_content, et d'afficher le renvoi avec echo $page. Mais ça ne fonctionne pas :s
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
18 févr. 2010 à 18:48
Si, avec un "s" à la fin de content -_-'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Oui oui j'ai mis le s dans mon code aussi (parce que j'ai remarqué que tu as écris un s), et j'ai pensé que ça allait fonctionner mais ça renvoit rien du tout..
<?php
$renvoi = file_get_contents("https://www.newbiecontest.org/epreuves/prog/prog1.php");
echo $renvoi;
?>

Et que dalle ^^' (J'ai aussi essayé avec de simple apostrophes).
Je précise aussi que je suis un hebergeur gratuit (multimania), juste pour ces tests.
Normal que ça marche pas ? Parce qu'en local ça avait pas l'air de fonctionner non plus..
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
18 févr. 2010 à 19:04
xD Si tu fais le newbie contest, cette méthode te servira à rien pour cette page je suppose, atta je vais voir :)
0
En fait j'ai quelques connaissances en PHP (enfin pas mal même..) mais j'ai jamais utiliser ces fonctions, sauf fopen mais sur un fichier sur mon pc (en local), et pour écrire dedans, et ça fonctionnait..

Étant donné que t'as l'air de connaitre newbiecontest, je précise que je voudrais juste de l'aide pour ouvrir la page et savoir comment récupérer les données, puisque j'ai une petite idée de comment faire pour renvoyer le nombre qu'on a récupéré. (Puis le but c'est de chercher =p ).

Et puis après plusieurs recherches, je pensais qu'il fallait utiliser ces fonctions, donc si t'as une piste.. =p
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
18 févr. 2010 à 19:11
Mouais cette épreuve à l'air super facile avec file_get_contents, c'est étrange que ca ne marche pas chez toi -_-'
0
Je pensais faire comme ça :
-Renvoyer la page avec file_get_contents
-Prendre que le nombre grâce a une regex et le stocker dans une variable
-Faire un lien vers la deuxième page où il faut renvoyer le nombre sous forme "solution=nombre" a la fin, donc écrire "solution=variable_ici"..

Ca me paraissait pas trop compliqué mais c'est bizarre que ça fonctionne pas ^^'.
Je vais attendre d'autres réponses (ou d'autres idées si tu as =p), et si vraiment j'y arrive pas, je ferais plein de test week-end et encore d'autres recherches.. ^^'
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
18 févr. 2010 à 19:19
Bon j'ai passé la première étape avec ca :

<?php
$page = file_get_contents("https://www.newbiecontest.org/epreuves/prog/prog1.php");
$nombre = str_replace("Le nombre aléatoire pour valider ta réponse est : ", "", $page);
echo file_get_contents("https://www.newbiecontest.org/epreuves/prog/verifpr1.php?solution=" . $nombre);
?>

De toute façon c'est ce que tu allais faire (la REGEX c'est souvent pas la peine)

Moi aussi j'ai eu des problèmes avec la fonction, mais maintenant ca marche, comprends pas pourquoi -_-'
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
18 févr. 2010 à 19:21
Il me dit
Attention, vous n'êtes pas loggué !

Vous devez faire suivre votre session à l'exécution de ce script

C'est quoi ce délire ?...
0
Ah c'est possible que si tu viens d'un lien que tu as fais (de ton script), il te considère pas comme membres.. Peut-être qu'il faut faire un rapport avec les cookies ou le site d'où tu viens. Je sais pas là =/
0
Désolé du double post mais c'est pour préciser :
J'ai réaliser l'épreuve en local, et ça me met aussi "Attention, vous n'êtes pas loggué !
Vous devez faire suivre votre session à l'exécution de ce script".
Donc bonne nouvelle : j'ai réussi a faire le renvoi.. Donc c'est bon.

Maintenant je pense qu'il faut où créer un cookies ou alors mettre son PHPSESSID dans son lien pour renvoyer la réponse.
En attendant, je file manger.

Merci de l'aide en tout cas =)
Je te tiens au courant si j'ai réussi ^^
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
18 févr. 2010 à 19:49
Pour lui faire croire qu'on est connecté, ca doit fonctionner par requête HTTP genre :

<?php
header('Content-Type: text/plain');
 
$name = 'www.newbiecontest.org';
 
$data = '';

$envoi  = "POST /epreuves/prog/prog1.php HTTP/1.1\r\n";
$envoi .= "Host: ".$name."\r\n";
$envoi .= "Connection: Close\r\n";
$envoi .= "Content-type: application/x-www-form-urlencoded\r\n";
$envoi .= "Content-Length: ".strlen($data)."\r\n\r\n";
$envoi .= $data."\r\n";
$envoi .= "Cookie : PHPSESSID=c6bf4294c456f917fbbe4b20affbb;\r\n\r\n";

$socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
if($socket < 0){
        die('FATAL ERROR: socket_create() : " '.socket_strerror($socket).' "');
}
 
if (socket_connect($socket,gethostbyname($name),80) < 0){
        die('FATAL ERROR: socket_connect()');
}

if(($int = socket_write($socket, $envoi, strlen($envoi))) === false){
        die('FATAL ERROR: socket_write() failed, '.$int.' characters written');
}

$reception = '';
while($buff = socket_read($socket, 2000)){
   $reception.=$buff;
}
echo $reception;
 
socket_close($socket);
?>


Ce code marche pas :), je te laisse chercher.
J'vais aussi manger !!
0
Après consultation du forum d'aide pour cette épreuve de NC, j'ai vu qu'on pouvait utiliser des plug-ins Firefox (rejouer entêtes HTTP, ou editer les cookies, altérer les données.. donc cookies aussi).
J'ai tout essayer mais ça me considère toujours pas logguer..

Je fais une pause pour ce soir, quelque chose d'autre à faire.
Mais je m'y remettrais lol.

Merci pour ton aide !
0
Blocks Messages postés 98 Date d'inscription mardi 28 juillet 2009 Statut Membre Dernière intervention 31 janvier 2011 3
19 févr. 2010 à 02:10
Erf pour l'info, je viens de retourner voir pour le script newbie contest.

C'est résolue :). Intéresses toi aux requêtes HTTP, elles seules permettent d'envoyer des cookies à un site pour faire croire que tu es connecté.
Ma méthode n'a pas marché du premier coup, tout simplement car nc considère que tu es connecté à la seule condition de recevoir les 3 cookies du site.

J'te laisse t'amuser <3.
0
Je remonte juste pour préciser que j'ai enfin réussi.
Je me trompais de fichier quand je le modifiais, en fait j'avais réussi depuis le début lol..
Donc quand j'ai remarqué que je me trompais de fichier, ça s'est réglé de suite ^^

Merci pour l'aide
0
@Kicko : Je sais que ça fait longtemps, je ne sais pas si tu verra mon message, mais il se trouve, que nous sommes dans la même galère, enfin toi, aujourd'hui, tu as réussis à t'en sortir, mais moi, toujours pas. J'ai du codé au moins une vingtaines de pages différentes, pour voir où était le problème, mais rien à faire. J'ai utilisé les socket() en php, les header(), les $_SESSION, les $_COOKIE, etc.. Toujours la même réponse. C'est désespèrent, surtout que la suite a l'air intéressante. Je ne souhaite pas avoir la réponse, mais qu'a tu fais de différent pour que ça marche ? Voila, j'espère que tu verra mon message :/
Cordialement, cocopops
0
tg toi
-1