Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 停止直接访问(.htaccess)并允许对子文件夹进行ajax请求_Php_Jquery_Ajax_.htaccess_Redirect - Fatal编程技术网

Php 停止直接访问(.htaccess)并允许对子文件夹进行ajax请求

Php 停止直接访问(.htaccess)并允许对子文件夹进行ajax请求,php,jquery,ajax,.htaccess,redirect,Php,Jquery,Ajax,.htaccess,Redirect,我试图停止直接访问子目录和子目录中的php文件。我已经将下面的代码添加到子目录中的.htaccess文件中,但是现在AJAX请求不起作用 如何停止访问www.example.com/subdir,但允许jQuery load和ajax函数工作 Options -Indexes order allow,deny deny from all 谢谢如果您的ajax函数访问该文件夹中的某个文件,您不能。因为AJAX是从客户端浏览器发送的请求。将此代码放入您的文档\u ROOT/.htacce

我试图停止直接访问子目录和子目录中的php文件。我已经将下面的代码添加到子目录中的.htaccess文件中,但是现在AJAX请求不起作用

如何停止访问www.example.com/subdir,但允许jQuery load和ajax函数工作

Options -Indexes
order   allow,deny
deny    from all

谢谢

如果您的ajax函数访问该文件夹中的某个文件,您不能。因为AJAX是从客户端浏览器发送的请求。

将此代码放入您的
文档\u ROOT/.htaccess
文件:

RewriteEngine On

## disable direct access (but allow internal or AJAX requests)
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.com/ [NC] 
RewriteRule ^subdir(/|$) - [F,NC]
用您自己的域名替换
www.domain.com


请注意,这使用
%{HTTP\u REFERER}
头来执行此阻止,并且可以操纵此头值。

您可以使用mod\u rewrite来限制对目录中所有特定文件的访问。将其添加到该目录中的
.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !(jsonp)|(ws)|(ajax)
RewriteRule .* - [R=404,L]

只需将jsonp ws-ajax替换为您的文件名。

我会将apache指令放在一边,也许会专注于基于php的解决方案:

  • 确保包含jQueryAjax调用的文件具有“.php”扩展名。 (当然,在该文件中,所有jquery都必须包含在
    标记中

  • 在ajax调用之前的jquery函数中,键入:

    (php标记即使包含在“脚本”标记中也会运行)

  • 打开ajax(php)文件,在最顶端键入以下内容:

  • 
    
    …你完了


    当然,您可以(或者更好:应该)重命名会话并给它们不同或更复杂的值,但我只是想指出基本思想…快乐编码!

    我找到了使用会话的最简单解决方案

    • 项目文件夹
      • index.php
      • 副处长
        • db_config.php
    假设要限制对db_config.php的直接访问

    你可以这样做。 从根目录中打开index.php并将其添加到代码的第一行:

    $sess = session_start();
    $_SESSION["nuclear_weapon_key"] = "lolva";
    
    现在转到sub_dir->opendb_config.php 将此选项添加到页面顶部:

    $sess = session_start();
    if(isset($_SESSION['nuclear_weapon_key']) && $_SESSION['nuclear_weapon_key'] === "lolva"){ } else{ echo "LOL"; die();}
    
    对任何包含文件的ajax/jquery重复此操作


    这对我很有用。

    当你说“操纵这个头值”时,请你详细说明一下好吗?这意味着客户端可以在
    %{HTTP\u REFERER}heade
    $sess = session_start();
    if(isset($_SESSION['nuclear_weapon_key']) && $_SESSION['nuclear_weapon_key'] === "lolva"){ } else{ echo "LOL"; die();}