Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1028 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] passer un array dans l'URL pour inclure des pages en pseudo-fram

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP] passer un array dans l'URL pour inclure des pages en pseudo-fram

n°1467427
pmusa
▓▓▓▓▓▓▓
Posté le 30-10-2006 à 13:53:34  profilanswer
 

Bonjour,
 
ça fait un baille que je tâte plus du PHP et y'a une chose qui ne me revient plus.
à l'époque, je faisais genre:

Code :
  1. if(isset($_GET['act']) && (file_exists('./include/'.$_GET['act'].'.php'))){
  2.           include('./include/'.$_GET['act'].'.php');
  3.    }
  4.        elseif(!isset($_GET['act'])){
  5.    include('./include/accueil.php');
  6.    }
  7.        else{
  8.       include('./include/erreur.php');
  9.    }


 
Le souci, c'est que parfois il m'arrive d'avoir mes URL tel que -->
www.site.com/?act=membre/inscription
 
 
en effet, j'ai un dossier "membre" dans le dossier "include" et je trouve le slash pas tip-top dans l'url. :/
 
je voudrais faire un truc plus propre avec des array mais je suis incapable de me débrouiller seul. Il faudrait par exemple que si je fait un lien tel que:
 
www.monsite.fr/?act[0]=acceuil
 
Celà inclus le fichier acceuil.php QUI EST A LA RACINE DU DOSSIER INCLUDE
 
et que si je fait un lien tel qu'il point sur:
 
www.monsite.fr/?act[1]=inscription
Celà inclus le fichier inscription.php qui est dans le dossier "membre" (ce dernier étant lui-même dans le dossier "include" )
 
 
en fait:
 
 0 dans ?act[0] signifierai --> chopper le fichier dans la racine du dossier include
 
1 dans ?act[1] signifierai --> chopper le fichier dans le dossier "membre" ("membre" est dans le dossier "include" )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
mille mercis  :jap:  
 


---------------
intralase surgery [:cerveau love]
mood
Publicité
Posté le 30-10-2006 à 13:53:34  profilanswer
 

n°1467432
FlorentG
Unité de Masse
Posté le 30-10-2006 à 13:59:50  profilanswer
 

En tous cas, y'a une belle faille de sécurité...

n°1467434
pmusa
▓▓▓▓▓▓▓
Posté le 30-10-2006 à 14:02:12  profilanswer
 

je sais  :kaola:
 
edit: elle est belle hein?  :sol:
 
edit2: tu pourrais en profiter pour répondre chef.  :o
 
edit3: tiens au âssage --> comment je pourrais bien m'auto-hacker?  :heink:  
j'ai test:

Code :
  1. http://127.0.0.1/M&M/?act='acceuil.php'))){ echo '<h6>pwned!</h6>'; /*


et ça passe pas.  :sol:


Message édité par pmusa le 30-10-2006 à 14:09:32

---------------
intralase surgery [:cerveau love]
n°1467444
flo850
moi je
Posté le 30-10-2006 à 14:11:47  profilanswer
 

tu n'aurai pas plutot interet a faire qq chose du genre :  
?section=membre&action=accueil


Message édité par flo850 le 30-10-2006 à 14:12:09
n°1467445
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 30-10-2006 à 14:13:19  profilanswer
 

ouais, trop simple. :/
j'aimais bien mon idée du array.  :)
 
edit: c'est plus court et propre


Message édité par pmusa le 30-10-2006 à 14:13:32

---------------
intralase surgery [:cerveau love]
n°1467447
flo850
moi je
Posté le 30-10-2006 à 14:16:13  profilanswer
 

l'array , plus propre ?  
 
on a pas la meme viosin de la lpropreté d'un code :D  
parceque la solution que je te donne fonctionne directement, alors que la tienne demande pas mal de bidouille ( les tableaux dans une url n'ont pas d'indice, a moins de jouer avec les serialize )

n°1467449
anapajari
s/travail/glanding on hfr/gs;
Posté le 30-10-2006 à 14:17:58  profilanswer
 
n°1467452
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 30-10-2006 à 14:18:49  profilanswer
 

ça ne me dérange pas de serializer.  :)  
donne moi la soluce au lieu d'insister.  :D  
(mais c'est vrai que ta méthode est aussi bien...)


---------------
intralase surgery [:cerveau love]
n°1467454
flo850
moi je
Posté le 30-10-2006 à 14:19:36  profilanswer
 

serialize est le nom d'une fonction ( anapajari est plus gentil qu emoi il t edonne le lien direct ) :D
 

n°1467456
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 30-10-2006 à 14:20:14  profilanswer
 


 
 
sans dec? et tu crois peut être que je suis pas allé sur google et php.net avant de venir ici?  :D  
 
je veux juste qu'on me donner une ébauche de code, ça me reviendra après : j'ai juste oublié comment se traite la var recupérée.  :whistle:
 
edit:
 
"serialize est le nom d'une fonction"
 
ptain je sais.  :pfff: chui un ancien ici, faites pas les salauds et crachez un morceau de code bhourdeÿl.  :D


Message édité par pmusa le 30-10-2006 à 14:21:33

---------------
intralase surgery [:cerveau love]
mood
Publicité
Posté le 30-10-2006 à 14:20:14  profilanswer
 

n°1467476
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 30-10-2006 à 14:44:26  profilanswer
 

bande paÿdaÿ phenos  :fou:  
 
bon ben je me contenterai de ce bouzin:
 

Code :
  1. <?php
  2.    $cat = htmlentities($_GET['cat']); // on definie la categorie (ou plutôt le dossier...)
  3.    $act = htmlentities($_GET['act']); // on definie la page à inclure
  4.    // si les getvars 'cat' et 'act' sont definies et existent :
  5.    if(   ( isset($cat) ) && ( !empty($cat) ) && ( isset($act) ) && ( !empty($act) ) && ( file_exists('./include/'.$cat.'/'.$act.'.php') )   ){
  6.           include('./include/'.$cat.'/'.$act.'.php');
  7.    }
  8.    // si on a uniquement 'act' :
  9.        elseif(   ( isset($act) ) && ( !empty($act) ) && ( file_exists('./include/'.$act.'.php') )   ){
  10.       include('./include/'.$act.'.php');
  11.    }
  12.    else {
  13.    include('./include/accueil.php');
  14.    }
  15.   ?>


 
 
 
 
:/  [:airforceone]


Message édité par pmusa le 30-10-2006 à 14:51:04

---------------
intralase surgery [:cerveau love]
n°1467481
Djebel1
Nul professionnel
Posté le 30-10-2006 à 14:47:12  profilanswer
 

htmlentities, utilises le quand tu fais un echo, utilisé comme tu le fais ça ne sert pas.
la fonction empty() teste aussi si la variable est définie, c'est donc redondant avec isset()

n°1467494
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 30-10-2006 à 14:53:09  profilanswer
 

ok merci ça fera ça de moins.  ;)  
en effet, sur php.net:
"empty( ) checks for isset AND also the value of the variable"
 

Code :
  1. <?php
  2.    $cat = htmlentities($_GET['cat']); // on definie la categorie (ou plutôt le dossier...)
  3.    $act = htmlentities($_GET['act']); // on definie la page à inclure
  4.    // si les getvars 'cat' et 'act' sont definies et existent :
  5.    if(   ( !empty($cat) ) && ( !empty($act) ) && ( file_exists('./include/'.$cat.'/'.$act.'.php') )   ){
  6.           include('./include/'.$cat.'/'.$act.'.php');
  7.    }
  8.    // si on a uniquement 'act' :
  9.        elseif(   ( !empty($act) ) && ( file_exists('./include/'.$act.'.php') )   ){
  10.       include('./include/'.$act.'.php');
  11.    }
  12.    else {
  13.    include('./include/accueil.php');
  14.    }
  15.   ?>


 
 
le htmlentities est ici tout simplement indispensable.  :o

Message cité 1 fois
Message édité par pmusa le 30-10-2006 à 14:55:24

---------------
intralase surgery [:cerveau love]
n°1467497
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 30-10-2006 à 14:56:45  profilanswer
 

mais j'amerais bien, by the way, qu'on me montre avec le array


---------------
intralase surgery [:cerveau love]
n°1467505
chani_t
From Dune
Posté le 30-10-2006 à 15:03:26  profilanswer
 

euh.. pour quoi faire sérialiser... dans ce cas ?

n°1467512
anapajari
s/travail/glanding on hfr/gs;
Posté le 30-10-2006 à 15:13:28  profilanswer
 

j'ai lu que le titre du topic moi hein :o

n°1467514
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 30-10-2006 à 15:17:50  profilanswer
 

chani_t a écrit :

euh.. pour quoi faire sérialiser... dans ce cas ?


parce qu'on peut pas passer des array dans une URL. il faut serializer et déserializer en sortie.
 

chani_t a écrit :

j'ai lu que le titre du topic moi hein :o


 :sweat:  


---------------
intralase surgery [:cerveau love]
n°1467518
chani_t
From Dune
Posté le 30-10-2006 à 15:25:00  profilanswer
 

tu peux aussi concaténer tes champs, et les retrouver par la suite ( un ti explode par exemple)... ou passer tous tes champs par référence (pas top m'enfin)
 
Tiens ton exemple avec un objet

n°1467520
Djebel1
Nul professionnel
Posté le 30-10-2006 à 15:26:22  profilanswer
 

pmusa a écrit :


le htmlentities est ici tout simplement indispensable.  :o


ouais mais non, htmlentities c'est pour protéger une sortie en transformant les caractères spéciaux en entités html (pour par exemple protéger de la faille XSS de ton autre post).
Là t'as absolument aucun besoin de transformer ta chaîne en entité html. Au contraire, ça pourrait même te poser problème si tu utilises un caractère spécial dans ta chaîne (ce qui serait con, on est d'accord). Par exemple, si $_GET['cat'] vaut "éé".

Code :
  1. if ($_GET['cat'] == 'éé') //ca va marcher
  2. if (htmlemtities($_GET['cat']) == 'éé') //ca va pas marcher, htmlemtities($_GET['cat']) vaut "&acute;&acute;"


 
Tu dois protéger ta variable, on est bien d'accord, mais pas avec htmlemtities, qui sert à générer de l'html. Tu n'as pas besoin de générer du html  pour faire un truc en php ...
 
 
Utilises plutot un addslashes http://ch2.php.net/manual/fr/function.addslashes.php
ou un truc fait maison du style

Code :
  1. $cat = ereg_replace("(\.\./?|:|//|<|> )", "", $_GET['cat']);

n°1467522
anapajari
s/travail/glanding on hfr/gs;
Posté le 30-10-2006 à 15:30:37  profilanswer
 

pmusa a écrit :

parce qu'on peut pas passer des array dans une URL. il faut serializer et déserializer en sortie.
 :sweat:


Bin quoi c'était quand même la bonne réponse
 

pmusa a écrit :

mais j'amerais bien, by the way, qu'on me montre avec le array


Comme on t'a dit, en utilisant serialize et unserialize, si tu veux vraiment un exemple un truc dans le genre doit faire l'affaire:
fichier a.php:

Code :
  1. <?php
  2. $a = array('A','B','C');
  3. header('Location: b.php?a='.serialize($a));
  4. ?>


fichier b.php

Code :
  1. <html>
  2. <body>
  3. <?php
  4. $b = unserialize($_GET['a']);
  5. var_dump($b);
  6. ?>
  7. </body>
  8. </html>

n°1467729
pmusa
&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;&#9619;
Posté le 30-10-2006 à 18:05:13  profilanswer
 

:)  
 
THX GUYZ.  :hello:


---------------
intralase surgery [:cerveau love]
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP] passer un array dans l'URL pour inclure des pages en pseudo-fram

 

Sujets relatifs
[PHP]Probleme lien a href[PHP/Ajax/XSL/CSS/Etc] Explorateur Web
Coder une fonction recherche en PHP[PHP] Pagination
Quelques questions au sujet de Php /Perl / CGI...Trier un Array en fonction d'une colonne
Cherche un site d'admin PHP pour uploaderprobleme de téléchargement en PHP
[RSS] fichier XML ok mais faut-il obligatoirement le parser avec PHP?Besoin d'aide pou un logiciel en PHP
Plus de sujets relatifs à : [PHP] passer un array dans l'URL pour inclure des pages en pseudo-fram


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR