[php] utiliser $_GET dans l'adresse

sim -  
Dalida Messages postés 7114 Statut Contributeur -
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 88 Statut Membre 4
 
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 88 Statut Membre 4
 
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 424 Statut Membre 41
 
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 88 Statut Membre 4
 
<?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 424 Statut Membre 41
 
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
sim
 
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 88 Statut Membre 4
 
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 7114 Statut Contributeur 923
 
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
sim
 
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 7114 Statut Contributeur 923
 
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
sim
 
a nan mais je connais déjà array, mais c'est vrai que je ne l'utilise pas plus que ça ....
0
sim
 
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 7114 Statut Contributeur 923 > sim
 
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
 
<?php

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


?>
0
sim
 
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 7114 Statut Contributeur 923
 
oui, tu n'as pas besoin de "filter" puisque tu utilises une liste blanche.
0