2012-01-27 82 views
-2

我不能让我的$ _ POST到一些reason..Here工作是代码:

* 的Javascript会从HREF onClick事件称为: *

function feedVote(postId, vote) { 
    if(vote == "1") { 
     document.getElementById('voteUpSpan' + postId).innerHTML = "Thank you for voting!"; 
     document.getElementById('voteDownSpan' + postId).innerHTML = ""; 
     var i = new Image(); 
     var d = new Date(); 
     i.src = "voteUp.php?time=" + d.getTime() + "&postId=" + postId; 
    } 
} 

所以它欺骗了一个图像,并运行我的voteUp.php页面传递参数而不改变当前页面。

<?php 
    $id = $_POST['postId']; 
    $con = mysql_connect("localhost", "username", "password"); 
    if (!$con) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db("database", $con); 

    $update = mysql_query("UPDATE posts SET upvote = upvote + 1 WHERE id = '$id'"); 

    mysql_close($con); 
    echo "$id"; 
?> 

echo“$ id”;它什么都不返回,所以它显然甚至没有把一个变量放在$ id这就是为什么我的SQL语句不运行,但为什么...

当我在谷歌克罗姆运行的代码,我使用网络跟踪功能下检查源代码,这是它在运行我的欺骗图像时触发的url。

test.com/voteUp.php?time=1327644851907 & =帖子ID 35

**我editted一些信息出来像我的数据库名和用户名/密码和网站网址。

+3

您正在使用GET,而不是POST! $ id = intval($ _ GET ['postId']); – Cheery 2012-01-27 06:36:23

+0

永远不要相信任何用户输入,使用'intval'和类似的函数。 – CSchulz 2012-01-27 11:01:10

回答

3

这些参数被称为GET params,而不是POST。

使用$_GET超级全局(使用与$_POST相同的方式)来访问它们。

+0

durrrrrrrrrrp非常感谢你 – 2012-01-27 06:39:42

0

使用$_GET阵列而不是$_POST访问URL中查询字符串(即在?字符之后)中出现的变量。

+0

非常感谢! – 2012-01-27 06:39:52

1

如果你想后,做一些jQuery的阿贾克斯后,像这样:

相反的:

var i = new Image(); 
var d = new Date(); 
i.src = "voteUp.php?time=" + d.getTime() + "&postId=" + postId; 

这种变化是:

$.ajax({ 
    url: "voteUp.php", 
    cache: false, 
    type: 'POST', 
    data: {time: d.getTime(), postId: postId}, 
    success: function(data){} 
}); 

注意:您需要的jQuery上那个网页!

+0

我已经在页面上使用了jquery,但代码无法正常工作。它没有增加我在数据库中的投票。 – 2012-01-27 08:28:52

+0

打印$ _POST和查询。你会发现这样的错误 – machineaddict 2012-01-27 10:09:14