8791 sujets

Développement web côté serveur, CMS

Bonjour,

Je ne parviens pas à inclure mes pages PHP, actionnées par un menu, dans cette page Html:

Voilà mon code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<link rel="StyleSheet" type="text/css" href="css/template.css" />
<link rel="StyleSheet" type="text/css" href="css/contenu.css" />
<!--[if IE]>
<link type="text/css" rel="stylesheet" href="css/ie.css" />
<![endif]-->
</head>

<body>

<div id="conteneur">

<h1 id="header"><a href="index.php?contenu=accueil.php" title="Accueil"><span></span></a></h1>
<ul id="menu">

<li><a href="index.php?contenu/formation_web.php" title="formation">Formations Web</a></li>
<li><a href="index.php?contenu/realisation_web.php" title="réalisations">Réalisations Web</a></li>
<li><a href="index.php?contenu/diplomes.php" title="diplômes">Parcours & Diplômes</a></li>
<li><a href="index.php?contenu/contact-formulaire.php" title="contact">Etat Civil & Cont@ct</a></li>
</ul>

<div id="contenu" style="height:600px">

<?php'
if(isset($_GET["contenu"]) AND file_exists($_GET["contenu"].".php"))
{
include $_GET["contenu"].".php";
}
else
{
include "contenu/accueil.php";
}
'?>

</div>
</div>
<p id="footer">Choupy26</p>
</div>

</body>
</html>

Je n'arrive pas à afficher mes pages .php qui se trouvent dans le dossier contenu.

Une petite idée de ce qui coche?

Merci

Aquafish
Peut-être parce que tu rajoutes ".php" à la fin, alors qu'il apparaît déjà dans ta variable passé dans l'URL ?
Aussi tes liens ne devraient pas être :

index.php?contenu/formation_web.php


Mais :

index.php?contenu=formation_web.php


Le .php est à enlever soit à la fin de tes urls, ou directement içi :

if(isset($_GET["contenu"]) AND file_exists($_GET["contenu"].".php"))
{
include $_GET["contenu"].".php";
}
Hi Gabor,

J'ai fait cette modif, mais bon rien ne veut s'afficher dans ma page html index.php

Snif Smiley sweatdrop

ma page index.php


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title></title>
<link rel="StyleSheet" type="text/css" href="css/template.css" />
<link rel="StyleSheet" type="text/css" href="css/contenu.css" />
<!--[if IE]>
<link type="text/css" rel="stylesheet" href="css/ie.css" />
<![endif]-->
</head>

<body>

<div id="conteneur">

<h1 id="header"><a href="index.php?contenu=accueil.php" title="Accueil"><span></span></a></h1>
<ul id="menu">

<li><a href="index.php?contenu=formation_web.php" title="formation">Formations Web</a></li>
<li><a href="index.php?contenu=realisation_web.php" title="réalisations">Réalisations Web</a></li>
<li><a href="index.php?contenu=diplomes.php" title="diplômes">Parcours & Diplômes</a></li>
<li><a href="index.php?contenu=contact-formulaire.php" title="contact">Etat Civil & Cont@ct</a></li>
</ul>

<div id="contenu" style="height:600px">

<?php'
if(isset($_GET["contenu"]) AND file_exists($_GET["contenu"]))
{
include $_GET["contenu"];
}
else
{
include "contenu/accueil.php";
}
'?>

</div>
</div>
<p id="footer">Choupy26</p>
</div>

</body>
</html>
Modifié par Aquafish (17 May 2009 - 23:13)
Apparement tu ranges les fichiers à inclure dans un dossier qui s'appelle "contenu", donc tu devrais soit rajouter ça dans tes liens comme suit :

index.php?contenu=contenu/formation_web.php


ou rajouter ça directement içi :


if(isset($_GET["contenu"]) AND file_exists('contenu/'.$_GET["contenu"]))

{

include 'contenu/'.$_GET["contenu"];

}

Modifié par Gabor (17 May 2009 - 23:16)
salut

heu...là çà craint!! avec l'url du site, je m'invite chez toi...attention aux failles include.
on ne passe jamais l'url direct d'un fichier à inclure dans get, c'est très dangeureux.et on
doit toujours nettoyer la valeur get avant quoi que ce soit et utilisé include_once plutôt que
include.

// le fichier à inclure dans index.php

$action = false;

if (isset($_GET['contenu']) && !empty($_GET['contenu'])) {
	$action = trim(strip_tags($_GET['contenu']));
	
	switch ($action) {
		case 'formation_web' :
			include_once('contenu/formation_web.php');
			break;
		case 'contenu2' :
			include_once('contenu/contenu2.php');
			break;
		default :
			echo 'Merci de ne pas jouer avec les param&egrave;tres ! Not please play with the parameters !';
	}
} else {
	include_once('contenu/defaut.php');
}

index.php?contenu=formation_web

ou/et

function insert($insertion) {
		if (file_exists($insertion)) {
		    $url = $insertion;
                             clearstatcache;
		}
		else {
			throw new Exception('message erreur');
		}
		return $url;
}

et ensuite :

try {
  $url = insert('contenu/formation_web.php');
  include_once($url);
}
catch (Exception $e) {
	echo $e->getMessage();
}


c'est t'y pas mieux? en tout cas c'est moins dangeureux et...çà fonctionne Smiley cligne
Modifié par keran (18 May 2009 - 10:48)