Как правильно извлечь переменные get - PullRequest
4 голосов
/ 04 февраля 2011

Я все еще немного новичок в php, и мне было интересно, как лучше извлечь переменную $_GET из URL.

например, как бы я запечатлел это из чего-то вроде этого:

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

просто хочу получить все от "token=etc ..."

заранее спасибо

Ответы [ 4 ]

17 голосов
/ 04 февраля 2011

Простой способ:

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

Если установлено token, ему присваивается значение $token, в противном случае $token равно нулю.

4 голосов
/ 04 февраля 2011

$_GET - это массив:

$token = $_GET['token'];

Поэтому, если вы распечатываете, вы должны увидеть часть токена строки запроса:

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

NOTE

Если вы пытаетесь использовать $ token для поиска в базе данных mysql, вам необходимо сначала избежать косой черты, чтобы избежать проблем с безопасностью:

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

Кроме того, сначала вам нужно иметьподключение mysql перед вызовом mysql_real_escape_string().

NOTE V.2

В вашей строке запроса ваш токен будет содержать все, начиная с ?token= пока PHP не встретит разделитель ключа / пары запроса (обычно & и ;).То есть:

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

&token2=otherstuff будет еще одним ключом, доступным для $_GET['token2'], поэтому с $_GET['token'].

проблем не будет.
1 голос
/ 04 февраля 2011

Таким образом, у вас действительно есть 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 голосов
/ 25 августа 2011

Решение 1:

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

Здесь, если переменная не установлена. Возвращает нуль

Решение 2:

$token = $_GET['token'];
...