2014-03-18 101 views
0

如果我有一個查詢字符串,如:http://mywebsite.co.uk/charge.php?val=5768驗證查詢字符串在PHP

我如何可以驗證該查詢字符串,如果用戶在查詢改變「VAL」的值拋出用PHP錯誤串。我可以在charge.php頁面上編寫一些代碼來執行此操作嗎?

+0

是的,你可以。我相信你可以弄明白。 – h2ooooooo

+0

請你能給我一個提示,也許我是新來的php – Rifki

+0

一般來說,Rifki,StackOverflow是用來發布你已經嘗試過的代碼示例,你得到了什麼錯誤,並尋求幫助修復這些錯誤。不適合人們爲你寫代碼。 – Rottingham

回答

2

在我看來,你在吠叫錯誤的樹。你無法檢測到某人是否「改變」了某些東西。你得到的只是一個URL的請求,就是這樣。您通常不知道該請求來自哪裏或誰提供了該URL;您需要根據自身的優點評估請求。

我猜你有一些保密的行爲,當有人訪問該網址時發生。價值觀改變了這一行動的一些重要部分。然後,您需要創建服務器端檢查和界限,以確認用戶目前是否可以執行他在此處請求的任何操作。您需要在服務器上存儲足夠的信息以確認用戶是否允許執行該操作。你不能簡單地信任URL中的信息,因爲任何人都可以篡改它。

如何做到這一點具體在你的情況是不明確的,因爲我沒有具體的想法那裏應該發生什麼。

+1

我很害怕它與6小時前的問題([使用Stripe](http://stackoverflow.com /問題/ 22481482 /條紋網關日誌犯規出現量))。我不願意在一個必須構建僅僅安全的代碼的網站上付款,因爲「我無法更改GET參數」。 – h2ooooooo

0

您可以檢查val是否爲整數,並且val是否存在於數據庫中。我用一個函數像下面的檢查整數:

// CHECK IF VALID INTEGER 
function valid_integer($str) 
{ 
    if (strlen($str) == strlen(preg_replace('#[^0-9]#i', '', $str) + 0) AND $str > 0 AND $str < 9999999999999) 
    { 
     return true; 
    } 
} 

這樣的話我可以檢查VAL像下面

if (valid_integer($_GET['val'])) 
{ 
    echo 'valid int'; 
} 
    else 
    { 
     echo 'not valid int'; 
    } 

然後你必須檢查VAL存在於數據庫中。如果你使用分貝。