Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/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 阿贾克斯不会做我想做的事_Php_Javascript_Jquery_Ajax - Fatal编程技术网

Php 阿贾克斯不会做我想做的事

Php 阿贾克斯不会做我想做的事,php,javascript,jquery,ajax,Php,Javascript,Jquery,Ajax,你能找到问题吗?它没有将它插入数据库,但我没有得到任何错误 是的,我找到了这段代码并对它进行了一些修改,我认为它应该可以工作,但它不能 rate.php $v = $_GET['v']; $conn = mysql_connect('***', '***', '***'); $db_selected = mysql_select_db('***', $conn); $sql="INSERT INTO votes (title_id, score) VALUES (1, $v)"; $res

你能找到问题吗?它没有将它插入数据库,但我没有得到任何错误

是的,我找到了这段代码并对它进行了一些修改,我认为它应该可以工作,但它不能

rate.php
$v = $_GET['v'];

$conn = mysql_connect('***', '***', '***');
$db_selected = mysql_select_db('***', $conn);


$sql="INSERT INTO votes (title_id, score) VALUES (1, $v)";
$result = mysql_query($sql) or die(mysql_error());

echo "Vote has been added.";

?>
title.php

<script type="text/javascript">
function addVote(str)
{
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
  }
xmlhttp.open("GET","include/ajax/rate.php?v="+str,true);
xmlhttp.send();
}
</script>
</head>
<body>

Rate: <a href="#" onclick="addVote(1)">1</a> <a href="#" onclick="addVote(2)">2</a> <a href="#" onclick="addVote(3)">3</a> <a href="#" onclick="addVote(4)">4</a> <a href="#" onclick="addVote(5)">5</a>

功能addVote(str)
{
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
document.getElementById(“txtHint”).innerHTML=xmlhttp.responseText;
}
}
open(“GET”、“include/ajax/rate.php?v=“+str,true”);
xmlhttp.send();
}
费率:

尝试在查询字符串的值中输入单引号:

$sql="INSERT INTO votes (title_id, score) VALUES ('1', '" . mysql_real_escape_string ($v) . "')";
和使用

mysql_real_escape_string(string$unescaped_string[,resource$link_identifier])

在要注入的变量上

看不到任何错误(就逻辑而言)。下面是一个模糊的调试答案:

首先,您应该直接调用php脚本,查看它是否输出以及输出的内容:

如果这样做有效,那么问题在于Javascript代码。尝试使用jQuery以确保:

function addVote(n) {
    $('#txtHint').load("rate.php?v=" + n);
}

添加时间戳以避免缓存:

xmlhttp.open("GET","include/ajax/rate.php?t="+new Date().getTime()+"&v="+str,true);
输入的验证:

$v = filter_input(INPUT_GET, 
                   'v', 
                   FILTER_VALIDATE_INT,
                   array(
                         'flags'     => FILTER_NULL_ON_FAILURE, 
                         'options'   => array('min_range' => 1, 'max_range' => 5)
                        ));
 if(!$v){exit();}

您似乎有SQL注入漏洞。为什么不回显正在生成的查询呢。现在它只是吐出“你投票了”。试试“你投票了,查询是$sql”。然后你就可以看到$V是否出现了。你应该考虑Ajax jQuery会使事情变得更容易,但是jQuery仍然是JavaScript。