2 votes

Empêcher str_replace de commenter le code php qui se trouve dans la chaîne de caractères.

J'essaie donc de créer un site Web et j'utilise un fichier php comme index (index.php) et plus ou moins comme page de contrôle de l'ensemble du site.

Puisqu'il reçoit toutes les demandes et renvoie les pages à l'aide de str_replace Le problème est que je ne peux pas avoir de code php dans les fichiers qui font partie du modèle, seulement dans index.php.

Donc ma question est, y a-t-il un moyen d'empêcher str_replace de transformer le code php en commentaires ?

Index.php :

<?php

//dirs
$pagesDir = "pages/";
$templatesDir = "templates/";
$errorsDir = "errors/";

if (isset($_REQUEST['page'])) {
    if ($_REQUEST['page'] != "")
        if (file_exists($pagesDir . $_REQUEST['page'] . ".html"))
            $page_content = file_get_contents($pagesDir . $_REQUEST['page'] . ".html");
    else
        if (file_exists($_REQUEST['page'] . ".html"))
            $page_content = file_get_contents($_REQUEST['pages'] . ".html");
            else
                echo "<h1>Page:" . $_REQUEST['page'] . " does not exist!       Please check the url and try again!</h1>";
} else {
    $page_content = file_get_contents($pagesDir . "home.html");
}

//PLACEHOLDER REPLACEMENT
$page_content = str_replace("!!HEAD!!", file_get_contents($templatesDir .    "head.html"), $page_content);
$page_content = str_replace("!!BODY!!", file_get_contents($templatesDir . "body.html"), $page_content);
$page_content = str_replace("!!FOOT!!", file_get_contents($templatesDir . "eofScripts.html"), $page_content);

//RETURN THE CONTENT OF THE PAGE
echo $page_content;

Nouveau répartiteur après les changements (celui-ci fonctionne) :

<?php
$templatesDir = "templates/";
$pagesDir = "pages/";
$loggedPagesDir = "templates/logged";
$pageExists = false;
$pageContent = null;
require_once('scripts/php/db_conn.php');

if (isset($_REQUEST['page'])) {
    $page = $_REQUEST['page'] . ".php";
}

if (isset($_SESSION['redirect_reason'])) {
    $dialogs->alertDialog("warningDialog", $_SESSION['redirect_reason']);
    unset($_SESSION['redirect_reason']);
}

if (isset($_SESSION['user_action'])) {
    $dialogs->alertDialog("infoDialog", $_SESSION['user_action']);
    unset($_SESSION['user_action']);
}

if ($user->is_logged()) { //Only runs beyond this point if user is logged, if not, it will run the other one.
    if (isset($_POST['logout_btn'])) {
        $user->logout();
        $user->redirect("pageDispatcher.php");
    }

    if (isset($page)) {
        if ($page != "") {
            if (file_exists($pagesDir . $page)) {
                $pageExists = true;
                $pageContent = ($pagesDir . $page);
            } else {
                echo "<h1>Page: " . $page . "does not exist! Please check the url and try again</h1>";
            }
        } else {
            $pageExists = true;
            $pageContent = ($pagesDir . "loggedhome.php");
        }
    } else {
        $pageExists = true;
        $pageContent = ($pagesDir . "loggedhome.php");
    }
} else { //Only runs beyond this point if user isn't logged.

    if (isset($_POST['login_btn'])) {
        if ($user->login($_POST['email'], $_POST['password']) == false) {
            $dialogs->loginFailed();
        } else {
            $_SESSION['user_action'] = "Welcome back " . $_SESSION['user_name'];
            $user->redirect("pageDispatcher.php");
        }
    }

    if (isset($page)) {
        if ($page != "") {
            if (file_exists($pagesDir . $page)) {
                $pageExists = true;
                $pageContent = ($pagesDir . $page);
            } else {
                echo "<h1>Page: " . $page . " does not exist! Please check the url and try again!</h1>";
            }
        } else {
            $pageExists = true;
            $pageContent = ($pagesDir . "home.php");
        }
    } else {
        $pageExists = true;
        $pageContent = ($pagesDir . "home.php");
    }
}
?>

<html>

<?php include($templatesDir . "head.html"); ?>

<body>
<?php
if ($user->is_logged()) {
    include($templatesDir . "loggedBody.html");
} else {
    include($templatesDir . "body.html");
}
include($pageContent);
?>
</body>
</html>

NOTE : N'utilisez pas cette méthode à moins que ce ne soit à des fins d'apprentissage, elle est mauvaise, peut s'avérer assez difficile à maintenir, et finira probablement par être lente puisque j'ai tellement de méthodes côté serveur de choses que je peux faire côté client.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X