2011-02-03 125 views
4

我對php還是有些新鮮,想知道從url中提取$_GET變量的最佳方法。如何正確提取獲取變量

例如怎麼樣把它出來的東西是這樣的:

http://www.blahblahblah.com/reset_password.php?token=3072420e7e32cbcf304da791537d757342cf5957 

只是想一切從「token=etc ...」

在此先感謝

回答

15

一個簡單的方法:

$token = isset($_GET['token']) ? $_GET['token'] : null; 

如果token設置它被分配給$token,否則$token爲null。

4

$_GET是陣列:

$token = $_GET['token']; 

因此,如果您打印o UT,你應該看到的查詢字符串的標記部分:

echo "'Token: $token'"; // should display 'Token: 3072420e7e32cbcf304da791537d757342cf5957'; 

注意

如果你要使用$令牌來搜索一個mysql數據庫,你需要先逃避斜線,以防止安全問題:

$token = mysql_real_escape_string($_GET['token']); 

而且,你首先需要有通話mysql_real_escape_string()前MySQL連接。

注意V.2

在您的查詢字符串,您的令牌將是?token=一切直到PHP遇到查詢關鍵字/對分隔符(通常,&;)。即:

http://www.blahblahblah.com/reset_password.php?token=3072420e7e32cbcf304da791537d757342cf5957&token2=otherstuff 

&token2=otherstuff將是另一個關鍵的訪問通過$_GET['token2'],所以它不會是一個問題與$_GET['token']

+0

這就是我一直在努力,但它產生什麼 – LightningWrist 2011-02-03 23:03:15

1

所以,你實際上有一個URL ,並希望提取值從:

$url = "http://www.example.com/reset_pw.php?token=3072420e7e32cbc..."; 

$p = parse_url($url);   // splits up the url parts 
parse_str($p["query"], $get); // breaks up individual ?var= &vars= 

print $get["token"]; 
0

解決方案1:

$token = isset($_GET['token']) ? $_GET['token'] : null; 

這裏如果變量是不返回null

解決方案2:

$token = $_GET['token'];