Самый простой и эффективный способ получить данные из URL с помощью php? - PullRequest
2 голосов
/ 17 марта 2011

Решение?

Очевидно, что нет более быстрого способа, я в порядке с этим.


Я только учусь php, и япытаясь придумать несколько хороших советов и хитростей, чтобы я не впал в дурную привычку и не тратил время.

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

/poll_results.php?Sports=tennis&cat=Sports&question=Pick+your+favorite+sports

Теперь я знаю, как принять эти значения и поместить их в переменные следующим образом:

$sports = $_GET['Sports'];
$cat = $_GET['cat'];
$question = $_GET['question'];

Очень просто, если я пропускаю 5 - 6 вещей, это может стать утомительным, и я не люблю печатать вещи для каждой переменной, это единственная причина.Я знаю, что есть лучший способ сделать это.Я пробовал list($var, $var, $var) = $_GET, но это не работает с ассоциативным массивом, только индексированные (я думаю).

Я также пробовал переменные переменные, например:

foreach($_GET as $value) {
    $$values = $value;
    echo $$values;
}

Но это далоme Notice: Undefined variable: values in poll_results.php on line 14. Строка 14 - это $$values = $value. Я не знаю, имеет ли это большое значение или нет ... но я не отключаю отчеты об ошибках, так как все еще в процессе создания сценария.Это делает то, что я хочу, хотя ...

Любые ответы будут скопированы и вставлены в мой вопрос, так что следующий человек знает: D

Спасибо, ребята!

Ответы [ 5 ]

1 голос
/ 17 марта 2011

Ваш второй бит кода неверен. Это должно быть похоже на

foreach ($_GET as $key => $value) {
    $$key = $value;
}

если я понимаю ваше намерение. Тем не менее, вы в основном заново изобретаете register_globals, который .... эх. Это тебя взломает.

Если у вас есть определенные переменные, которые вы хотите получить, вы можете сделать как

foreach (array('Sports', 'cat', 'question') as $key)
{
    $$key = $_GET[$key];
}

, который с меньшей вероятностью перезапишет какую-то важную переменную (случайно или из-за того, что кто-то возился с URL-адресами).

0 голосов
/ 17 марта 2011

Я только изучаю php и пытаюсь найти несколько полезных советов и приемов, чтобы не попасть в плохую привычку и не тратить время.

Если я передаю 5 - 6 вещей, это может стать утомительным, и я не люблю печатать вещи для каждой переменной, это единственная причина.

То, что вы пытаетесь сделать, станет, если вас не обуздать, станет вредной привычкой и даже до этого - пустая трата времени.

Введите переменные : ваши цифры, такие как упражнения, и ваш мозг могут легко справиться с ситуацией, когда не нужно выяснять, какие переменные доступны (или нет, или, может быть; когда вы используете переменные переменные).

0 голосов
/ 17 марта 2011

Вы можете использовать

foreach($_GET as $key => $value)

Для сохранения ассоциативности ключа и значения.

0 голосов
/ 17 марта 2011

Переменные ($$value) - плохая идея. С вашим циклом выше, скажем, у вас есть переменная с именем $password, которая уже определена из какого-то другого источника. Теперь я могу отправить $_GET['password'] и перезаписать вашу переменную! Все виды гадости могут возникнуть в результате этого. По той же причине PHP отказался от register_globals, что по сути делает то же самое.

Мой совет: используйте $_POST, когда это возможно. Он сохраняет ваши URL намного чище с одной стороны. Во-вторых, нет никакой реальной причины назначать массив переменным в любом случае, просто используйте их там, где они вам нужны в программе.

Одна хорошая причина для этого, особенно в большой программе, заключается в том, что вы сразу узнаете, откуда они пришли, и что их данным нельзя доверять.

0 голосов
/ 17 марта 2011

Используйте parse_url() для извлечения строки запроса из URL, который вы получили в строке, затем parse_str() для извлечения отдельных аргументов строки запроса.

Если вы хотите загрязнить ваш скрипт содержимым суперглобальных элементов, вы можете использовать extract(). однако, имейте в виду, что это в основном копирует отвратительное чудовище, известное как «register_globals», и открывает все виды уязвимостей безопасности.

На мгновение, что если один из исходных аргументов запроса был _GET=haha. Теперь вы уничтожили суперглобальный $_GET, переписав его с помощью extract().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...