recuperer une variable passé dans un lien

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 : recuperer une variable passé dans un lien

par cf357 » 26 janv. 2008, 17:54

Quand tu vas sur ta page comme ça :

http://tonserveur/mapage.php?couleur=vert

?
Et la réponse à cette question ? :roll:

par arno77 » 26 janv. 2008, 17:53

oui ca ne marche pas
il est entré directement dans le cas ou la variable couleur n'existe pas sinon je n'obtien rien

par iclo » 26 janv. 2008, 17:50

Avant d'ajouter des controles supplémentaire, je proposerai de d'abord voir pourquoi on ne récupère pas cette variable comme escompté.

un petit :
print_r($_GET);
en début de code, ça donne quoi après avoir cliqué sur le lien ?

par Power Web » 26 janv. 2008, 17:47

Ta page est bien au format .php ?

par cf357 » 26 janv. 2008, 17:45

Quand tu vas sur ta page comme ça :

http://..../mapage.php?couleur=vert

?

par arno77 » 26 janv. 2008, 17:44

je fais un

echo 'titi '.$_GET['couleur']. 'toto';

eet j'obtiens a l'affichage titi toto

par Power Web » 26 janv. 2008, 17:26

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 :)

par cf357 » 26 janv. 2008, 17:25

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 ?

par Power Web » 26 janv. 2008, 17:24

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 ;)

par arno77 » 26 janv. 2008, 17:19

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

par Power Web » 26 janv. 2008, 17:17

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?

par Truc » 26 janv. 2008, 17:08

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.

par arno77 » 26 janv. 2008, 16:24

même comme ça cela ne marche pas

par cf357 » 26 janv. 2008, 16:16

Il faut que tu mettes ton code entre les balises <head> et </head> ;)

par arno77 » 26 janv. 2008, 15:59

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>&nbsp;</p>
			</div>
		</div>
	</body>
</html>