2012-01-27 223 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