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