2012-11-15 42 views
0

晚上好友們,我有一個小問題,我試圖解決,但只是不能,我希望你能幫助。使用cURL在一個變量中發佈一個常量

我有一個腳本,通過cURL發送字符串到網站。這表現完全如預期,並且網頁響應正常。我的問題是,我想在網站上定義一組定義(出於說明目的,以下示例:)。我已經添加了一個對存儲定義的文件的引用,這就像一個魅力。

define('TABLE_COUNTER','counter');

假設(所有安全和天書除外)我的網站我送對劇本有一個簡單的:

的mysql_query($ _ POST [ 'AAA']);

其中$ _POST ['aaa']將是一個有效的查詢。如果在問題的網站上我做了以下操作,結果將會執行:

mysql_query(「SELECT * FROM」。TABLE_COUNTER);

換算成:

的mysql_query( 「SELECT * FROM計數器」);

但是,我似乎無法得到在網站結束腳本執行任何sqlquery常量定義。任何幫助將不勝感激(我在這裏失去了很多頭髮!)。

謝謝!

+0

你得到了什麼錯誤? –

+0

標準無效查詢(因爲實際發送的查詢是以下內容:SELECT * FROM)TABLE_COUNTER – ScottMcGready

+0

是否在您打算使用它的頁面上定義了TABLE_COUNTER?是否已將錯誤報告設置爲顯示包括通知在內的所有錯誤? –

回答

0

做到這一點的方法是使用eval

$myquery_string = 'mysql_query('.$_POST['aaa'].');'; 
eval($myquery_string); 

不過,我真的不建議這樣做,因爲這意味着表單輸入幾乎可以包含有效的PHP代碼,它會被執行通過你的腳本。這比典型的SQL或XSS注入更糟糕。

此外,填寫表單時,用戶將不得不圍繞查詢的文字部分包含所有必要的引號。

更好的解決方案是爲輸入定義模板語言,並讓PHP腳本用適當的常量替換模板佔位符。但我不會爲你寫這個。

+0

Now這很酷,我喜歡那樣。我已經採取了一些措施阻止SQL注入,但感謝您的意見。 – ScottMcGready