erreur in_array()

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : erreur in_array()

par Cyrano » 30 sept. 2005, 08:13

Bon, je crois que je commence à saisir ce que tu veux faire. Voici une autre solution possible:
<?php
/* On crée la constante de chemin vers les pages */
define("PATH", "./pages/");
/* On récupère s'il existe la page demandée sinon on en établit une par défaut */
$page = isset($_GET['page']) ? $_GET['page'] : PATH ."accueil.php";
/* On définit le nom du fichier à insérer selon la page demandée */
switch($page)
{
    case "acceuil" : $demande = "accueil";
    break;
    case "contact" : $demande = "contact";
    break;
    // ...etc...
    default : $demande = "accueil";
}
/* On définit le chemin complet du fichier à inclure */
define("AFFICHER", PATH . $demande .".php");
/* On inclut le fichier */
include(AFFICHER);
//...
?>
Si tu as besoin de rajouter une nouvelle page, il te suffit de rajouter deus lignes dans le switch.

par osmoz » 30 sept. 2005, 01:16

Bon, j'ai changé le code, je me suis débrouillé autrement, il est moins pratique mais je n'arrive pas à comprendre le problème donc bon ...

Voici le nouveau code pour ceux que ça intéresse :
<?
$listepages = array(
'0',
'1',
);
if(in_array($_REQUEST['page'], $listepages)) {
if(!include($_REQUEST['page'].'.php')) {
echo '<b>ATTENTION:</b>Erreur detectée dans la page.';
}
} else {
require('0.php');
}
?>
Et j'ai enlevé mes fichiers du dossier page

Si vous avez des idées sur le problème de l'autre n'hésitez pas !

Merci à tous !

par osmoz » 30 sept. 2005, 00:58

Donc pour résumer :
mon index se trouve sur http://ephenya.free.fr/1024/index.php
mes pages se situent ici : http://ephenya.free.fr/1024/pages/
et elles se nomment : "0,1,2,3,...".php

par Truc » 30 sept. 2005, 00:53

et bien tout dépend ou tu te trouve..

avec " ../ " te permet de remonter d'un niveau comme tu l'a indiqué tu remonte d'un niveau et cherche un dossier pages que tu veut lister

EDIT: si tu veut lister le dossier dans lequel tu te trouves (ici dossier=pages) il faut faire:
define("PATH", "../pages/");

par osmoz » 30 sept. 2005, 00:45

ça ne fonctionne pas ...

par osmoz » 30 sept. 2005, 00:40

je ne suis pas à la racine, mes pages sont dans un dossier pages !

Mais bon je vais essayer ...

par Truc » 30 sept. 2005, 00:37

si tu te trouve a la racine essai comme ça:
$tableau = glob("*.php"); 
ou encore comme ceci
define("PATH", "../pages/"); 
avec 2poins ../

par osmoz » 30 sept. 2005, 00:29

Mais pourtant 0.php est également dans le dossier pages !
Et pourquoi alors ça fonctionne en local ?

Je n'y comprend rien ! :lol:

par Truc » 30 sept. 2005, 00:26

le chemin que tu donne :arrow: ./pages/ .... n'est pas bon...par contre je ne saurai te dire le bon chemin ..

par osmoz » 30 sept. 2005, 00:12

voilà ce que ça me met
bool(false)

par Truc » 30 sept. 2005, 00:10

voila, tu fait tu as dis.. déclaration ensuite var_dump :wink:

par osmoz » 30 sept. 2005, 00:07

Ok merci !

Je fais quoi en fait ? Je mets var_dump($tableau) après $tableau = glob(PATH . "*.php");

et j'éxécute ?

(quand je dis que je débute, je débute vraiment ...)

par Truc » 30 sept. 2005, 00:03

je pense plustot qu'il s'agit d'une erreur de
define("PATH", "pages/");
on ne sait jamais...pour en etre sur fair un var_dump($tableau); , dans la logique tu dois avoir une liste avec les fichier .php si ce n'est pas le cas le chemin n'est pas bon

par osmoz » 29 sept. 2005, 23:56

Merci cyrano.

Je viens donc d'essayer avec ton code, et là je n'ai plus d'erreur, mais la page reste tout le temps sur celle en default ...

par Cyrano » 29 sept. 2005, 23:50

En cas d'erreur, glob() retourne false, ajoute alors un test supplémentaire:
<?
define("PATH", "./pages/");
// Tableau contenant les pages autorisées
$tableau = glob(PATH . "*.php");

if (isset($_GET["page"]) && (false !== $tableau && in_array(PATH . $_GET["page"] . ".php", $tableau)))
{
    $pageInclude = PATH . $_GET["page"] . ".php";
}
else
{
    $pageInclude = PATH .  "0.php";
}
include $pageInclude;
?>