|
| Goretex | Posté le 01/05/2007 @ 11:39 |
Petit astucien
754 Messages
| Salut,
Voici le topo : Sur mon site, je propose des "versions imprimables" de certains documents au format PDF (affichés directement dans une page, cf. ce post). J'ai récemment découvert les variables ( oui bon, je n'en avais pas vraiment l'utilité jusqu'à présent). Donc, j'ai crée une page "version_imprimable.php" qui récupère des variables (nom de fichier et chemin d'accès) pour afficher le document à imprimer. L'adresse URL ressemble donc à ceci :
[code] http://127.0.0.1/pdf/version_imprimable.php?nom=Accès%20au%20Superflu&fichier=http://127.0.0.1/pdf/acces_.pdf [/code]
Et vous vous en doutez, un simple changements de ces variables et on peut afficher n'importe quoi :
[code] EX. http://127.0.0.1/pdf/version_imprimable.php?nom=Hacker&fichier=http://www.site_mechant.com/script_tres_mechant.php [/code] Après plusieurs recherches sur internet, je ne ramène pas grand choses....
Sur les pages proposant des documents imprimables, j'envoie les variables ainsi : [code] &fichier=" class="class4" title="Version imprimable " target="_blank">Version imprimable (PDF) [/code] Dans la page "version_imprimable.php", je récupère et affiche les variables ainsi : [code] et [/code]
Et pour me protéger, j'ai trouvé ceci :
[code]$fichiers_autorises = array('version_imprimable' => 'version_imprimable.php', 'fichier1' => 'http://127.0.0.1/pdf/acces.pdf', 'fichier2' => 'http://127.0.0.1/pdf/calendrier_competitions_2007.pdf', 'fichier3' => 'http://127.0.0.1/pdf/calendrier_tournoi_condamin_2007.pdf', 'fichier4' => 'http://127.0.0.1/pdf/carnet_de_parcours_recto.pdf', 'fichier5' => 'http://127.0.0.1/pdf/carnet_de_parcours_verso.pdf', 'fichier6' => 'http://127.0.0.1/pdf/carte_de_score.pdf', 'fichier7' => 'http://127.0.0.1/pdf/plan_parcours.pdf', 'fichier8' => 'http://127.0.0.1/pdf/reciprocites_2007.pdf', 'fichier9' => 'http://127.0.0.1/pdf/regles_couleurs.pdf', 'fichier10' => 'http://127.0.0.1/pdf/regles_etiquette.pdf', 'fichier11' => 'http://127.0.0.1/pdf/regles_formules_jeu.pdf', 'fichier12' => 'http://127.0.0.1/pdf/regles_index.pdf', 'fichier13' => 'http://127.0.0.1/pdf/regles_locales.pdf', 'fichier14' => 'http://127.0.0.1/pdf/tarifs_.pdf' // ainsi de suite pour toutes vos pages autorisées... ); // Ensuite, pour inclure une page et s'assurer qu'il s'agit bien d'une page autorisée à être incluse, // (donc qui figure dans le tableau $fichiers_autorises), il suffit de faire ceci :
if (isset($fichiers_autorises[$fichier])) include($fichiers_autorises[$fichier]); else include('http://127.0.0.1/erreurs/erreur400.php'); ?>[/code]
Mais cela ne fonctionne pas, je suis sytématiquement dirigé vers l'erreur 400... J'ai essayé de changer le chemin des fichiers à inclures (chemin relatifs), pareil, ça ne fonctionne pas. J'ai aussi trouvé ceci : [code]$array_all_vars = array("http://127.0.0.1/pdf/acces_.pdf","http://127.0.0.1/pdf/calendrier_competitions_2007.pdf") if(in_array($_GET[''fichier''],$array_all_vars)){ // code ok } else{ header("Location: ".$_SERVER['HTTP_REFERER']); } ?>[/code]
Ne fonctionne pas non plus...
C'est pourquoi, je fais appel à vos talents d'astuciens, pouvez-vous m'aider à m'en sortir ??? Merci. EDIT : Pas pratique pour écrire du code, soit c'est interprété, soit il disparaît....
|
| |
| |
| Publicité |
|
|
| cekica | Posté le 01/05/2007 à 12:32 |
Petit astucien
492 Messages
| j'utilise ce genre de chose pour mon site et j'utilise des Switch() tu peut trouver facilement des information sur az-php.com ou encore phpdebutant.com dans la rubrique pseudo frame. Un Switch ce présente comem ca: switch($_GET['tavariable]) { case'1':include("tapge.php");break; case2 ... case 3... defaut... }
|
| |
|
| Goretex | Posté le 01/05/2007 à 14:20 |
Petit astucien
754 Messages
| |
| |
|
| Malcolm | Posté le 01/05/2007 à 15:26 |
Astucien
7097 Messages
| |
| |
|
| Goretex | Posté le 01/05/2007 à 16:24 |
Petit astucien
754 Messages
| |
| |
|
| cekica | Posté le 01/05/2007 à 18:12 |
Petit astucien
492 Messages
| en faite tu pe mettre le nom que tu veu dans les case:'...' moi je met des diminutif .ce'est plus rapide à utilsier. Sur ta page ,ton url dois ce présenter comme ca: ? http://www.tonsite.com/tapge.php?fichier=lacasedufichierquit'interresse. par exemple j'ai une page appellé page1.phpet je veux l'inclure: <a href="mapage.php?fichier=p1">page1</a> <div class="content"> <?php switch($_GET['fichier']) { case'p1':include("page1.php");break; case'p2':include("page2.php");break; defaut:include("rien.php");break; } ?>
lorsque tu clic sur le lien page1 c t'afficherz la page mapage avec dedans page1.php |
| |
|
| Goretex | Posté le 01/05/2007 à 20:28 |
Petit astucien
754 Messages
| Salut,
Je vous le fais autrement : J'ai une page "Accès" dans lesquelles j'ai crée une variable "nom" et une "fichier" (correspondant au chemin du fichier...). Dans cette même page, un lien qui envoie vers la page "version_imprimable.php" les variables "nom" et "fichier". Donc l'URL complète du lien : www.monsite.com/pdf/version_imprimable.php?nom=acces&fichier=http://www.monsite.com/pdf/fichier_pdf.pdf Ce que je voudrai c'est que dans ma page "version_imprimable", j'intègre un petit script me permettant de contrôler la variable "fichier", pour éviter les piratages trop faciles... Donc si le fichier transmis en variable fait parti de ceux autorisés, OK il l'affiche. Sinon : Erreur 400. Ce que j'ai essayé pour l'instant me ramène toujours à "Parse error : (...)ligne 13".
Merci de votre aide 
|
| |
|
| Malcolm | Posté le 01/05/2007 à 21:29 |
Astucien
7097 Messages
| il faut écrire en anglais, mon coco : default et non defaut |
| |
|
| Goretex | Posté le 01/05/2007 à 22:36 |
Petit astucien
754 Messages
| Salut,
Malcolm a écrit :
il faut écrire en anglais, mon coco : default et non defaut
oui, plus de "parse error"...
Par contre, je suis maintenant dirigé vers l'erreur 400.... Voici ce qui est dans ma page "version_imprimable" :
switch($_GET['fichier']) { case'acces_superflu.pdf':include("http://127.0.0.1/pdf/acces_.pdf");break; case'calendrier_competitions_2007.pdf':include("http://127.0.0.1/pdf/calendrier_competitions_2007.pdf");break; default:include("http://127.0.0.1/erreurs/erreur400.php");break; } J'ai essayé de mettre les fichiers en "chemin relatifs", cela ne lui plaît pas trop ! Il me trouve des erreurs dans les fichiers pdf  Warning: Unexpected character in input: '' (ASCII=23) state=1 in c:\program files\easyphp1-8\www\pdf\acces_superflu.pdf on line 63
Parse error: parse error in c:\program files\easyphp1-8\www\pdf\acces_superflu.pdf on line 63
Même erreur si je met les chemin absolus dans les "case".... Une idée ??? Modifié par Goretex le 04/07/2007 16:15 |
| |
|
| Malcolm | Posté le 01/05/2007 à 23:13 |
Astucien
7097 Messages
| bin en fait c'est plus ou moins normal ... car include est une fonction php qui va inclure dans le code source ton fichier. si "lambda.extension" est ton fichier et qu'il contient "AZERTY123" par exemple, alors : <h2>Salut, l'ami, ton nom est :<?php include('lambda.extension'); ?></h2> affichera dans le code source : <h2>Salut, l'ami, ton nom est :AZERTY123</h2> Le code du fichier est réellement inclus ... Mais ton PDF est en binaire, je ne pense pas qu'il faille s'étonner qu'il trouve (alors qu'il cherche du texte) des caractères exotiques ... |
| |
|
| Goretex | Posté le 02/05/2007 à 11:08 |
Petit astucien
754 Messages
| Salut,
Malcolm a écrit : (...)Le code du fichier est réellement inclus ... Mais ton PDF est en binaire, je ne pense pas qu'il faille s'étonner qu'il trouve (alors qu'il cherche du texte) des caractères exotiques ...
Je ne comprends plus trop.... Les fichiers "PDF" de toutes façons ne s'ouvre pas si on ne possède pas un logiciel pour les lire (acrobat, foxit) ???
On peut aussi dire qu'ils fonctionnent un peu comme des images ( je dis à "PHP" d'afficher une image et il l'affiche, pareil pour les "PDF"), non ??? De même, j'utilise une balise "iframe" pour intégrér mes fichiers "PDF" dans une page, il ne cherche pas de caractères exotiques dans les "PDF" et il les affiche correctement....
En conclusion : Le script ne fonctionnera jamais si je n'ecris pas, dans les "PDF", mes "é", "à"...etc avec leurs correspondances "ISO" ???
Ou alors, je n'ai pas tout compris ??? 
De plus, mon hébergeur m'interdit d'inclure des fichiers via PHP, avec des adresses absolus, je suis donc obligé d'utiliser les adresses relatives...
Pour le coup, je commence sérieusement à désespéré RE- Mille merci de votre aide et de vos éclaircissements  Modifié par Goretex le 02/05/2007 11:09 |
| |
|
| Malcolm | Posté le 02/05/2007 à 16:39 |
Astucien
7097 Messages
| Soyons clairs : la fonction include sert à inclure (heureusement) du texte dans du texte. Tu n'inclues pas l'image, tu inclues une suite de caractères du type <img src="..." alt="..." ... (/)> et là ton image s'affiche. Si tu fais un include('photo.jpg') je ne suis pas sûr que tu obtiennes le même résultat ... Concernant le plug-in PDF, il est utilisé lorsqu'qu'on ouvre le PDF avec le navigateur, mais toi tu l'inclues, tu ne cherches pas à l'exécuter / ouvrir ... |
| |
|
| Goretex | Posté le 02/05/2007 à 17:36 |
Petit astucien
754 Messages
| Salut,
Malcolm a écrit :
Soyons clairs : la fonction include sert à inclure (heureusement) du texte dans du texte. Tu n'inclues pas l'image, tu inclues une suite de caractères du type et là ton image s'affiche. Si tu fais un include('photo.jpg') je ne suis pas sûr que tu obtiennes le même résultat ... Concernant le plug-in PDF, il est utilisé lorsqu'qu'on ouvre le PDF avec le navigateur, mais toi tu l'inclues, tu ne cherches pas à l'exécuter / ouvrir ...
OK, tout cela s'éclaircit... J'ai testé include ('photo.jpg'), , en effet le résultat n'est pas très graphique ....
Au final, je vais trouver une autre méthode pour proposer mes versions imprimables en PDF. Pour le coup : ------------SUJET RESOLU----------------- Merci pour toutes ces explications. 
@+ Jcoutsit  |
| |
|
|
| Haut de la page |