[php] utiliser $_GET dans l'adresse

Fermé
sim - 31 mars 2009 à 18:47
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 - 8 avril 2009 à 17:42
Bonjour à tous!
Je cherche à utiliser les données envoyés par un formulaire pour indiquer l'include

<?php
		
		if (isset ($_GET['page']))
			{
				$_GET['page']=$page;
				include ($page.'.php'); 
			}
		else
			{
				include ('accueil.php');
			}
			
			
			

				
		
				
				
		?>


Donc suivant ce qu'il y a dans l'adresse : ?page=accueil
par exemple,
je coudrais faire include ('accueil.php');

Mais ce que je fait ne marche pas ....

merci de votre aide :
A voir également:

14 réponses

Bigfish72 Messages postés 79 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 11 avril 2009 4
31 mars 2009 à 19:08
Mettons que tu aies 10 pages différentes que tu peux inclure, le mieux est de tester dans un array() la présence ou non de la valeur de ta variable obtenue par GET. Si elle est présente, c'est ok, pas de soucis, sinon tu envois une page par défaut au cas où un rigolo s'amuserait à modifier l'url.
2
Bigfish72 Messages postés 79 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 11 avril 2009 4
31 mars 2009 à 18:55
Salut,

normal : $_GET['mavariable'] correspond à la variable contenue dans l'url. Par exemple, tu as l'url :

monsite.com/index.php?couleur=rouge

Pour récupérer la valeur 'rouge' tu fais :

$couleur=$_GET['couleur'];

donc dans ton cas ça ferait :

if (isset ($_GET['couleur']) and $_GET['couleur']=='rouge')
{
include ('page.php');
}
else
{
include ('accueil.php');
}

Après tu remplaces couleur par ce que tu veux.
0
Harricote Messages postés 417 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 30 janvier 2011 41
31 mars 2009 à 18:55
Salut,

essaye ceci :
<?php if (isset ($_GET['page']))
{
$page = $_GET['page'];
include("'.$page.'".php");
}
else
{
include ("accueil.php");
}
?>

Je ne suis pas sûr que ca marche mais essaye quand même !
0
Bigfish72 Messages postés 79 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 11 avril 2009 4
31 mars 2009 à 18:58
<?php if (isset ($_GET['page']))
{
$page = $_GET['page'];
include("'.$page.'".php");
}
else
{
include ("accueil.php");
}
?>

Attention avec les variables récupérées par POST ou GET : ne jamais les afficher sans les contrôler parce si je mets ça dans l'url :

monsite.com/index.php?page='Et hop une injection de la mort qui tue'

Tu vas pas apprécier ;)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Harricote Messages postés 417 Date d'inscription mercredi 21 janvier 2009 Statut Membre Dernière intervention 30 janvier 2011 41
31 mars 2009 à 19:05
Sauf que il faut tout mettre :

if (isset ($_GET['couleur']) and $_GET['couleur']=='rouge' || $_GET['couleur']=='yellow' || $_GET['couleur']=='pink' || $_GET['couleur']=='orange'.......)
{
include ('page.php');
}
0
merci pour toutes ces réponses !
En fait ce que j'avais fait au début, c'était ça :
if (isset ($_GET['page']))
			{
				if ($_GET['page']=="accueil")
					{ include ('accueil.php'); }
				else
					if ($_GET['page']=="tarifs")
						{ include ('tarifs.php'); }
					else
						if ($_GET['page']=="galerie")
							{ include ('galerie.php'); }
						else
							if ($_GET['page']=="contact")
								{ include ('contact.php'); }
							else 
								{echo ('la page n\'éxiste pas !');}
			}
		else
			{include ('accueil.php'); }
			


Sauf que, si je rajoute des pages, j'ai pas envi de m'amuser à rajouter un condition à chaque fois (ou changer avec case etc ..., ca reviens au même)
Et pour le controle dont parle bigfish comment faire ?

merci!
0
Bigfish72 Messages postés 79 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 11 avril 2009 4
1 avril 2009 à 12:17
Salut,

si tu débutes laisse tomber pour le moment cette histoire de contrôle. A partir du moment où tu n'as pas un site vraiment visité ce n'es pas gênant. retiens juste qu'avec la méthode de récupération des variables obtenues par POST et GET il faut toujours contrôler les variables. Pour le GET, tu le protégera quand tu apprendras à utiliser les tableaux et la fonction array().

Pour le moment, oublie si tu ne connais pas la fonction array(), ça évitera de t'embrouiller l'esprit.
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
1 avril 2009 à 12:26
salut,
$pages = array('page1', 'page2', 'page3', 'page4', 'page5');
if(filter_has_var(INPUT_GET, 'page'))
{
	$page = filter_get_var(INPUT_GET, 'page');
	$page = in_array($page, $pages) ? $page : $pages[0];
}
else
	$page = $pages[0];

include("dossier/$page.php")

quand tu as besoin j'ajouter une page tu l'ajoutes simlement dans le tableau de la première ligne, sachant que la page par défaut est la première page du tableau.
0
ok merci, donc obligation d'utiliser array ?
c'est pas du tout possible de faire quelque chose comme ce que j'avais pensé ?

Sinon niveau protection, ça reviens au même que ma version en if/else non ?
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
1 avril 2009 à 19:31
obligation d'utiliser array ?
ben c'est plus pratique et si tu dois utiliser PHP tu peux apprendre à utiliser les tableaux tout de suite, c'est un concept fondamental et c'est tout bête à comprendre.
0
a nan mais je connais déjà array, mais c'est vrai que je ne l'utilise pas plus que ça ....
0
Bonjour, voilà ce que j'ai fait :

		$tab_pages = array(
			0 => 'accueil',
			1 => 'blog',
			2 => 'realisations',
			3 => 'profil',
			4 => 'contact'
		);
		
		if(filter_has_var(INPUT_GET, 'page'))
			{
			$page_ask = filter_get_var(INPUT_GET, 'page');
			$page = in_array($page_ask, $tab_pages) ? $page : $pages[0]; /* in_array — Indique si une valeur appartient à un tableau */
			}
		else
			{
			$page = $pages[0];
			}
		include("$page.php");
			
	
			


Mais il me sort
Fatal error: Call to undefined function filter_get_var() in C:\Documents and Settings\xp\Mes documents\Sites\pandanet2\index.php on line 109


Je ne comprends pas ça
 ? $page : $pages[0]

...

Merci pour votre aide !
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920 > sim
8 avril 2009 à 16:37
salut,

Call to undefined function filter_get_var()

oups…
filter_input(), remplace juste le nom de la fonction.

Je ne comprends pas ça
c'est l'opérateur ternaire.
0
Utilisateur anonyme
8 avril 2009 à 15:00
<?php

if (isset ($_GET['page']))
{
$_GET['page']
include ($_GET['page']');
}
else
{
include ('accueil.php');
}


?>
0
votre code ne marchant pas, j'ai refait mon code à ma sauce, le voici :

		$tab_pages = array(
			0 => 'accueil',
			1 => 'blog',
			2 => 'realisations',
			3 => 'profil',
			4 => 'contact'
		);
		
			if (isset ($_GET['page']))
				{
				$page_ask = $_GET['page'] ;

				
					if (in_array($page_ask, $tab_pages) == 1)   /* in_array — Indique si une valeur appartient à un tableau */
						{ 
						$page=$_GET['page'];
						}
					else 
						{ 
						$page=$tab_pages[0];
						}
					
				}
		include("$page.php"); 


est ce correct niveau sécurité ?
0
Dalida Messages postés 6728 Date d'inscription mardi 14 mai 2002 Statut Contributeur Dernière intervention 11 janvier 2016 920
8 avril 2009 à 17:42
oui, tu n'as pas besoin de "filter" puisque tu utilises une liste blanche.
0