> Tous les forumsForum des Webmasters

 protection variables d'URLSujet résolu
Statut du sujet : RESOLU Imprimer
 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....

 Afficher le profil de GoretexEnvoyer un message privé à Goretex
 
 
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...

}

Afficher le profil de cekicaEnvoyer un message privé à cekica
  Revenir en haut de la page
 Goretex  Posté le 01/05/2007 à 14:20  
Petit astucien

754 Messages

Salut,

Merci beaucoup "Cekica" de ta réponse....

Malheureusement, cela ne fonctionne pas... du moins ce que j'ai pondu :

switch($_GET['fichier'])

{

case'1':include("http://127.0.0.1/pdf/acces_.pdf");break;
case'2':include("http://127.0.0.1/pdf/calendrier_competitions_2007.pdf");break;

defaut:include("http://127.0.0.1/erreurs/erreur400.php");

}

Ceci me renvoie l'erreur :

"Parse error: parse error in c:\program files\easyphp1-8\www\pdf\version_imprimable.php on line 13"


J'ai fait une bétîse ???



Modifié par Goretex le 04/07/2007 16:14
Afficher le profil de GoretexEnvoyer un message privé à Goretex
 Revenir en haut de la page
 Malcolm  Posté le 01/05/2007 à 15:26  
  Astucien


7097 Messages

et pourquoi tout simplement ne pas donner "que" le nom du fichier ?

switch($_GET['fichier'])

{

case'acces_superflu.pdf':include("http://127.0.0.1/pdf/acces_superflu.pdf");break;
case'calendrier_competitions_2007.pdf':include("http://127.0.0.1/pdf/calendrier_competitions_2007.pdf");break;

defaut:include("http://127.0.0.1/erreurs/erreur400.php");

}

évidemment si tu fais un Switch $_GET['fichier']il faut faire des case '...' selon les valeurs de $_GET, sinon la clause default sera utilisée ...

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 Goretex  Posté le 01/05/2007 à 16:24  
Petit astucien

754 Messages

Salut,

Ok, merci pour ta réponse Malcolm...

J'ai fait exactement ce que tu as dit, à savoir :

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;

defaut:include("http://127.0.0.1/erreurs/erreur400.php");

}

Résultat identique :

"Parse error: parse error in c:\program files\easyphp1-8\www\pdf\version_imprimable.php on line 13" (pour infos, la ligne 13 correspond à :"defaut:include...)



Modifié par Goretex le 04/07/2007 16:15
Afficher le profil de GoretexEnvoyer un message privé à Goretex
 Revenir en haut de la page
 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

Afficher le profil de cekicaEnvoyer un message privé à cekica
  Revenir en haut de la page
 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

Afficher le profil de GoretexEnvoyer un message privé à Goretex
 Revenir en haut de la page
 Malcolm  Posté le 01/05/2007 à 21:29  
  Astucien


7097 Messages
il faut écrire en anglais, mon coco : default et non defaut
Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 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
Afficher le profil de GoretexEnvoyer un message privé à Goretex
 Revenir en haut de la page
 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 ...

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 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
Afficher le profil de GoretexEnvoyer un message privé à Goretex
 Revenir en haut de la page
 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 ...

Afficher le profil de Malcolm Voir la configuration de MalcolmEnvoyer un message privé à Malcolm
  Revenir en haut de la page
 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

Afficher le profil de GoretexEnvoyer un message privé à Goretex
 Revenir en haut de la page
Haut de la page 
Inscrivez-vous !
- Posez vos questions

- Résolvez vos problèmes

- Aidez les autres

- Participez et créez vos discussions

- Dialoguez en privé avec d'autres membres

- Suivez vos sujets préférés

- Affichez les signatures des membres

TOUT EST GRATUIT !

Je crée mon compte




Les sujets pertinents liés
Variable d'URL
Pb encodage pour fiche de contact
Tri dans un tableau
aide pour un formulaire de contact
Résultat incorrect avec conditions ternaires
Formulaire : Le mail part mais pas de message!!
Problème de SESSION
Probléme xoops url
Faire un calcul dans un script en php
Insérer variables sql dans formulaire
Paramétrage cookie sur système de vote
les balaise HTML
Formulaire un peu compliqué
Mettre des données d'une liste déroulante........
Probleme de htmlentities et d'export csv
Récupérer une variable texte de flash à php
Problème avec variable session
 
Vous avez besoin d'aide ?
Des centaines d'experts sont à votre disposition sur les forums PC Astuces pour vous aider gratuitement, 24h/24, 7j/7.

Les derniers sujets résolus !



 > Tous les forumsForum des Webmasters

 
Forum PC Astuces© 1997-2008 WebastucesAller en haut de la page
Comme PC Astuces, mettez-vous au vert avec Ikoula !
Faites le choix d'un hébergeur acteur de l'environnement !