cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009
-
8 mai 2005 à 11:32
lapin-math
Messages postés2Date d'inscriptionmercredi 18 septembre 2013StatutMembreDernière intervention28 novembre 2013
-
18 sept. 2013 à 23:50
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
lapin-math
Messages postés2Date d'inscriptionmercredi 18 septembre 2013StatutMembreDernière intervention28 novembre 2013 18 sept. 2013 à 23:50
C'est bien mais in peut faire mieux surtout que les hébergeurs n'autorisent pas l'ouverture de fichiers par le protocole HTTP. Ce que je dire, c'est l'ouverture de fichier que tu fais qui me dérange. À la place, je te conseille cURL, même si c'est un peut plus lourd que ton implépentation... Tu peux te renseigner sur l'utilisation de cette library qui est superbement cool (on peut faire des GET, POST, PUT et d'autres commandes HTTP exotique)
Sinon, ton script est bien mais l'ouverture par url n'est pas forcément autorisé
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 21 déc. 2005 à 14:53
Malheureusement cela ne fonctionne pas. Le soucis viens du texte que je recherche qui contient des caratères inerpretté par PHP qui ferme la chaine avant la véritable fin :
Si je recherche que :
XbcProfileTableContainer
ca ne fonctionne pas quand même car il m'efface alors :
<div class="
Du coup cela coince quand je restitutue la variable avec le echo.
comment faire ?
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 21 déc. 2005 à 09:48
jonak, ma dèrnière source traite à peu près de ça : mise en page de sudoku...
$a=file_get_contents('monfichier');
le include est dangereux, car si l'autre page affiche du code php, alors ce code sera exécuté...
cs_jonak
Messages postés4Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention17 janvier 2006 21 déc. 2005 à 07:01
bonjour,
J'aimerai pouvoir stocker dans une variable le code source d'une page se trouvant sur un autre site afin de pouvoir utiliser une partie du code dans une page de mon site en dynamique.
Une fois récupéré dans la variable je sais faire le netoyage du code pour ne garder que la partie qui m'est utile et ainsi afficher une partie des informations du dit site.
Le but étant d'apporter l'information d'un site qui n'as pas de flux RSS et de faire des lien ensuite vers celui ci. D'ou le fait que je voudrais parser le code sources de la page en question.
Pouvez vous m'éclairer je m'y perd un peut dans vos codes.
d'avance merci
ozskry
Messages postés2Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention14 juillet 2005 14 juil. 2005 à 16:26
Mmmmh, d'accord, je connaissais substr() mais si je veux extraire un tableau perdu au milieu d'une page par ex, je fais comment ? Il faut que je connaisse le nb de caractère jusqu'à la table. Pas évident?
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 14 juil. 2005 à 16:10
tu utilises substr...
ozskry
Messages postés2Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention14 juillet 2005 14 juil. 2005 à 12:37
Comment faire pour récupérer une partie précise du fichier distant ?
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 16 juin 2005 à 12:51
faut voir le code de la page qui t'identifie...
Roukof
Messages postés2Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention16 juin 2005 16 juin 2005 à 12:42
Merci à tous.
Donc en gros :
y a pas moyen de chopper ces pages dans un script php, même si j'ai un login et un mot de passe valables ?
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 16 juin 2005 à 12:25
renseignes toi sur les sessions et le protocol http...
Comment fait php pour savoir quel fichier de session assigner à un client ??? bah il lui poste un cookie quand il cré le fichier, c'est aussi simple que ça !
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 16 juin 2005 à 12:09
Coucou747,
a quoi sert la method POST ( je ne parlais qu'au niveau de l'identification )
Quant au cookies, j'ai pas trop ca pour la gestion des identifications ( pour ma part, les sessions sont gerées uniquement par le serveur, ou alors je suis pas au courant et j'aime pas ca)
Je prefere tout controler et eviter que quelqu'un bidouille mes fichiers de connexion.
(Le programmeur est un mec qui a tout pouvoir sur son programme, au dessus du patron ;), laisse moi mes reves ;) )
De toutes facons, je suis comme mon avatar, je n'aime les cookies que lorsqu'ils se mangent ;)
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 16 juin 2005 à 11:52
entre nous, quand il y a session, il y a souvent cookies (ou passage de variables par get...)
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 16 juin 2005 à 11:36
Roukof,
Premierement, utilisé la method GET pour une identification est une grosse abérration (c'est le systeme le plus sur pour ce faire prendre son identitée)
De plus, une fois que tu es identifié, le site utilise surement un systeme de Session ou alors de cookies ( histoire d'etre encore moins sur).
En gros, si tu t'es identifié et que le cookies ou la variable de session est existante et OK alors tu peux naviguer.
Piquer une page avec ce systeme ( fopen) ne creer pas de cookies ni de sessions donc pour le site distant tu n'es pas identifié, donc tu obtiens la page d'erreur. (sinon a quoi sert l'identification)
J'espere avoir été clair.
Je ne crois pas que ce soit contournable et heureusement sinon très grosses failles de sécurité.
Roukof
Messages postés2Date d'inscriptionjeudi 16 juin 2005StatutMembreDernière intervention16 juin 2005 16 juin 2005 à 11:14
Hello,
Je suis programmateur amateur, pour mon loisir en php.
J'arrive à récupérer une page normale, mais je voudrais récupérer des pages sur un site qui nécessite un log-in et un mot de passe.
Je n'ai que la page d'erreur d'identification qui s'affiche (page style : "Attention login ou mot de passe incorrect !")
Pourtant, lorque je me log sur le site normalement, et qu'ensuite je change de suite, puis tappe l'adresse ci-dessus dans mon navigateur, à laquelle il faut normalement être loggé pour pouvoir accéder, ça marche, j'arrive sur le site tout loggé.
Mais mon script refuse de procéder avec la même facilité, on le rebute toujours sous prétexte qu'il n'est pas loggé.
J'ai essayé de contourner le pb en essayant de récupérer dans mon script php la page d'arrivée du formulaire d'identification qui permet d'entrer sur le site, qui, transcrie en GET, se présente comme suit :
http://www.site.fr/authent/index.php?log=mon_login&pwd=mon_pass mais ça ne marche pas non plus, cela m'affiche toujours la page d'erreur d'identification. Pourtant lorsque je tappe l'adresse
http://www.site.fr/authent/index.php?log=mon_login&pwd=mon_pass dans la barre d'adresses du navigateur ça marche, je me log ainsi, en GET.
Que dois-je mettre dans mon script pour que je puisse récupérer à volonté des pages de ce site qui recquiert un login et un mot de passe pour consulter ses pages, sachant que j'en ai !
Merci de votre aide !
Nicolas
Laurent00777
Messages postés39Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention21 avril 2008 4 juin 2005 à 17:31
Ben moi, avec PHP5 (via WAMP)que j'ai récement installé, j'ai l'erreur suivante:
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 20 mai 2005 à 18:05
ça n'utilises que deux fois plus de ram...
En théorie, le ram n'est pas super étendue, mais en pratique, on arrive aux 64 ko du dos seulement quand on manipule des images (sprites) et en php, on ne dépasse jamais les quelques mo de ram autorisés...
mes tests sont indéniables et rejoignent la théorie...
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 20 mai 2005 à 01:11
J'ai fais mes test sans charger un fichier au prélable je remplissait un tableau d'occurences, les premier test ont été fais sur un tableau au occurence croissante en taille : $tbl[0] = 0; $tbl[1000] = 1000; $tbl[1000000] = 1000000;
J'ai fais une deux série avec une valeur constante $tbl[0] = 'bonjour'; $tbl[1000000] = 'bonjour'; Les résultat différent quelques peu en observant que du coup du plus rapide au plus lent (mais très serrer) for() -> foreach() -> do while() -> while() -> implode()
Avec un texte encore plus long genre "ceci est une phrase très très très très longue qui va faire bien ramé mon pc" Les résultats sont similaire à avant.
Perso je préfère les boucles, je travail sur des bases de données qui dépasse le million d'enregistrement ou sur des catalogues produits avec des fichiers de plusieurs millier de ligne, quand je fait des extractions le fait d'avoir une boucle à un avantage indéniable le fait de " travailler à flux tendu " par exemple je reçois les echo au fur et à mesure avec un implode je recevrais tout d'un bloc, le serveur mettrait tout en ram et saturerait très vite. Ainsi ce n'est pas le cas. Il reste que le implode sur de petite structure est plus simple à coder et à relire ^^
PS : J'utilise pour chaque boucle des accolades (testé sur un athlon 1800+) J'ai fait qu'une série de test sinon j'en avais pour des heures ^^
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 19 mai 2005 à 22:03
avec un gros fichier :
temps d'exécution pour 10000 calculs
echo implode(file('exp_reg.html'));
6.09268498421
$a=file('exp_reg.html'); foreach ($a as $b){ echo $b; }
7.1317961216
$a=file('exp_reg.html'); foreach ($a as $b) echo $b;
7.10109400749
en fait, t'as raison pour les petits fichiers... car il n'y a pas bcp de tours de boucle, mais pour quelquechose de plus gros...
j'ai aussi un test qui est un peu plus représentatif des effets des acolades...
temps d'exécution pour 100 calculs
echo implode(file('exp_reg.html'));
0.0633730888367
$a=file('exp_reg.html'); foreach ($a as $b){ echo $b; }
0.0818321704865
$a=file('exp_reg.html'); foreach ($a as $b) echo $b;
0.0741288661957
100 calculs, c'est pas énorme, mais sinon, c'est carément lent... ces tests ont étés réalisés sur un céléron 2.4 ghtz, le fichier faisait 25311 octets 239 lignes...
En php, on manipule souvent des fichiers de plus de 200 lignes...
pour un fichier légèrement plus petit :
temps d'exécution pour 10000 calculs
echo implode(file('TESTS.php'));
1.23162293434
$a=file('TESTS.php'); foreach ($a as $b){ echo $b; }
1.48697495461
$a=file('TESTS.php'); foreach ($a as $b) echo $b;
1.48499512672
et pour un fichier de très petite taille :
temps d'exécution pour 10000 calculs
echo implode(file('1fo.php'));
0.861632823944
$a=file('1fo.php'); foreach ($a as $b){ echo $b; }
0.837021112442
$a=file('1fo.php'); foreach ($a as $b) echo $b;
0.827816963196
mais les diférences ne sont pas notables pour des fichiers de petites tailles, donc implode est préférable...
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 19 mai 2005 à 21:59
En poussant un peu la chose toujours sur 1 000 000 d'occurences
-- Implode()
time : 55.38
-- Foreach()
time : 20.46
-- For()
time : 19.98
-- While()
time : 19.77
-- Do While()
time : 20.14
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 19 mai 2005 à 21:16
Bien j'ai regardé sur 1 000 000 d'occurence dans un tableau voici les résultats :
-- Implode()
time : 71.19
-- Foreach()
time : 19.86
Foreach semble bien plus rapide. je demande aux autre si vous voulez bien testé vous même ça serais bien intéressant.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 19 mai 2005 à 20:16
implode car t'as pas de boucles et moins d'instructions exécutés...
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 19 mai 2005 à 20:12
Je ne sais pas lequel serait le plus rapide ?
GillesWebmaster
Messages postés496Date d'inscriptionmercredi 30 juin 2004StatutMembreDernière intervention29 juillet 20091 19 mai 2005 à 19:16
Oui bien sur
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 19 mai 2005 à 18:22
un implode est mieux qu'un foreach
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 18 mai 2005 à 21:24
arf désolé pour le double postage
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 18 mai 2005 à 21:23
Fon code affichera : " array ".
file() renvoie un tableau ... array file ( string filename [, int use_include_path [, resource context]] )
$codehtml = file($url); // sans guillemet svp ^^
foreach($codehtml as $line) {
echo $line;
}
ceci serait mieux. ;)
Avec file() tu ne peux pas stopper la récupération de la source en plein milieu par exemple (une fois que tu as reçu les données que tu attendais, pour éviter de récupérer une fin de page qui de toute façon ne te servira pas) bref tu ne peut pas " accélérer ton script " ou l'optimiser si on veut.
Personne n'a encore parler des sockets ? un poil plus complexe mais c'est la solution ultime pour passer des formulaires, se loguer a distance, garder des sessions, cookies, https ... et pourquoi se limiter à ça ? ftp etc ^^ voir la librairie " curl " pour ceux qui ne veulent pas trop se prendre la tête avec les entetes html etc .. ^^
DarkM60
Messages postés37Date d'inscriptiondimanche 15 mai 2005StatutMembreDernière intervention21 septembre 2009 18 mai 2005 à 20:05
$codehtml = file("$url");
echo $codehtml;
ça va un peu plus vite ^^
et pour afficher la source faut faire un html special chars ;)
Voili voilou
fyav
Messages postés124Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention12 février 2010 18 mai 2005 à 08:50
réponse question 1: pour ce qui est du post ou du get ou cookie, il n'y a pas de problème
réponse question 2:
la base de données a une mise à jour qui modifie d'environ 30% le total des données (adresses de fournisseurs), par an.
donc pour pomper la base il faut le faire tous les ans. Et avec des systèmes qui limite les requêtes en fonction de l'adresse ip, ou par le biais d'une vérification visuelle (style inscription à hotmail), il faut un être humain qui fasse les requêtes, je lui souhaites bonne chance, et le jeu n'en vaut pas la chandelle (coût ptohibitif par rapport aux données acquises).
réponse question 3:
je suis d'accord avec toi, sauf que mon concept est, comme celui de mixad, fournir des informations, et pour mes partenaires, ils n'ont rien à développer, juste à mettre 2 pages php où ils personnalisent le html, et c'est tout : pas de programmation, rien à faire.
Inscrit toi au système mixad et installe le sur un de tes sites, tu comprendras la simplicité de la chose pour les partenaires....
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 17 mai 2005 à 19:10
D'accord pour ton expliquation, mais tu es obligé de transposer en Get , si la page "monsite" nécessite une session et/ou des données en Post ça coince.
Pour ce qui est de la protection de ta base de donnée je suis un peu plus perplexe. Ton système sera l'interface entre une grosse base et ton client. Ton client au final il a les données donc des données de la base, petit à petit il peu au moins reconstruire avec ses résultat une partie de ta base.
Bref la comparaison avec XML, le principe est le même, on récupère un fichier que l'on peux parser, transformer etc ... tant qu'il y a des données dans le fichier. Justement xml à été conçu pour ceci : Faire de xml un moyen homogène de transport de donnée pour tout type d'interface. C'est un moyen adapté. avec SOAP par exemple pour monté un webservice par exemple.
Tu gagne en qualité de prestation de service !
Pour ton gagne pain que va tu dire à tes clients quand faudra leur annoncé qu'il doivent créer un encodage php pour aller eux même chercher un fichier sur ton serveur ?
XML peut te permetre par exemple accoupler au XSL de monter des template pour eux etc ...
fyav
Messages postés124Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention12 février 2010 17 mai 2005 à 09:16
en fait je parle d'un système en marque blanche qui ne permet pas aux "partenaires" de pomper la base purement et simplement, je suis sur un projet de consultation d'une base sur plus de 50 critères de recherche. ça sera mon gagne pain, et je veux garder la maitrise (c'est à dire empécher le "pompage" pur et simple de ma base, en arretant tout internaute (y compris les moteurs de recherche) de faire des requetes.
je pense voir le principe xml: tu cré un catalogue static que tes partenaires font des requêtes dessus, dis moi si je me trompe ?
pour ce qui est de récupérer la page de résultat: en fait, tous les liens qui sont sur la page récupérée vont sur la même page du partenaaire avec des gets ou des posts + l'addresse de la page à ouvrir, un petit exemple:
www.partenaire.com/recup.php:
<?php
$numpartenaire=001;//c'est le numéro d'identification du partenaire
//là c'est le début d'url de mon site
$url='http://www.monsite.com/recherche.php?numpartenaire='.$numpartenaire.'&';
//ici on récupère tout ce qui a été envoyé en post, get et cookie
//afin de le renvoyer à mon url pour traitement
foreach($_REQUEST as $key=>$elem) {$url.=$key.'='.urlencode($elem).'&';}
include($url);
?>
et dans www.monsite.com/recherche.php, toutes les url auront la forme de :
www.partenaire.com/recup.php?.............etc.........
ça permet à l'internaute de n'y voir que du feu étant donné qu'il reste sur la même page
cs_Antidote
Messages postés163Date d'inscriptionlundi 29 septembre 2003StatutMembreDernière intervention 8 mai 2010 16 mai 2005 à 19:37
FYAV aujourd'hui ce type de technique est totalement obslète, une boutique en marque blanche envoie tout sont catalogue en xml. c'est plus simple, maniable, et on garde les même avantages. exemple : Florajet, kelkoo, msn et zdnet etc ^_^
Sinon gardons ce principe puisque c'est le sujet, le dit "site en marque blanche" aspire donc une page avec un formulaire, l'utilisateur rempli et post ce formulaire. Comment tu récupère la page de résultat ?
(j'ai la solution) à vous de réfléchir.
Steph666
Messages postés74Date d'inscriptionjeudi 6 mars 2003StatutMembreDernière intervention 5 juin 2008 10 mai 2005 à 10:40
fyav
Messages postés124Date d'inscriptionmardi 30 décembre 2003StatutMembreDernière intervention12 février 2010 9 mai 2005 à 12:56
en fait cela peut servir pour de la "marque blanche"
c'est d'ailleurs le principe utilisé par le réseau de petites annonces en marque blanche :Mixad
cela permet pour le fournisseur de contenu (ex: mixad) de rester maître de sa base de donnée et de l'affichage
et pour celui qui l'utilise en marque blanche (tiscali, le neuf, M6, les Echos, etc....) d'avoir un service qui reste sur son site avec une personnalisation pratiquement totale.....
GillesWebmaster
Messages postés496Date d'inscriptionmercredi 30 juin 2004StatutMembreDernière intervention29 juillet 20091 8 mai 2005 à 16:07
Oui bien évidemment...
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 8 mai 2005 à 13:59
Faut préciser dans les commentaire que le but est de pouvoir modifier la page importée si on le souhaite.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 8 mai 2005 à 13:05
sinon, t'as
echo implode(file($filename));
qui est moins rapide qu'include, mais qui pourrait permetre de récupérer ça dans une variable...
enfin pour moi ça ressemble plus à un hello world qu'a une page...
une source comme ça, on peut en faire des dizaines en une journée, imagines l'état de la bdd de phpcs si on postait tous des sources comme ça.... çz ne mérite pas initié, juste débutant...
GillesWebmaster
Messages postés496Date d'inscriptionmercredi 30 juin 2004StatutMembreDernière intervention29 juillet 20091 8 mai 2005 à 12:52
oui bien sur mais c'est un bon moyen pour pouvoir modifier l'"include"...
sinon tu as raison, l'include c'est plus simple...
G_____
cs_garfield90
Messages postés388Date d'inscriptionlundi 7 juillet 2003StatutWebmasterDernière intervention10 février 2009 8 mai 2005 à 11:32
18 sept. 2013 à 23:50
Sinon, ton script est bien mais l'ouverture par url n'est pas forcément autorisé
21 déc. 2005 à 14:53
$source_coupee = substr($source, strpos($source, "
"), 38) ;
echo $source_coupee;
21 déc. 2005 à 13:03
voila comment je fait :
$texte=file_get_contents('monfichier');
$source = $texte ;
$pos = strpos($source, "
") ;
$pos = ($pos +38) ;
$source_coupee = substr_replace($source, '', 0, $pos) ;
echo $source_coupee;
Malheureusement cela ne fonctionne pas. Le soucis viens du texte que je recherche qui contient des caratères inerpretté par PHP qui ferme la chaine avant la véritable fin :
Si je recherche que :
XbcProfileTableContainer
ca ne fonctionne pas quand même car il m'efface alors :
<div class="
Du coup cela coince quand je restitutue la variable avec le echo.
comment faire ?
21 déc. 2005 à 09:48
$a=file_get_contents('monfichier');
le include est dangereux, car si l'autre page affiche du code php, alors ce code sera exécuté...
21 déc. 2005 à 07:01
J'aimerai pouvoir stocker dans une variable le code source d'une page se trouvant sur un autre site afin de pouvoir utiliser une partie du code dans une page de mon site en dynamique.
Une fois récupéré dans la variable je sais faire le netoyage du code pour ne garder que la partie qui m'est utile et ainsi afficher une partie des informations du dit site.
Le but étant d'apporter l'information d'un site qui n'as pas de flux RSS et de faire des lien ensuite vers celui ci. D'ou le fait que je voudrais parser le code sources de la page en question.
Pouvez vous m'éclairer je m'y perd un peut dans vos codes.
d'avance merci
14 juil. 2005 à 16:26
14 juil. 2005 à 16:10
14 juil. 2005 à 12:37
16 juin 2005 à 12:51
16 juin 2005 à 12:42
Donc en gros :
y a pas moyen de chopper ces pages dans un script php, même si j'ai un login et un mot de passe valables ?
16 juin 2005 à 12:25
Comment fait php pour savoir quel fichier de session assigner à un client ??? bah il lui poste un cookie quand il cré le fichier, c'est aussi simple que ça !
16 juin 2005 à 12:09
a quoi sert la method POST ( je ne parlais qu'au niveau de l'identification )
Quant au cookies, j'ai pas trop ca pour la gestion des identifications ( pour ma part, les sessions sont gerées uniquement par le serveur, ou alors je suis pas au courant et j'aime pas ca)
Je prefere tout controler et eviter que quelqu'un bidouille mes fichiers de connexion.
(Le programmeur est un mec qui a tout pouvoir sur son programme, au dessus du patron ;), laisse moi mes reves ;) )
De toutes facons, je suis comme mon avatar, je n'aime les cookies que lorsqu'ils se mangent ;)
16 juin 2005 à 11:52
16 juin 2005 à 11:36
Premierement, utilisé la method GET pour une identification est une grosse abérration (c'est le systeme le plus sur pour ce faire prendre son identitée)
De plus, une fois que tu es identifié, le site utilise surement un systeme de Session ou alors de cookies ( histoire d'etre encore moins sur).
En gros, si tu t'es identifié et que le cookies ou la variable de session est existante et OK alors tu peux naviguer.
Piquer une page avec ce systeme ( fopen) ne creer pas de cookies ni de sessions donc pour le site distant tu n'es pas identifié, donc tu obtiens la page d'erreur. (sinon a quoi sert l'identification)
J'espere avoir été clair.
Je ne crois pas que ce soit contournable et heureusement sinon très grosses failles de sécurité.
16 juin 2005 à 11:14
Je suis programmateur amateur, pour mon loisir en php.
J'arrive à récupérer une page normale, mais je voudrais récupérer des pages sur un site qui nécessite un log-in et un mot de passe.
Lorsque je fais
$fich = "http://www.site.fr/home/index.php";
fopen ($fich,"r"), etc.
Je n'ai que la page d'erreur d'identification qui s'affiche (page style : "Attention login ou mot de passe incorrect !")
Pourtant, lorque je me log sur le site normalement, et qu'ensuite je change de suite, puis tappe l'adresse ci-dessus dans mon navigateur, à laquelle il faut normalement être loggé pour pouvoir accéder, ça marche, j'arrive sur le site tout loggé.
Mais mon script refuse de procéder avec la même facilité, on le rebute toujours sous prétexte qu'il n'est pas loggé.
J'ai essayé de contourner le pb en essayant de récupérer dans mon script php la page d'arrivée du formulaire d'identification qui permet d'entrer sur le site, qui, transcrie en GET, se présente comme suit :
http://www.site.fr/authent/index.php?log=mon_login&pwd=mon_pass
mais ça ne marche pas non plus, cela m'affiche toujours la page d'erreur d'identification. Pourtant lorsque je tappe l'adresse
http://www.site.fr/authent/index.php?log=mon_login&pwd=mon_pass
dans la barre d'adresses du navigateur ça marche, je me log ainsi, en GET.
Que dois-je mettre dans mon script pour que je puisse récupérer à volonté des pages de ce site qui recquiert un login et un mot de passe pour consulter ses pages, sachant que j'en ai !
Merci de votre aide !
Nicolas
4 juin 2005 à 17:31
Warning: filesize() [function.filesize]: stat failed for http://www.google.ch/search?hl=fr&q=test&btnG=Rechercher&meta= in C:\monArborescence\...\monDossier\recuperer_page.php on line 9
Warning: fread() [function.fread]: Length parameter must be greater than 0. in C:\monArborescence\...\monDossier\recuperer_page.php on line 9
Je n'arrive pas à utiliser fopen pour une page web (par ex.: http://www.google.ch/search?hl=fr&q=test&btnG=Rechercher&meta=). Pareil, mes cookies et mes session PHP4 répondent plus avec PHP5...
ça vient d'où ?
20 mai 2005 à 18:05
En théorie, le ram n'est pas super étendue, mais en pratique, on arrive aux 64 ko du dos seulement quand on manipule des images (sprites) et en php, on ne dépasse jamais les quelques mo de ram autorisés...
mes tests sont indéniables et rejoignent la théorie...
20 mai 2005 à 01:11
J'ai fais une deux série avec une valeur constante $tbl[0] = 'bonjour'; $tbl[1000000] = 'bonjour'; Les résultat différent quelques peu en observant que du coup du plus rapide au plus lent (mais très serrer) for() -> foreach() -> do while() -> while() -> implode()
Avec un texte encore plus long genre "ceci est une phrase très très très très longue qui va faire bien ramé mon pc" Les résultats sont similaire à avant.
Perso je préfère les boucles, je travail sur des bases de données qui dépasse le million d'enregistrement ou sur des catalogues produits avec des fichiers de plusieurs millier de ligne, quand je fait des extractions le fait d'avoir une boucle à un avantage indéniable le fait de " travailler à flux tendu " par exemple je reçois les echo au fur et à mesure avec un implode je recevrais tout d'un bloc, le serveur mettrait tout en ram et saturerait très vite. Ainsi ce n'est pas le cas. Il reste que le implode sur de petite structure est plus simple à coder et à relire ^^
PS : J'utilise pour chaque boucle des accolades (testé sur un athlon 1800+) J'ai fait qu'une série de test sinon j'en avais pour des heures ^^
19 mai 2005 à 22:03
temps d'exécution pour 10000 calculs
echo implode(file('exp_reg.html'));
6.09268498421
$a=file('exp_reg.html'); foreach ($a as $b){ echo $b; }
7.1317961216
$a=file('exp_reg.html'); foreach ($a as $b) echo $b;
7.10109400749
en fait, t'as raison pour les petits fichiers... car il n'y a pas bcp de tours de boucle, mais pour quelquechose de plus gros...
j'ai aussi un test qui est un peu plus représentatif des effets des acolades...
temps d'exécution pour 100 calculs
echo implode(file('exp_reg.html'));
0.0633730888367
$a=file('exp_reg.html'); foreach ($a as $b){ echo $b; }
0.0818321704865
$a=file('exp_reg.html'); foreach ($a as $b) echo $b;
0.0741288661957
100 calculs, c'est pas énorme, mais sinon, c'est carément lent... ces tests ont étés réalisés sur un céléron 2.4 ghtz, le fichier faisait 25311 octets 239 lignes...
En php, on manipule souvent des fichiers de plus de 200 lignes...
pour un fichier légèrement plus petit :
temps d'exécution pour 10000 calculs
echo implode(file('TESTS.php'));
1.23162293434
$a=file('TESTS.php'); foreach ($a as $b){ echo $b; }
1.48697495461
$a=file('TESTS.php'); foreach ($a as $b) echo $b;
1.48499512672
et pour un fichier de très petite taille :
temps d'exécution pour 10000 calculs
echo implode(file('1fo.php'));
0.861632823944
$a=file('1fo.php'); foreach ($a as $b){ echo $b; }
0.837021112442
$a=file('1fo.php'); foreach ($a as $b) echo $b;
0.827816963196
mais les diférences ne sont pas notables pour des fichiers de petites tailles, donc implode est préférable...
19 mai 2005 à 21:59
-- Implode()
time : 55.38
-- Foreach()
time : 20.46
-- For()
time : 19.98
-- While()
time : 19.77
-- Do While()
time : 20.14
19 mai 2005 à 21:16
-- Implode()
time : 71.19
-- Foreach()
time : 19.86
Foreach semble bien plus rapide. je demande aux autre si vous voulez bien testé vous même ça serais bien intéressant.
19 mai 2005 à 20:16
19 mai 2005 à 20:12
19 mai 2005 à 19:16
19 mai 2005 à 18:22
18 mai 2005 à 21:24
18 mai 2005 à 21:23
file() renvoie un tableau ... array file ( string filename [, int use_include_path [, resource context]] )
$codehtml = file($url); // sans guillemet svp ^^
foreach($codehtml as $line) {
echo $line;
}
ceci serait mieux. ;)
Avec file() tu ne peux pas stopper la récupération de la source en plein milieu par exemple (une fois que tu as reçu les données que tu attendais, pour éviter de récupérer une fin de page qui de toute façon ne te servira pas) bref tu ne peut pas " accélérer ton script " ou l'optimiser si on veut.
Personne n'a encore parler des sockets ? un poil plus complexe mais c'est la solution ultime pour passer des formulaires, se loguer a distance, garder des sessions, cookies, https ... et pourquoi se limiter à ça ? ftp etc ^^ voir la librairie " curl " pour ceux qui ne veulent pas trop se prendre la tête avec les entetes html etc .. ^^
18 mai 2005 à 20:05
echo $codehtml;
ça va un peu plus vite ^^
et pour afficher la source faut faire un html special chars ;)
Voili voilou
18 mai 2005 à 08:50
réponse question 2:
la base de données a une mise à jour qui modifie d'environ 30% le total des données (adresses de fournisseurs), par an.
donc pour pomper la base il faut le faire tous les ans. Et avec des systèmes qui limite les requêtes en fonction de l'adresse ip, ou par le biais d'une vérification visuelle (style inscription à hotmail), il faut un être humain qui fasse les requêtes, je lui souhaites bonne chance, et le jeu n'en vaut pas la chandelle (coût ptohibitif par rapport aux données acquises).
réponse question 3:
je suis d'accord avec toi, sauf que mon concept est, comme celui de mixad, fournir des informations, et pour mes partenaires, ils n'ont rien à développer, juste à mettre 2 pages php où ils personnalisent le html, et c'est tout : pas de programmation, rien à faire.
Inscrit toi au système mixad et installe le sur un de tes sites, tu comprendras la simplicité de la chose pour les partenaires....
17 mai 2005 à 19:10
Pour ce qui est de la protection de ta base de donnée je suis un peu plus perplexe. Ton système sera l'interface entre une grosse base et ton client. Ton client au final il a les données donc des données de la base, petit à petit il peu au moins reconstruire avec ses résultat une partie de ta base.
Bref la comparaison avec XML, le principe est le même, on récupère un fichier que l'on peux parser, transformer etc ... tant qu'il y a des données dans le fichier. Justement xml à été conçu pour ceci : Faire de xml un moyen homogène de transport de donnée pour tout type d'interface. C'est un moyen adapté. avec SOAP par exemple pour monté un webservice par exemple.
Tu gagne en qualité de prestation de service !
Pour ton gagne pain que va tu dire à tes clients quand faudra leur annoncé qu'il doivent créer un encodage php pour aller eux même chercher un fichier sur ton serveur ?
XML peut te permetre par exemple accoupler au XSL de monter des template pour eux etc ...
17 mai 2005 à 09:16
je pense voir le principe xml: tu cré un catalogue static que tes partenaires font des requêtes dessus, dis moi si je me trompe ?
pour ce qui est de récupérer la page de résultat: en fait, tous les liens qui sont sur la page récupérée vont sur la même page du partenaaire avec des gets ou des posts + l'addresse de la page à ouvrir, un petit exemple:
www.partenaire.com/recup.php:
<?php
$numpartenaire=001;//c'est le numéro d'identification du partenaire
//là c'est le début d'url de mon site
$url='http://www.monsite.com/recherche.php?numpartenaire='.$numpartenaire.'&';
//ici on récupère tout ce qui a été envoyé en post, get et cookie
//afin de le renvoyer à mon url pour traitement
foreach($_REQUEST as $key=>$elem) {$url.=$key.'='.urlencode($elem).'&';}
include($url);
?>
et dans www.monsite.com/recherche.php, toutes les url auront la forme de :
www.partenaire.com/recup.php?.............etc.........
ça permet à l'internaute de n'y voir que du feu étant donné qu'il reste sur la même page
16 mai 2005 à 19:37
Sinon gardons ce principe puisque c'est le sujet, le dit "site en marque blanche" aspire donc une page avec un formulaire, l'utilisateur rempli et post ce formulaire. Comment tu récupère la page de résultat ?
(j'ai la solution) à vous de réfléchir.
10 mai 2005 à 10:40
sinon y a aussi
$contenu = file_get_contents("http://www.serveur.com/index.html");
9 mai 2005 à 12:56
c'est d'ailleurs le principe utilisé par le réseau de petites annonces en marque blanche :Mixad
cela permet pour le fournisseur de contenu (ex: mixad) de rester maître de sa base de donnée et de l'affichage
et pour celui qui l'utilise en marque blanche (tiscali, le neuf, M6, les Echos, etc....) d'avoir un service qui reste sur son site avec une personnalisation pratiquement totale.....
8 mai 2005 à 16:07
8 mai 2005 à 13:59
8 mai 2005 à 13:05
echo implode(file($filename));
qui est moins rapide qu'include, mais qui pourrait permetre de récupérer ça dans une variable...
enfin pour moi ça ressemble plus à un hello world qu'a une page...
une source comme ça, on peut en faire des dizaines en une journée, imagines l'état de la bdd de phpcs si on postait tous des sources comme ça.... çz ne mérite pas initié, juste débutant...
8 mai 2005 à 12:52
sinon tu as raison, l'include c'est plus simple...
G_____
8 mai 2005 à 11:32
include "http://www.monsite.com" ;
mais cependant ton source peut etre intéressant pour montrer la lecture de fichier (cela dit, sans grand intérêt non plus)