Page 1 sur 2
recuperer une variable passé dans un lien
Posté : 26 janv. 2008, 12:20
par arno77
Bonjour à tous,
J'ai une variable insérer dans un lien comme suis
et j'essaie de recuperer la variable
if( $_GET['couleur']=='vert') {
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
else{
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_mauve.css" />'; }
Il y a un probleme dans mon code mais je ne vois pas lequel.
d'avance merci
Posté : 26 janv. 2008, 13:11
par cf357
Essaie exactement ça :
(sans les guillemets autour de 'vert'

Posté : 26 janv. 2008, 14:48
par arno77
ca ne change rien
Les deux morceau de code son dans la même page si cela à une importance
Posté : 26 janv. 2008, 15:07
par cf357
Qu'est-ce que tu appelles "probleme dans ton code" ?
Tu as bien cliqué sur le lien pour observer les changements ?
Posté : 26 janv. 2008, 15:59
par arno77
oui il n'y a aucun changement.
voici tout le code qui se trouve sur la même page
if (isset($_GET['couleur'])){
if( $_GET['couleur']=='vert') {
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
elseif( $_GET['couleur']=='mauve') {
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
elseif( $_GET['couleur']=='bleu') {
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
elseif( $_GET['couleur']=='saumon') {
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
elseif( $_GET['couleur']=='lie_de_vin') {
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
elseif( $_GET['couleur']=='turquoise') {
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';}
}else{
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_mauve.css" />';
}
echo'';
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Le Monde de Camille</title>
</head>
<body>
<div id="global">
<div id="header">
<h1>Le Monde de Camille</h1>
</div>
<div id="center">
<div id="content">
<h2>Bienvenue</h2>
<p>vous trouverez ici le contenue des pages demandees</p>
</div>
<div id="sidebar">
<h3>Navigation</h3>
<ul id="menu">
<li><a href="index.php?couleur=mauve" title="Les actualitees">Actus</a></li>
<li><a href="index.php?couleur=vert" title="Les videos">Mes videos</a></li>
<li><a href="index.php?couleur=bleu" title="Les bandes sons">Mes sons</a></li>
<li><a href="index.php?couleur=turquoise" title="Les photos">Mes photos</a></li>
<li><a href="index.php?couleur=saumon" title="La construction">Ma maison</a></li>
<li><a href="index.php?couleur=lie_de_vin" title="La famille">Ma famille</a></li>
</ul>
</div>
</div>
<div id="footer">
<p> </p>
</div>
</div>
</body>
</html>
Posté : 26 janv. 2008, 16:16
par cf357
Il faut que tu mettes ton code entre les balises <head> et </head>

Posté : 26 janv. 2008, 16:24
par arno77
même comme ça cela ne marche pas
Posté : 26 janv. 2008, 17:08
par Truc
Qu'est-ce que tu appelles "probleme dans ton code" ?
J'insiste sur cette remarque... prend ton temps de bien expliquer ce que tu obtiens et ce que tu veux pour éviter de perdre ton temps à tourner en rond.
N'hésite pas à afficher les variables GET et autres pour vérifier leur contenu etc.
Posté : 26 janv. 2008, 17:17
par Power Web
Salut, ça sert à quoi de faire ça :
if( $_GET['couleur']=='vert') {
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';
?
Autant faire :
$couleur = htmlspecialchars($_GET['couleur']);
if( isset($couleur) && !empty($couleur) )
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_' . $couleur; . '.css" />';
else
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_defaut.css" />';
Nan?
Posté : 26 janv. 2008, 17:19
par arno77
le probleme que j'ai c'est que si je fais un echo $_GET['couleur']
il affiche rien
il semble ne pas recuperer la variable entre en dessous
Posté : 26 janv. 2008, 17:24
par Power Web
Ok, bon essais ça :
<html>
<head>
<?php
$couleur = htmlspecialchars($_GET['couleur']);
if( isset($couleur) && !empty($couleur) )
{
if( preg_match('#vert|mauve|bleu|saumon|lie_de_vin|turquoise#i', $couleur) )
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';
else
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_mauve.css" />';
}
?>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Le Monde de Camille</title>
</head>
La regex n'est pas obligatoire mais c'est plus sécurisé comme ça

Et mets bien ta page au format *php

Posté : 26 janv. 2008, 17:25
par cf357
Salut, ça sert à quoi de faire ça :
if( $_GET['couleur']=='vert') {
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';
?
Autant faire :
$couleur = htmlspecialchars($_GET['couleur']);
if( isset($couleur) && !empty($couleur) )
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_' . $couleur; . '.css" />';
else
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_defaut.css" />';
Nan?
Ça ne revient pas tout à fait au même, car potentiellement on pourrait passer n'importe quelle valeur a 'couleur' et on se retrouverait avec une feuille inexistante

Mais dans son code, du coup il pourrait ecrire "vert" en dur directement lol
[edit] > OK avec ton message, bien sur =)
Arno77 >
Tu veux dire que si dans ta page (juste apres <body> par exemple) tu ecrit :
echo $_GET['couleur'];
et que tu accedes a ta pagne par "http://..../page.php?couleur=vert
Ca ne fait rien ?
Posté : 26 janv. 2008, 17:26
par Power Web
Salut, ça sert à quoi de faire ça :
if( $_GET['couleur']=='vert') {
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_'.$_GET['couleur'].'.css" />';
?
Autant faire :
$couleur = htmlspecialchars($_GET['couleur']);
if( isset($couleur) && !empty($couleur) )
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_' . $couleur; . '.css" />';
else
echo '<link rel="stylesheet" type="text/css" href="./css/acceuil_defaut.css" />';
Nan?
Ça ne revient pas tout à fait au même, car potentiellement on pourrait passer n'importe quelle valeur a 'couleur' et on se retrouverait avec une feuille inexistante

Mais dans son code, du coup il pourrait ecrire "vert" en dur directement lol
Oui, c'est ce que j'ai compris après, c'est pourquoi j'ai inséré une simple regex dans le code précédent

Posté : 26 janv. 2008, 17:44
par arno77
je fais un
echo 'titi '.$_GET['couleur']. 'toto';
eet j'obtiens a l'affichage titi toto
Posté : 26 janv. 2008, 17:45
par cf357
Quand tu vas sur ta page comme ça :
http://..../mapage.php?couleur=vert
?