PHP - 重定向 REQUEST_URI - 正确的方法?

标签 php redirect web

我创建了一个网站(纯粹的爱好)。我基本上所做的就是使用 jquery 在后台调用所有 ajax。是的,它不会受到 SQL 注入(inject)的影响,因此不会造成任何损害,但是我不希望用户检查 firebug/开发人员工具并尝试使用 URI 并在 URL 工具栏中手动输入它并获得结果。我该如何防止这种情况发生?

示例,用户在 URL 框中输入: www.something.com/datapull.php?get=Data&Person=Sean

我有类似的东西:

if(strpos($_SERVER['REQUEST_URI'],'/datapull.php') !== false) { header('Location: /'); }

但是当我这样做时,我的网络就会陷入无限循环。我基本上希望网络始终处于:www.something.com

如何在无需用户手动输入的情况下将其保留在该地址?

最佳答案

要详细说明我的评论,您可以尝试这个..

在 ajax 请求文件中,您可以检查 $_SERVER['HTTP_REFERER'] 是否已设置,并包含您自己的域名。

这是一个简单的例子..

index.php

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <title>Ajax Test</title>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
    </head>
    <body>
        <div class="ajax_receiver">

        </div>
        <script>

            $('.ajax_receiver').load('data.php');

        </script>
    </body>
</html>

数据.php

<?php

    print_r($_SERVER);

如果按原样运行,您将看到 $_SERVER 的内容,并且应该看到 HTTP_REFERER。

我们现在需要做的就是向 ajax 请求页面(在本例中为 data.php)添加一个条件,如果未设置该条件,或者不是来 self 们的域的请求,则退出。

data.php(已更新)

<?php
    if ( ! isset($_SERVER['HTTP_REFERER']) || strpos($_SERVER['HTTP_REFERER'], $_SERVER['SERVER_NAME']) === false)
    {
        exit;
        // or take whatever exit action you want here
    }
    print_r($_SERVER);

希望您可以使用它来入门。

关于PHP - 重定向 REQUEST_URI - 正确的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16932708/

相关文章:

php - wordpress 中的错误插入到自定义表值中为空或 null

php - 发送带有附加 php 文件的邮件,该文件从数据库中获取数据

c# - 更改 DropDownList 选项时使用参数重定向到 MVC ActionResult

amazon-web-services - 将旧 RDS 流量重定向到 AWS 中的新 RDS

python - 从 Django 0.96 到 Django 1.2 重建网站

html - 在整个网站上保持不变的标题

php - 是什么让 php session 保持事件状态?

django - 在当前 View 上执行 POST 后记住您来自哪个 View

spring - org.springframework.orm.hibernate4 maven 或 jar 下载

php - 在给定初始经纬度、距离和方位角的情况下,在 php 中查找经纬度点