OVH Community, votre nouvel espace communautaire.

Problème fonction include page=''


cassiopee
01/06/2010, 14h35
Oui et dans le cas du 'switch' c'est le "default" qui sert à ça.

Gaston_Phone
01/06/2010, 13h58
OK, je n'avais pas fait attention au "if(file_exists($_GET['page'])) {".

cassiopee
01/06/2010, 13h56
Citation Envoyé par Gaston_Phone
Ta manip est dangereuse : Dans la barre d'URL
je remplace "&Page=Pagexxx.php" par "&Page=http://www.pirate.com/pirate.php"
et c'est la page du pirate qui serait appelée ? ?
Non car il y a un test sur le contenu de la variable "page" transmise et s'il n'y a
aucune correspondance, comme ce serait le cas avec "http://www.pirate.com/pirate.php",
alors on se rabat sur la page "accueil.php".

Gaston_Phone
01/06/2010, 12h57
Ta manip est dangereuse : Dans la barre d'URL je remplace "&Page=Pagexxx.php" par "&Page=http://www.pirate.com/pirate.php" et c'est la page du pirate qui serait appelée ? ?

EddyWat
01/06/2010, 12h28
Merci beaucoup les gars, ça marche nikel

FoXy602
29/05/2010, 10h51
Bonjour,

Voici la méthode que j'utilise mais qui n'est pas vraiment très sécurisée :

Code:
// Vérifie l'existence de la variable permettant d'appeler la page.
if(isset($_GET['page'])) {
	// Vérifie l'existence de la page appelée.
	if(file_exists($_GET['page'])) {
		// Includ la page appelée.
		include($_GET['page'].'.php');
	}
	// La page appelée n'existe pas, affichage d'un message d'erreur.
	else {
		// Affichage du message d'erreur.
		echo 'La page demandée n\'existe pas';
	}
// Aucune page appelée, affichage de la page accueil.
else {
	// Vérifie l'existence de la page d'accueil.
	if(file_exists('accueil.php')) {
		// Includ la page d'accueil.
		includ('accueil.php');
	}
	// La page d'accueil n'existe pas, affichage d'un message d'erreur.
	else {
		// Affichage du message d'erreur.
		echo 'La page d\'accueil (accueil.php) n\'existe pas.';
	}
}

cassiopee
29/05/2010, 01h11
Regarde bien ton if :

Code:
if ($_GET["page"] == 'accueil')
{
    include 'accueil.php';
}
else
{
    include 'accueil.php';
}
N'as-tu pas l'impression qu'il y a comme un problème de logique ?
Dans les deux branches du test, on fait exactement la même chose,
d'où effectivement le problème comme tu l'as deviné.


Pour un test de ce genre, un switch sera sans doute plus adapté :

Code:
switch ($_GET["place"])
{
	default:
	case "accueil" :
				include ('accueil.php');
				break;
	case "assistance":
				include ('assistance.php');
				break;
	case "nettoyage":	
				include ('nettoyage.php');
				break;
	case "decapage":
				include ('decapage.php');
				break;
	case "contact":
				include ('contact.php');
				break;
	case "preparation":
				include ('preparation.php');
				break;
	case "cnd":		
				include ('cnd.php');
				break;
}
Il pourrait être tentant d'écrire quelque chose de beaucoup plus simple en remplacement :

Code:
include ($_GET["place"].".php");
Une seule ligne qui *semble* revenir au même que tout le code ci-dessus
mais ce serait en fait une énorme faille de sécurité

EddyWat
29/05/2010, 00h50
Re, effectivement cela fonctionne

par contre maintenant j'ai ma page accueil qui se positionne systematiquement à la suite des pages qui sont appelées, surement à cause du else

Code:

EddyWat
28/05/2010, 10h24
Et bien comme on dit, vaut mieux un qui sait que 10 qui cherchent ^^
je vais essayer ça ce soir et je te dirai si ça fonctionne

merci !

cassiopee
28/05/2010, 10h15
C'est parce que ton code suppose que les variables transmises via l'URL sont
transformées en variables PHP.

Que "index.php?page=..." implique la création de la variables globale "$page"
dans le code PHP.

Or ce comportement est désactivé par défaut pour des raisons de sécurité.

Chez OVH il me semble que tu peux le réactiver en placant un fichier
".htaccess" à la racine de ton site avec comme contenu :

Code:
SetEnv REGISTER_GLOBALS 1
qui lui dit en substance de réactiver la création de variables globales à la volée.


Une autre (meilleure) façon de résoudre ton problème est d'écrire :

Code:
if($_GET["page"] == 'assistance'){include 'assistance.php';}
else{include 'accueil.php';}
qui utilise le tableau super global $_GET qui contient tous les paramètres
transmis via l'URL.

EddyWat
28/05/2010, 10h06
Bonjour a tous, j'aurai bien besoin d'un coup de main, je vous explique :
j'ai souscrit hier l'offre pro 100go pour le site d'un ami.
Avant cela je l'hebergeais sur mon serveur free et aucun soucis
le fonctionnement est simple, j'ai mon index.php dans lequel j'ai une fonction pour mon contenu.
Cela se rapporte a un fichier centre du style :

if($page == 'assistance'){include 'assistance.php';}
else{include 'accueil.php';}
?>

et dans mon index j'ai des liens de type :
assistance

mon soucis est donc que seule ma page accueil s'affiche, quand je clique sur les liens cela ne fait rien...

Je me doute que mon fichier centre doit être mal écrit ou il manque quelque chose dans mon index mais je ne trouve pas ( je suis noob en php)
je précise qu'une fonction include directement dans l'index fonctionne très bien, c'est juste les liens


Merci davance de votre aide et désolé s'il ya des fautes de frappe je suis sur téléphone

Merci