防止从ajax.php返回

时间:2014-02-24 14:54:04

标签: php jquery ajax return

在我的ajax.php中有:

   if(urlvar(2) == 'uploadphoto'){
       do... echo '<img... />';
   }

但是这个函数只能由一个jquery调用,返回一个特定的div。

但如果我访问URL:[http:// localhost / projectname / ajax / uploadphoto],此页面将返回带有一些错误的函数结果(因为参数是由jquery发送的)

如果在没有jquery的情况下访问文件,我如何防止返回?

*解决:

在没有jquery方法的情况下无法访问的函数中使用此函数。

    function isHttpRequest()
    {
        if( @$_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
            return true; //acessed by jquery
        }
        exit; // or return false -> from access the file without method
    }

3 个答案:

答案 0 :(得分:0)

当您通过jQuery访问该文件时,您可以编写如下内容:

method: "get"method:"post"(默认情况下,如果没有指定,我认为是GET)

所以,在你的ajax.php的开头 - put:

if(!$_GET){

     //[...the ajax.php code, here ...]

}

答案 1 :(得分:0)

我个人在每种形式中创建一个哈希 并且我检查该哈希是否正确,这可以防止人们从其他服务器提交表单,这可能对您的情况有所帮助 http://code.tutsplus.com/tutorials/secure-your-forms-with-form-keys--net-4753 如果哈希是错误的,那么它显然不会来自它应该来自

的形式

答案 2 :(得分:0)

修改ajax.php以检查请求是否为ajax调用。

if(empty($_SERVER['HTTP_X_REQUESTED_WITH']) 
   || strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) !== 'xmlhttprequest') {
   // not an ajax request
} else {
    if(urlvar(2) == 'uploadphoto'){
      do... echo '<img... />';
    }
}

或者只是在ajax.php

的开头查看