PHP Session - включайте header.html один раз при использовании htaccess и Ajax - PullRequest
0 голосов
/ 05 декабря 2018

Моя страница имеет 2 раздела, заголовок и содержание.Чтобы не перезагружать заголовок в навигации, я использую Ajax для получения html-контента со страницы, которая ссылается на нажатую ссылку.В то же время я использую htaccess, чтобы перенаправить все в файл index.php, чтобы я мог контролировать каждый запрос и проверять его, возвращать HTML-контент.Проблема в том, что при первом доступе к странице я помещаю заголовок в шаблон.Затем я нажимаю на ссылку, поэтому Ajax вызывает и перенаправляет на index.php, потому что правило htaccess.Но в этом вызове возвращается содержимое и заголовок.Итак, у меня есть страница индекса внутри страницы индекса, и заголовок дублируется.Пытаясь узнать, когда заголовок уже загружен, чтобы не загружать его снова, я пытаюсь использовать сеансы, но я не знаю, как узнать, был ли заголовок действительно загружен или нет.Я не хочу использовать какую-либо информацию со стороны клиента, например, заголовки, из соображений безопасности.

index.php

<?php
session_start();

if(!isset($_SESSION["header_already_loaded"])){
    $_SESSION["header_already_loaded"] = true;
    require_once "header.html";
}

$routes = array(
    "/" => "home.html",
    "/profile" => "profile.html",
    "/config" => "config.html"
);

$uri = $_SERVER["REQUEST_URI"];

$file = isset($routes[$uri]) ? $routes[$uri] : $routes["/"];
echo '<div id="content">';
require_once $file;
echo '</div>';

?>

header.html

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>

    $(document).on('click', "a", function(e){

        $.ajax({
            async: false,
            url: this.pathname,
            type: 'post',
            success: function(ret) {

                $("#content").html(ret);

            }
        });

        return false;
    });

</script>

<style>
    #content{
        border: 1px solid black;
    }
</style>

<div id="header">
    <a href="/">Home</a>
    <a href="/profile">Profile</a>
    <a href="/config">Configurations</a>
</div>

htaccess:

DirectorySlash Off

RewriteEngine On

RewriteRule ^(.*)$ index.php [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...