Page 1 sur 2

Pseudo Frames avec titre de page

Posté : 21 mai 2008, 04:16
par Fredy
Bonjour,

J'ai mis du pseudo frames, la ou je veux mettre pour chaque page un titre, le code est le suivant:

index.php:
<?
$titre_page = isset($_GET["$titre_page"]) ? $_GET["$titre_page"] : "Acceuil";  
?>

<html>
<head>
       <title><?echo $titre_page;?></title>
</head>
<body>
<table border="0" cellpadding="0" cellspacing=0" width="100%">
<tr> 
<td> 
<?php include('menu.php'); //on insère la page avec le menu ?>
</td>
<td> 
<?php include('centre.php'); // on insère la page avec le site 

proprement dit ?>
</td>
</tr>
</table>
et rubrique.php:


<?php
// On récupère la rubrique passée en paramètre
if(isset($_GET["rubrique"])) $rubrique = $_GET["rubrique"];
else $rubrique = ""; 

// On affiche la page associée à la rubrique
switch ($rubrique) 
{
case 'mapage1':
include('page_1.php');
$titre_page = "hellooo";
break;
case 'mapage2':
include('page_2.php');
$titre_page = "hellooo2";
break;
case 'mapage3':
include('page_3.php');
$titre_page = "hellooo3";
break;
default:
include('accueil.php');
break;
}
?>
Les titres de pages ne s'affichent pas, je recupere seulement Accueil qui est par defaut un titre de page.

Merci pour votre aide

Posté : 21 mai 2008, 05:28
par Patriboom
Dans ta page index.php, tu utilises la fonction ternaire, mais j'y trouve une erreur:
<?
$titre_page = isset($_GET["$titre_page"]) ? $_GET["$titre_page"] : "Acceuil";  
?> 
titre_page ne devrait pas être $titre_page


Dans ta page rubrique.php, pourquoi n'utilises-tu pas la fonction ternaire de la même manière?

Et finalement, pour ta question, quelle page ne fonctionne pas? rubrique.php ou index.php ?

Posté : 21 mai 2008, 09:47
par Hywan
Hey :),

Et remarque très constructive : on écrit accueil et pas acceuil

Posté : 21 mai 2008, 18:56
par Fredy
Quand je clique sur page_1.php je dois avoir index.php?rubrique=mapage1 avec le titre attribue a cette page qui est helloooo, mais en vain, il affiche le titre par defaut: Accueil

Posté : 22 mai 2008, 03:03
par Patriboom
Il n'y a aucune référence à rubrique.php dans index.php, il n'est donc pas possible de retrouver un quelconque traitement fait par rubrique.php

Il faudrait que rapporte ton traitement de ?rubrique=xyz dans ta page index.php puisque c'est à cette dernière page que réfère ton lien. Ou encore, il faudrait que dans ta page index.php il y ait un include("rubrique.php"); de façon à traiter tes attentes passées en paramètres.

Tant que ton lien mène à index.php?rubrique=xyz et que index.php ne réfère d'aucune façon à rubrique.php, jamais rubrique.php ne sera lu, jamais ce fichier ne traitera tes paramètres envoyés en $_GET

Posté : 22 mai 2008, 04:31
par Fredy
J'ai mis une petite erreur de saisie, j'ai change rubrique.php par centre.php, ca marche les frames mais sans titre

Posté : 22 mai 2008, 06:54
par Patriboom
Dans ta référence à centre.php, il n'y a aucun passage de variable.
Ceci
<td> 
<?php include('centre.php'); // on insère la page avec le site proprement dit ?>
</td>
ne devrait-il pas être plutôt
<td> 
<?php include('centre.php?rubrique='.$rubrique); // on insère la page avec le site  proprement dit ?>
</td>
?

Posté : 24 mai 2008, 08:31
par Fredy
Voila, j'ai mis mes 2 pages index.php et centre.php ainsi:

index.php:
<?php
if(isset($_GET["titre_page"])) $titre_page = $_GET["titre_page"]; 
else $titre_page = "Accueil";  

?>
<html>
<head>
       <title><?echo $titre_page;?></title>
</head>
<body>
<table border="0" cellpadding="0" cellspacing=0" width="100%">
<tr> 
<td> 
<?php include('menu.php'); //on insère la page avec le menu ?>
</td>
<td> 
<?php include('centre.php'); // on insère la page avec le site proprement dit ?>
</td>
</tr>
</table>
centre.php:
<?php 
// On récupère la rubrique passée en paramètre 
if(isset($_GET["rubrique"])) $rubrique = $_GET["rubrique"]; 
else $rubrique = "";  

// On affiche la page associée à la rubrique 
switch ($rubrique)  
{ 
case 'mapage1': 
include('page_1.php'); 
$titre_page = "titre page1"; 
break; 
case 'mapage2': 
include('page_2.php'); 
$titre_page = "titre page2"; 
break; 
case 'mapage3': 
include('page_3.php'); 
$titre_page = "titre page3"; 
break; 
default: 
include('accueil.php'); 
break; 
} 
?> 
Si la page page_1.php existe on l'inclu comme suivant: index.php?rubrique=mapage1 sinon on inclu accueil.php, jusqu a ce moment tout va bien, le seul probleme est que chaque page contient un titre, lors de l'affichage de la page selectionnee (par exemple page1.php) je dois avoir comme titre: titre page1.

Merci

Posté : 24 mai 2008, 10:34
par jojolapine
Hello,
il ne faut pas récupérer ta variable de titre en GET, mais tout simplement en faisant $titre_page,
car ce code:
page1.php
<?php
$variable="valeur";
include('page2.php');
?>
page2.php
<?php
echo $variable; // et non $_GET['variable']
?>
équivaut à (en gros hein...)
<?php
$variable="valeur";
echo $variable;
?>
voilou ;)

Posté : 24 mai 2008, 11:00
par Hywan
Attention toutefois, si tu écris $titre_page = $_GET['titre']; et plus loin echo $titre_page;, il me suffit de donner la valeur <script>alert("Hopla');</script> à la variable titre, et j'ai trouvé une faille XSS. Ne reste qu'à lire les cookies et autre chose du genre.

Il faut donc que tu protèges tout ça :), i.e. vérifier les caractères contenus dans la chaîne, leur forme etc.

Posté : 24 mai 2008, 14:44
par Fredy
Attention toutefois, si tu écris $titre_page = $_GET['titre']; et plus loin echo $titre_page;, il me suffit de donner la valeur <script>alert("Hopla');</script> à la variable titre, et j'ai trouvé une faille XSS. Ne reste qu'à lire les cookies et autre chose du genre.

Il faut donc que tu protèges tout ça :), i.e. vérifier les caractères contenus dans la chaîne, leur forme etc.
J'aimerais bien trouver la solution a comment recuperer les pages avant de passer au cote securite, pas a pas :)

Posté : 24 mai 2008, 15:09
par Hywan
Oui bien sûr :), mais je te le signalais.

Posté : 24 mai 2008, 16:37
par Invité
Oui bien sûr :), mais je te le signalais.
Merci HyWaN, je le metterais a la fin du code :)

Posté : 24 mai 2008, 17:10
par jojolapine
Sinon tu as compris le sens de ma remarque, ça fonctionne à présent?

Posté : 26 mai 2008, 18:54
par Fredy
Sinon tu as compris le sens de ma remarque, ça fonctionne à présent?
J ai pas saisis ce que tu veux me signaler