8796 sujets

Développement web côté serveur, CMS

<Modération: Reprise d'un message de djcoyotte dans un sujet désormais fermé./>

bonjour !

j'ai également un soucis pour généré une ID avec une variable. J'utilise une page index.php et "j'injecte" des pageS avec include dans ma div "principale":
<?php
if(empty($_GET['page'])){
include("accueil.php");
}
else {
$page = $_GET['page'];
include("$page.php");
}
?>

Sur chacune de mes pages je rajoute ceci, selon la rubrique de mon menu :
<?php $en_cours = 'rubrique'; ?>

Sur mon menu je rajoute ca :
<?php if ($en_cours == 'rubrique') {echo ' id="en-cours"';}?>


ce ne fonctionne pas Smiley sweatdrop ... Je n'est pas de message d'erreur sur mes page "include" par contre dans mon menu j'ai ce message :
Notice: Undefined variable: nav_en_cours in C:\Program Files\EasyPHP-5.3.2\www\capemploi2\page.php on line 35

L'exemple que vous donner au dessus me parait pas très clair et pas faisable pour mon site car mon menu comporte des sous sous catégories...

Pouvez vous m'éclairer?
Merci d'avance!
Modifié par Florent V. (01 Jun 2010 - 23:10)
Bonsoir,

djcoyotte a écrit :
j'ai également un soucis pour généré une ID avec une variable. J'utilise une page index.php et "j'injecte" des pageS avec include dans ma div "principale":
<?php
if(empty($_GET['page'])){
include("accueil.php");
}
else {
$page = $_GET['page'];
include("$page.php");
}
?>

Je ne m'y connais pas des masses en PHP mais ça ressemble à une énorme faille de sécurité, ça. Il suffit de mettre comme valeur de l'attribut GET "page" une URL externe, et que le serveur soit pas super bien configuré, pour récupérer et exécuter un script PHP externe... qui va permettre de faire ce qu'on veut ensuite.

Une technique un peu plus raisonnable serait d'avoir un un tableau avec des correspondances entre des mots clef et les scripts PHP à inclure. Ou bien de tester la valeur de $_GET['page'] pour qu'elle corresponde à un schéma précis, et de ne faire ton include que si c'est le cas.

djcoyotte a écrit :
Sur mon menu je rajoute ca :
<?php if ($en_cours == 'rubrique') {echo ' id="en-cours"';}?>

Quelque chose me dit qu'au moment où tu testes la valeur de $en_cours ainsi, tu n'as pas encore inclus le fichier PHP qui représente ton contenu et qui définis la valeur de $en_cours. Donc tu testes une variable qui n'existe pas encore. D'où l'erreur "undefined variable": au moment où tu veux utiliser $en_cours, cette variable n'existe pas.

djcoyotte a écrit :
L'exemple que vous donner au dessus me parait pas très clair et pas faisable pour mon site car mon menu comporte des sous sous catégories...

Je ne sais pas trop ce que vaut l'exemple, mais ce qui est sûr c'est qu'il sera plus facile à comprendre par des personnes qui connaissent les bases de la programmation et de PHP. Smiley smile

djcoyotte a écrit :
Pouvez vous m'éclairer?

Une solution pourrait être de laisser tomber ton index.php qui fait des include, et d'avoir à la place un script PHP par page, structuré ainsi:
<?php
$pageTitle = 'Nom de ma page';
$pageMetaDesc = 'Description de la page, le cas échéant.';
$pageCategory = 'ma-categorie';

include('../common/header.php');
?>

Contenu spécifique à la page.

<?php include('../common/footer.php'); ?>

On utilise alors les variables définies au début du fichier pour remplir le <title> de la page, ajouter une classe "en-cours" ou autre sur certains éléments du menu, et toute personnalisation que l'on souhaitera.
Bonsoir,
Florent V t'as donné plein de pistes,
pour ma part je t'encourages a lire les TOPOS de base du PHP
tu ne maitrises pas les fonctions de base, cela mériterais un peut de travail,
tu pourras toujours venir poser des questions.

Par exemple tu écris

<?php 

if ($en_cours == 'rubrique') {echo ' id="en-cours"';}

?>


On ne peut envoyer dans le html ceci, qui afficherait
id="en-cours" comme un texte.

Bon courage et reviens lorsque tu auras avancé Smiley cligne
Modifié par Christele (02 Jun 2010 - 01:56)