Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.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文件发送不必要的帖子_Php_Python_Ajax - Fatal编程技术网

停止向PHP文件发送不必要的帖子

停止向PHP文件发送不必要的帖子,php,python,ajax,Php,Python,Ajax,上面你可以看到谷歌的账户注册页面,告诉我用户名已经被使用了。首先,我认为它是这样通知我的: 当文本输入失去焦点时,会对Google web服务器中的某个文件进行AJAX调用 服务器(我相信运行Python?)处理用户名并通过查询对数据库执行检查 数据库执行查询后,结果将返回到服务器 然后它被返回到浏览器,在那里它变得漂亮,并以一种对用户有用的方式通知我结果 我的问题是处理发生在哪里。无论处理发生在何处,它都纯粹用于此页面。作为任何人,我都不应该在谷歌执行此检查的地方找到此文件,并将数据发布到其中

上面你可以看到谷歌的账户注册页面,告诉我用户名已经被使用了。首先,我认为它是这样通知我的:

  • 当文本输入失去焦点时,会对Google web服务器中的某个文件进行AJAX调用
  • 服务器(我相信运行Python?)处理用户名并通过查询对数据库执行检查
  • 数据库执行查询后,结果将返回到服务器
  • 然后它被返回到浏览器,在那里它变得漂亮,并以一种对用户有用的方式通知我结果
  • 我的问题是处理发生在哪里。无论处理发生在何处,它都纯粹用于此页面。作为任何人,我都不应该在谷歌执行此检查的地方找到此文件,并将数据发布到其中,然后看到响应。我想知道是什么阻止了我,Google是如何阻止我对正在进行检查的Python文件进行手动检查的?或者他们真的是吗

    目前,我正在使用PHP做与谷歌在这里做的完全相同的事情。通过AJAX调用的PHP文件与注册文件位于同一目录中,称为“check.PHP”。如果你要在我的web服务器上发布一个用户名到该文件,你会看到响应,这就是我需要停止的内容(或者我应该不停止它吗?)。如何做到这一点


    谢谢

    如果我理解正确,您正在尝试确定请求是否通过ajax,如果不是,请阻止请求

    对此,您有几个选项(可能会遗漏一些选项):

  • 将“session_id”附加到表单,并在“check.php”页面上对其进行验证。如果有效,则继续
  • 查找AJAX请求头(下面的示例)这不一定可靠,因为可以操纵标题
  • 使用jQuery
    ajax
    自己操作头部,然后在“check.php”上测试它
  • 选项2的示例:

    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'){
        // I'm AJAX!
    }
    

    您还有其他选择,但这应该是一个好的开始…

    如果我理解正确,您正在尝试确定请求是否通过ajax,如果不是,请阻止请求

    对此,您有几个选项(可能会遗漏一些选项):

  • 将“session_id”附加到表单,并在“check.php”页面上对其进行验证。如果有效,则继续
  • 查找AJAX请求头(下面的示例)这不一定可靠,因为可以操纵标题
  • 使用jQuery
    ajax
    自己操作头部,然后在“check.php”上测试它
  • 选项2的示例:

    if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'){
        // I'm AJAX!
    }
    

    您还有其他选择,但这应该是一个很好的开始…

    因此,您希望只允许通过AJAX“获取”响应?@BenCarey基本上是的,并且只允许从我的web服务器上的注册页面获得响应。您不应该能够在web服务器上创建一个文件,并对my check.php文件进行AJAX调用,以确定是否使用了用户名。你不应该只在我的注册页面上看到检查结果。编辑:我刚刚记得这是跨源代码的,无论如何都不起作用,所以你说的是对的(8-)这是一种非常冗长的询问如何在PHP页面上检测AJAX请求的方式!我会发布一个答案,你有很多options@BenCarey感谢本,这主要是因为我没有意识到我一开始想问什么。当我看到你的答案后,我将修改这个问题,使其更具相关性:)那么,你只希望通过AJAX获得响应?@BenCarey基本上是的,并且只允许从我的web服务器上的注册页面获得响应。您不应该能够在web服务器上创建一个文件,并对my check.php文件进行AJAX调用,以确定是否使用了用户名。你不应该只在我的注册页面上看到检查结果。编辑:我刚刚记得这是跨源代码的,无论如何都不起作用,所以你说的是对的(8-)这是一种非常冗长的询问如何在PHP页面上检测AJAX请求的方式!我会发布一个答案,你有很多options@BenCarey感谢本,这主要是因为我没有意识到我一开始想问什么。当我看到你的答案后,我会修改这个问题,使它更相关:)