Bonjour tout le monde, je fait appel a vous tous car j'ai un petit problème concernant mon site web: j'utilise en effet le ob_start pour intégrer les pages du site sur un template que je stocke dans une variable pour le reafficher... Cependant, j'ai certaines pages contenant du code php pur comme celle-ci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
 
<?php
Auth::allow(1, $session);
if (isset($_POST) && !empty($_POST))
{
	if (isset($_POST['article']))
	{
		$user = $_SESSION['Auth'];
		$article = ArticlesManager::getArticleByToken($db, $_GET['article']);
		if (isset($article) && !empty($article))
		{
			if ($user->getGrade() == 3)
			{
				ArticlesManager::acceptArticle($db, $_GET['article']);
				$session->setFlash('success', "L'article à été correctement accepté");
				App::redirect("index");
				die();
			}
			else
			{
				App::redirect("errors/403");
			}
		}
		else
		{
			App::redirect("errors/404");
		}
	}
	else
	{
		App::redirect("errors/403");
	}
}
else if (isset($_GET['article']))
{
	?>
 
 
	<div id="content">
		<h1>Confirmer la validation</h1>
		<form method="post">
			<input type="hidden" name="article" value="<?php echo $_GET['article'] ?>"/>
			<button type="submit">Confirmer la validation</button>
		</form>
	</div>
 
	<?php
}
else
{
	App::redirect("errors/403");
}
Cependant, ce n'est pas le contenu délivré par ce code mais le code brut qui s'affiche sur ma page comme le montre l'image ci dessous:

Nom : bug.png
Affichages : 170
Taille : 277,8 Ko

J'ai remarqué en inspectant l'élément que le code était remplacé par des commentaires HTML <!--...--> lors de la présence des balises PHP suivantes: <? ... $variable->methode();

Cela donne ce code (en regardant avec l'inspection de Chrome):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
<!--Contenu principal de la page-->
	    <article id="article">
		//Ici, ca devrait être le contenu et non du php qui s'affiche mais la balise <? à été transformée en <!--?
		<!--?phpAuth::allow(1, $session);if (isset($_POST) && !empty($_POST)){
                      if (isset($_POST['article'])){		
				$user = $_SESSION['Auth'];*
				$article = ArticlesManager::getArticleByToken($db, $_GET['article']);
				if (isset($article) && !empty($article))
				{
					if ($user--->getGrade() == 3) //Ici le code $user-> à été remplacé par $user--->
					{
						ArticlesManager::acceptArticle($db, $_GET['article']);
						$session->setFlash('success', "L'article à été correctement accepté");
						App::redirect("index");
						die();			
					}			
					else
					{
					App::redirect("errors/403");
					}
				}
				else
				{
					App::redirect("errors/404");
				}
			}
			else
			{
				App::redirect("errors/403");
			}
		}
		else if (isset($_GET['article']))
		{
	?>
	<div id="content">
		<h1>Confirmer la validation</h1>
		<form method="post">
			<input type="hidden" name="article" value="wcF8AdMn8ixZviiOADpqz5C9Y"/>
			<button type="submit">Confirmer la validation</button>
		</form>
	</div>
	<?php
}
else
{
	App::redirect("errors/403");
}
	    </article>
Ce bug ne s'est jamais produit et ne se produit ps en local (WAMP)...

Ma version de PHP est 5.6.19 sur mon serveur et en local, celle-ci est 5.5.12.

Merci de vos réponses futures,

Cordialement,

Quentin

PS: ma page d'index qui intègre le template et la page:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
<?php
	header( 'content-type: text/html; charset=utf-8' );
	/*Définition du fuseau horaire*/
	date_default_timezone_set('Europe/Paris');
	/*Ajout des objets permettant la gestion de tous les éléments du site*/
		/*Base de données*/
		require "class/bootstrap.php";
		$db = App::getDatabase();
		$session = Session::getInstance();
 
	/*Ajout de la connexion pseristante*/
	if(isset($_COOKIE['auth']) && !isset($_SESSION['Auth']))
	{
		$auth = $_COOKIE['auth'];
		$auth = explode(' ', $auth);
		$user = $db->query('SELECT * FROM users WHERE token = ?', array($auth[1]))->fetch();
		if($auth[1] == $user->token && $auth[2] == sha1($user->token.$user->password.$user->pseudo))
		{
			$session->setFlash('success', "Votre session à bien été récupérée");
			if(Auth::loginPseudo($db, $user->pseudo, $session, true))
			{
 
			}
			else
			{
				$session->setFlash('danger', "Une erreur s'est produite lors de la récupération de votre compte");
				setcookie('auth', '', time() - 3600, '/');
			}
		}
		else
		{
			setcookie('auth', '', time() - 3600, '/');
		}
	}
 
	/*Definition de la variable de la racine du site internet*/
	define("WEBROOT", "");
 
	/*Si la variable de page n'est pas définie, on redirige l'utilisateur vers l'accueil (index)*/
	if(!isset($_GET["p"]))
        {
            $_GET["p"] = "index";
        }
 
	/*Si la page spécifiée n'existe pas, on redirige l'utilisateur vers la page d'erreur 404 (not found)*/
        else if(!file_exists("content/".$_GET["p"].".php"))
        {
            $_GET["p"] = "/errors/404";
        }
 
	/*
	 *Demarrage de la mise en cache :
	 *Jusqu'à l'ob_end_clean(), aucune donnée n'est envoyée au navigateur,
	 *tout le code html est mis en cache et peut être enregistré dans une variable.
	*/
        ob_start();
	/*Inclusion de la page spécifiée (qui sera mise en cache et non envoyée au navigateur*/
        include("content/".$_GET["p"].".php");
	/*Enregistrement du contenu mis en cache dans la variable $content*/
        $content = ob_get_contents();
	/*Arrêt de la mise en cache et effacement des données mises en cache*/
        ob_end_clean();
 
	/*Affichage du thème*/
	include("template.php");
        //Dans le template, on a un echo $content; pour afficher la page