PHP会话-使用htaccess和Ajax

时间:2018-12-05 01:50:53

标签: php ajax .htaccess session

我的页面有2个部分,标题和内容。为了不重新加载导航中的标头,我使用Ajax从引用点击链接的页面获取html内容。同时,我使用htaccess将所有内容重定向到index.php文件,因此我可以控制每个请求并验证相同,返回html内容。问题是:当我第一次访问该页面时,我将标题放在模板中。然后,我单击一个链接,因为htaccess规则,所以Ajax被调用并重定向到index.php。但是,在该调用中,还返回了内容和标头。所以我在索引页中有一个索引页,并且标题是重复的。试图知道何时已加载标头而不再次加载它,我尝试使用会话,但是我不知道如何知道何时真正加载标头。出于安全原因,我不想使用客户端的任何信息(例如标头)。

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]

0 个答案:

没有答案