在 XMLHttpRequest() 之后 PHP 定义不起作用

Posted

技术标签:

【中文标题】在 XMLHttpRequest() 之后 PHP 定义不起作用【英文标题】:PHP define not working after XMLHttpRequest() 【发布时间】:2021-06-04 17:53:59 【问题描述】:

我需要使用 php 常量变量保护文件,并且只能通过 index.php 访问文件。我需要通过 XMLHttpRequest 请求获取此页面,但是当我使用 javascript 的 XMLHttpRequest 在 index.php 的页面容器 DIV 中发送 page.php 的内容时,它不起作用并且总是重定向到主页。

我在同一个文件夹中有 4 个文件

1. index.php
2. page.php
3. get-page.js
4. protectedf.php

index.php 代码

<?php define("protectedf", TRUE); ?>

<div class="page-container"></div>

page.php 代码

<?php require_once("protectedf.php"); ob_start(); ?>
// some html inside page.php

get-page.js 代码

const pageContainer = document.querySelector('.page-container');
function mySettings() 
        const x   = new XMLHttpRequest();
        const url = 'page.php';
        x.open('GET',url);
        x.send();
        x.addEventListener('readystatechange',function()
            if (this.readyState == 4 && this.status == 200) 
                const xResult = this.responseText;
                pageContainer.innerHTML = xResult;
                this.abort();
            
        );

protectedf.php 代码

<?php
    if (!defined("protectedf")) 
        header("Location:http://localhost/homepage/");
        exit();
    
?>

【问题讨论】:

【参考方案1】:

只需在包含它的页面上添加define("protectedf", TRUE);:page.php

【讨论】:

以上是关于在 XMLHttpRequest() 之后 PHP 定义不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 ajax 中调用 PHP 函数,不推荐使用同步 XMLHttpRequest

在 php 中,如何获取 XMLHttpRequest 的 send() 方法的文本/纯文本值

通过 XMLHttpRequest 从 JavaScript 向 PHP 发送数据

将当前页面的 php 变量传递给 XMLHttpRequest2(即 $user_id)

使用 xmlhttprequest 将 javascript 变量传递给 PHP

通过 XMLHttpRequest 将 gettext 与 PHP 中的 Javascript 一起使用