Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.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://input" 已设置且不为空_Php_Xmlhttprequest - Fatal编程技术网

如何验证“是否”;php://input" 已设置且不为空

如何验证“是否”;php://input" 已设置且不为空,php,xmlhttprequest,Php,Xmlhttprequest,如何验证用户是否使用XMLHttpRequest向PHP发布了一些数据 这是最好的办法吗?如果没有,我怎么做 我有以下代码 if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') { // PROBABLY AJAX REQUEST } 我的问题是,如何验证php://input是否存在且不为空?我

如何验证用户是否使用XMLHttpRequest向PHP发布了一些数据

这是最好的办法吗?如果没有,我怎么做

我有以下代码

if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest') {
    // PROBABLY AJAX REQUEST
}
我的问题是,如何验证
php://input
是否存在且不为空?我认为以下代码可以完成这项工作,但需要知道这是否是一种正确的方法:

if(file_get_contents("php://input") == '') {
    // HAVE NOT POSTED
} else {
    // POSTED
}

您不能100%保证能够确定是否使用
XMLHttpRequest
请求了脚本。您可以检查
\u服务器['HTTP\u X\u REQUESTED\u WITH']
,但这不能保证在需要时设置,也不能保证在不需要时设置。不过,您可以尝试一下。

将自定义头设置为AJAX函数的一部分,并检查服务器端代码中是否存在该头

也许最好的方法是在服务器端生成一个密钥,将其传递给包含AJAX调用的客户端代码,然后让AJAX将其发送回服务器并验证它是否是有效的密钥。这是防止有人伪造AJAX请求的最有效方法


检查
php://input
存在且不为空,请使用此选项:

$phpinput = file_get_contents("php://input");
// From the docs: "Note: A stream opened with php://input can only be read once"
if( !$phpinput) {
    // phpinput is empty
}

好的,我有
if(isset($\u服务器['HTTP\u X\u请求的\u带有'])和&strtolower($\u服务器['HTTP\u X\u请求的\u带有'])==='xmlhttprequest'){
,我的问题是,如何验证
php://input
存在并且不是空的?数据应该通过常规的
\u POST
\u GET
发送。为什么需要使用stdin?因为数据不是随POST或GET发送的,无法解释更多细节,抱歉..当我这样做时:
文件\u GET\u内容(“php://input")
我不能再写一次,因为流将不可用?对。您只能读取该流一次,所以请立即将其放入变量中并处理它。