2012-09-11 35 views
0

我正在從一個Ajax調用這個PHP腳本:SQL語句轉換值,而不是插入到數據庫

<?php 

    require_once('myConnectDB.inc.php'); 

    //add beer to database code 
    $uID = $_GET['uID']; 
    $uName = $_GET['uName']; 
    $fID = $_GET['fID']; 
    $fName = $_GET['fName']; 

    //data from ajax call: "uID="+reqID+"&uName="+reqName+"&fName="+frID+"&fID="+frName, 

    //add above data to database 
    $db = new myConnectDB(); 
    error_log("Successfully created DB");      


    error_log("uid" . $uID);  
    error_log("uName" . $uName);  
    error_log("fID" . $fID);  
    error_log("fName" . $fName);  

    $query3 = "INSERT INTO friends (userID,userName, friendID, friendName, friend) VALUES ($uID, '$uName' , $fID , '$fName' , 1)"; 
    $result = $db->query($query3); 

    error_log("Ran query [$query3] and got result: " . print_r($result, true)); 

    ?> 

我插入的error_log,試圖找出爲什麼我的查詢是不插入到我的數據庫。這是我的日誌輸出:

[10-Sep-2012 20:36:54] Successfully created DB 
[10-Sep-2012 20:36:54] uid6 
[10-Sep-2012 20:36:54] uNametest 
[10-Sep-2012 20:36:54] fIDmike 
[10-Sep-2012 20:36:54] fName3 
[10-Sep-2012 20:36:54] Ran query [INSERT INTO friends (userID,userName, friendID, friendName, friend) VALUES (6, 'test' , mike , '3' , 1)] and got result: 

我覺得奇怪什麼在這裏,而在尋找的錯誤日誌似乎有些地方在我的PHP它切換OOF FNAME和FID有數值應被交換的值。

這是扭曲的還是我看起來很明顯?

+1

對不起,夥計們,完全沒有:這是AJAX調用中的一個簡單的參數混合。安全問題與此分離 - 這並不是說它不那麼重要。 –

+0

我沒有看到明確重複投票的理由,我沒有辦法找到解決問題的方法。 – Mike

+0

..然後我們可以*只希望*這個問題是封閉的,因爲太本地化或所有者撤回。 – 2012-09-11 02:04:13

回答

1

看看你的AJAX調用:

"uID="+reqID+"&uName="+reqName+"&fName="+frID+"&fID="+frName, 

這的確看起來好像fID將進行frName,而fname將進行frID

在一個側面說明:您會欣賞,那東西像

',1); DROP TABLE friends; -- 

一個fName將是非常有趣的?

+0

感謝您的幫助,我一直在尋找它很長一段時間,它看起來像是我需要的第二套眼睛。是的,我會加入:real_escape_string的一些安全性:-) – Mike