javascript - Xhr 多个请求

标签 javascript xmlhttprequest

我已编辑我的任何旧问题

这段代码是我写的。

<!DOCTYPE html>

<html>
<center><h1>csrf testing</h1    >
<form action="">
<input type="submit" onclick="" value="go">
</form>


<script>
var params = "email=nlkm&username=asc&csrf_token=&go=go"; 

 var xhr    =   new XMLHttpRequest();

 xhr.onreadystatechange = function(){
 if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200 ){

            var xhr2 = new  XMLHttpRequest();
            xhr2.open("POST", "useredit.php", false);
            xhr2.setRequestHeader("Content-Type", "x-www-form-urlencoded");
            xhr2.send(params);


            }           
 };
 xhr.open("GET", "useredit.php", false);
xhr.send(); 
</script>


</html>

现在的问题是,当我的第二个请求启动时,响应与第一个请求的响应相同。使困惑?好的,**我有一个提交一些参数和 csrf token 的表单。

现在,在该代码上,有两个请求**第一个是用户编辑页面上的 GET 请求,第二个是 POST 请求,该请求提交用户编辑页面上的表单以及表单的响应将在同一页面上产生结果。

现在,当我通过此代码提交表单而不提供 csrf token 时,响应与我对第一个请求的响应相同。 它应该响应 token 无效,但事实并非如此。

那么这里有什么问题呢?希望你现在明白了吗?

最佳答案

在查询字符串中添加引号。

$sql2 = "SELECT * FROM userinfo WHERE email ='".$_GET['userid']."'";

因此,如果 $_GET['userid'] == "someuser@example.com",则 $sql2 的值将为:

"SELECT * FROM userinfo WHERE email ='someuser@example.com'"

输入值用引号引起来。

在您的版本中,该值将是:

"SELECT * FROM userinfo WHERE email =someuser@example.com"

这是无效的 SQL。

关于javascript - Xhr 多个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47368356/

相关文章:

javascript - 父级具有动态段的 TransitionTo 子路径

javascript - 滚动页面时保持页面元素在 View 中

javascript - 动态加载 html 后 jquery 自动完成功能不起作用

javascript - XmlHttpRequest 过早返回状态 4

javascript - 仅在 IE9 上存在的 ajax 调用中的访问被拒绝

javascript - 在单文件 Shiny 应用程序中包含 javascript 文件

javascript - 如何用类部分替换 YUIDoc 的索引部分?

javascript - Chrome 忽略扩展中来自 XMLHttpRequest 的 Set-Cookie 响应 header

javascript - 如何在 UI5 中等待 JSONModel.loadData() 请求

jquery - 为什么 Blueimp 的 JQuery 文件上传会添加所有上一个文件。选定的文件,即使选项 [replaceFileInput : false] and [maxNumberOfFiles: 1] are set on init?