2012-01-02 15 views
-1

是有可能使用GET或像這樣加載到創紀錄的形式?使用url中的主鍵加載記錄?

例如,我有formA,它有一個所有客戶在數據庫中的foreach列表,在每行的末尾我有一個鏈接,稱爲'編輯',此鏈接轉到formB.php並設置出這樣>>

sitename.com/FormB.php?token=<?php echo $ID ?> 

這讓你看起來象下面的網址:

http://www.sitename.com/formB.php?token=25 

上面的鏈接將會例如ID爲25的記錄加載到第二種形式。

我不知道如何處理,雖然在第二形式的鏈接,你可以呼應第二種形式GET ID,或者它必須是GET令牌?

+0

你甚至讀過[doc](http://bd.php.net/manual/en/language.variables.superglobals.php)嗎? – 2012-01-02 14:01:39

回答

3

在PHP中,有預定義變量$_GET。這基本上是一個數組保存所有GET paremeters:

// url = index.php?foo=bar&hello=world 

echo $_GET['foo']; // bar 
echo $_GET['hello']; // world 

因此,考慮您的網址和查詢:

$query = 'SELECT * FROM `table` WHERE `token`=' . $_GET['token']; 

爲了避免安全漏洞,我們需要使用的功能mysql_real_escape_string圍繞用戶定義的參數當使用字符串。當使用其他類型如數字時,您可以將其解析爲數字。

// if token is a number 
$query = 'SELECT * FROM `table` WHERE `token`=' . intval($_GET['token']); 

// if token is a string 
$query = 'SELECT * FROM `table` WHERE `token`=' . mysql_real_escape_string($_GET['token']); 
+0

您的網址有錯字。 – TimWolla 2012-01-02 14:01:10

+0

感謝您的幫助,完美的作品! – 2012-01-02 14:03:45

1

您可以用$_GET - 陣列訪問GET參數。要看到什麼在那裏,你可以使用: print_r($_GET);

在第二種情況下,你將不得不使用$_GET['token']作爲參數被命名爲token

注:如果您傳遞參數到一個SQL查詢確保它是安全的。在這種情況下與intval()。 SQL注入是不好的。

相關問題