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:
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:
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"); }
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):
Ce bug ne s'est jamais produit et ne se produit ps en local (WAMP)...
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>
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
Partager