Vous n'êtes pas identifié(e).
Pages :: 1
bonjour, (je suis débutant en php) et je crois avoir bien compris le passage de variable en get. Lorsqu'il s'agit de page fixe le nom de la variable est défini à la création et il est possible de le mémoriser dans l'array. Mais lorsqu'il s'agit de pages qui seront créées selon le besoin comment utiliser le get sans mémoriser la nouvelle variable dans l'array.
j'ai appliqué le script suivant qui fonctionne mais suis je dans la bonne démarche.
$array = array_push_assoc($pageOK, $_GET['page'], 'page_Actualite/'. $_GET['page'].'.htm');
function array_push_assoc($array , $key, $value){
$array[$key] = $value;
return $array ;
}
et un elseif ( (isset($_GET['page'])) && (isset($array[$_GET['page']])) ) {
include($array[$_GET['page']]); // on appelle le contenu central de la page
Merci de vos conseils en espérant avoir été clair.
Hors ligne
Salut,
Analysons ce que tu fait :
Tu récupère la page demandée par le visiteur (qui peut être n'importe quoi).
Tu met tout ça dans ton tableau. (Cela n'y sera que le temps du script)
Ensuite dans ton elseif tu vérifie que la page que tu as mis dans ton tableau est bien dans celui-ci et (comme normalement elle y est) tu l'inclue et ce, même si elle n'existe pas !!!
Donc si je fait http://tonsite.com/index.php?page=nimportequoi
Tu vas inclure : page_Actualite/nimportequoi.htm
nimportequoi pouvant le cas échéant devenir quelque-chose de pas très sympathique...
Donc une règle de base : toujours vérifier ce que demande le visiteur avant d'en faire quoi que ce soit (et qui plus est un include)
Ensuite, inutile de mettre ta page dans un tableau, vérifie simplement que $_GET['page'].'.htm' est bien dans le répertoire page_Actualite/. Ce sera plus simple et plus sécurisé.
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Merci pour la réponse. Je pensais bien que ma façon de faire était simpliste d'où mon interrogation
Je suis débutant et m'intéresse au PHP pour le plaisir d'apprendre sans prétention.
Je suppose que je dois utiliser une fonction qui va lister le contenu du répertoire et vérifier la présence par des if de mon fichier
mais je ne sais pas encore comment faire pour appeler une fonction en passant comment variable le nom du répertoire.
existe t-il un tuto que je pourrais étudier ?
Encore merci
Hors ligne
Salut,
Pour tester l'existence d'un fichier, tu as la fonction file_exist().
Dans la doc tu as des exemples : http://fr2.php.net/manual/fr/function.file-exists.php
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
merci pour l'info
Tout en posant ma question j'ai cherché à trouver une solution et je me suis orienté vers ce script :
<?php
$page=$_GET['page'].'.htm';
$dir = "page_Actualite";
// Ouvre le dossier et liste tous les fichiers
if (is_dir($dir)) {
if ($dh = opendir($dir)) {
while (($file = readdir($dh)) !== false) {
if ($page == $file) {
include('fichier.php'); }
else {
include('accueil.php'); }
}
closedir($dh);
}
}
?>
Suis je dans la bonne direction ou je me complique trop la vie.
encore merci
Hors ligne
As tu testé ton bout de code ?
Si de nouveau nous l'analysons au niveau de la boucle :
Supposons que dans page_Actualite il y ai 3 fichiers :
a.htm, b.htm et c.htm et certainement "." et "..".
Le visiteur demande page = c
$page contient donc "c.htm"
readdir lit les fichiers les un après les autres :
1er tour de boucle :
$file = "a.htm" donc différent de $page => include accueil.php.
2eme tour de boucle :
$file = "b.htm" donc différent de $page => include accueil.php.
3eme tour de boucle :
$file = "c.htm" donc égal à $page => include fichier.php (a mon avis ce serai plutôt $page).
Tu as donc inclus 2 fois la page d'accueil puis la page demandée...!!
Et si il a d'autre fichiers à la suite, tu va de nouveau inclure la page d'accueil.
Essaye donc d'utiliser la fonction file_exist qui t'évitera une boucle.
Promotion de PPOO : Programmation Propre Orientée Objet !!
Recommande AAO : Apéritif Avec Olives...
Glop, glop
Hors ligne
Merci beaucoup pour la leçon. J'ai pris du plaisir à tester et à essayer de comprendre.
Au final j'ai écrit le script suivant qui fonctionne et qui combine l'array et le file_exists:
$filename = 'page_Actualite/'. $_GET['page'].'.htm';
// je teste que le paramètre d'url existe et qu'il est bien autorisé dans l'array
if ( (isset($_GET['page'])) && (isset($pageOK[$_GET['page']])) ) {
include($pageOK[$_GET['page']]); // on appelle le contenu central de la page
}
// sinon si fichier existe dans répertoire page_Actualite
elseif (file_exists($filename)) {
include $filename;
}
// sinon include de la page par défaut
else{
// on affiche par défaut les éléments du portail principale
include ('index.php');
}
Cordialement
Hors ligne
Pages :: 1