Récupération de données sur serveur privée

Eléphant du PHP | 169 Messages

17 sept. 2008, 11:38

Tu n'as pas une option d'affichage qui te mettrais tout sur une page ?

Parce que 700 pages comme tu dit c'est une méthode d'affichage, dans l'absolu tu peux mettre dans une même page.

Et sinon, si chacune de tes pages se nomment xxxx?id=23 tu peux toujours faire une boucle avec en variable la partie id :wink:

Djérome
Invité n'ayant pas de compte PHPfrance

17 sept. 2008, 14:04

Non, aucun moyen, sinon j'aurai imprimer la page, et on serait débrouillé avec.

Ca, c'est géré au niveau PHP je pense, la page sélectionne 10 requètes, puis 10 la page suivante, etc etc...

Par contre, j'ai bien un lien, d'où mon poste précédent, avec un changement d'id. J'ai donc réalisé ma boucle for, sans problème, mais j'ai les problèmes de connexion... :(

Jérôme

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 sept. 2008, 15:07

La seule solution que je vois en PHP alors est d'utiliser cURL couplées à des expressions régulières.

Vu que tu as déjà essayé cURL mais que tu rencontres un problème d'identification, c'est que tu ne l'utilises pas correctement.
Donne nous le code PHP que tu utilises pour que l'on puisse voir ce que tu pourrai avoir oublié.
Quand tout le reste a échoué, lisez le mode d'emploi...

Djérome
Invité n'ayant pas de compte PHPfrance

17 sept. 2008, 16:39

Merci arthur pour ta réponse,

Il n'y a pas de problème pour le code PHP :
<?php
/* Partie Création de cookie */
//setcookie ("login","contenu",(date()+3600));

/* Partie Curl */
for ($i=0;$i<697;$i++) {
	$ch = curl_init();
	$timeout = 5;
	curl_setopt($ch, CURLOPT_URL, 'www.monsite.com/admin/client.asp?id=115');
	curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
	curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
	$file_contents = curl_exec($ch);
	curl_close($ch);
	$lines = array();
	$lines = explode("\n",$file_contents);

	foreach($lines as $line_num => $line) {
		echo "Line # {$line_num} : ".htmlspecialchars($line)."<br/>\n";
	}
}
?>
Le script fonctionne, mais je m'éloigne de mon idée initiale. D'où mon intervention ici. Si le script pouvait me retourner un tableau, où un affichage le plus simple possible pour que je puisse réenregistrer ces données directement dans une Bdd.

Merci pour vos aides.
Jérôme

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

17 sept. 2008, 17:05

Le script fonctionne, mais je m'éloigne de mon idée initiale. D'où mon intervention ici. Si le script pouvait me retourner un tableau, où un affichage le plus simple possible pour que je puisse réenregistrer ces données directement dans une Bdd.
Ton script curl fonctionne, c'est à dire que tu récupères bien le code source des pages et dans ce code source les infos que tu veux récupérées?

Si c'est le cas, alors il faut que tu mettes en place une expression régulière pour ne conserver que les infos intéressantes et ensuite tu pourras présenter ces infos sous la forme que tu veux (tableaux HTML ou même réinsertion directe dans une nouvelle base de données sous ton contrôle).

Si tu ne récupères pas le code source HTML avec les infos de tes clients dedans, alors c'est que ton script cURL ne fonctionne pas correctement et qu'il faut le corriger.
Quand tout le reste a échoué, lisez le mode d'emploi...

Djérome
Invité n'ayant pas de compte PHPfrance

18 sept. 2008, 19:58

Bonsoir,

Désolé du temps de réponse, j'ai pas eu le temps de me remettre sur le problème aujourd'hui.

Pour répondre à ta question arthur, oui mon script fonctionne, avec google, ou n'importe quel site, je récupère bien le code source.

Maintenant, sur le site en question, mon script me retourne la page "access denied". Donc mon script, même si l'url est complète, reste bloqué à la page d'authentification.
Sinon pour récupérer les données, je vois pas comment faire en PHP, tu utiliserais un parseur DOM ? Ou SAX ?

Merci pour vos aides

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

18 sept. 2008, 20:27

sur le site en question, mon script me retourne la page "access denied". Donc mon script, même si l'url est complète, reste bloqué à la page d'authentification.
Donc ton script cURL ne fonctionne pas ;-)

Donc la première chose à faire c'est de trouver comment s'effectue l'identification:
:arrow: Est-ce une boite de dialogue système qui s'ouvre pour te demander un login et mot de passe ou est-ce un simple formulaire HTML?
- Dans le premier cas, supprime tes cookie, redémarre ton navigateur et essaye d'accéder à ta page avec l'url http://TON_LOGIN:[email protected]/admin. Si tu y arrives sans qu'ils te demandent d'autre mot de passe, alors c'est génial et il faudra alors que tu utilises une url sous cette forme dans curl- Dans le second cas, c'est plus complexe, il faut dans la même session curl d'abord t'identifier et ensuite demander la page avec les infos clients.
Voila pour le principe, pour le mettre en oeuvre, il existe un paquet d'exemple sur Google:
http://devzone.zend.com/node/view/id/1081
http://www.google.fr/search?q=curl+http+identification
Sinon pour récupérer les données, je vois pas comment faire en PHP, tu utiliserais un parseur DOM ? Ou SAX ?
Hummm ni l'un, ni l'autre.
Personnellement un coup de preg_match() (ou de preg_match_all() si tu as plusieurs clients sur la même page) avec une bonne expression régulière et ça devrait faire le truc.
Quand tout le reste a échoué, lisez le mode d'emploi...

Djérome
Invité n'ayant pas de compte PHPfrance

19 sept. 2008, 09:18

Bonjour @rthur,

Alors, le premier lien, http://login:[email protected] ne fonctionne pas, mozilla me change le lien, et IE m'affiche une page non valide.

Je regarde les liens que tu m'as donné, et je vous tiens au courant
Jérôme

Djérome
Invité n'ayant pas de compte PHPfrance

19 sept. 2008, 15:20

Bon, y'a un truc qui va pas, maintenant, j'ai un accès denied.

J'ai pourtant bien rajouté les informations necessaires...

Quand je m'identifie, je suis à la page : www.monsite.com/admin
Quand je valide le formulaire d'identificatio, je me retrouve à l'adresse suivante : www.monsite.com/admin/client.asp.

Qui gère la redirection ? Curl, ou moi ?

Désolé si mes questions paraissent idiotes.
Jérôme

Djérome
Invité n'ayant pas de compte PHPfrance

20 sept. 2008, 18:33

UP :)

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

20 sept. 2008, 19:37

Si tu as un "access denied" c'est que tu ne fais pas correctement ton identification via curl.

Fait un peu de recherche pour apprendre comment utiliser cURL, il y a déjà pas mal de ressources sur le web :
http://dragibus999.blogspot.com/search/label/curl
http://enaresh.com/2008/09/01/curl-tuto ... with-curl/
http://www.oooff.com/php-scripts/basic- ... torial.php
http://www.higherpass.com/php/Tutorials ... e-Servers/
http://www.phpgfx.com/article.php?action=read&id=32
Quand tout le reste a échoué, lisez le mode d'emploi...