使用php从URL获取数据的最简单,最有效的方法?

时间:2011-03-16 21:42:11

标签: php get

解决方案吗

显然没有更快的方法,我没关系。


我只是在学习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;
}

但那给了我一个Notice: Undefined variable: values in poll_results.php on line 14.第14行是$$values = $value.我不知道这是不是很重要......但是我不是因为我还在关闭错误报告在构建脚本的过程中。虽然它确实做了我想做的事情......

任何答案都会被复制并粘贴到我的问题中,以便下一个人知道:D

谢谢你们!

5 个答案:

答案 0 :(得分:1)

你的第二段代码是错误的。它应该像

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

如果我明白你的意图。但是,你基本上是在重新发明register_globals,......呃。那将会被黑客攻击。

如果你想获得某些变量,你可以这样做

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

不太可能覆盖某些重要变量(无论是偶然还是因为有人搞乱了URL)。

答案 1 :(得分:0)

使用parse_url()从您在字符串中获取的URL中提取查询字符串,然后parse_str()提取查询字符串的各个参数。

如果您想使用超级全局的内容污染您的脚本,则可以使用extract()。但请注意,这基本上是复制了名为“register_globals”的可怕怪物,并打开了各种安全漏洞。

对于即时,如果其中一个原始查询参数为_GET=haha,该怎么办?您现在已经通过$_GET覆盖extract()超全球来破坏它。

答案 2 :(得分:0)

  

我只是在学习php而我正在努力找出一些好的提示和技巧,所以我不会养成一个坏习惯,浪费时间。

     

如果我传递了5到6件事情,那会让人觉得麻烦,我不喜欢为每一个变量输入内容,这是唯一的原因。

除非被遏制,否则你要做的事情将成为一种坏习惯,甚至在此之前是浪费时间。

输入变量:你的数字就像运动一样,当你不必弄清楚哪些变量可用时(或者不是,或者可能是哪个变量),你的大脑可以轻松搞定使用变量变量的情况。)

答案 3 :(得分:-1)

您可以使用

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

保留键和值关联性。

答案 4 :(得分:-2)

变量变量($$value)是一个坏主意。上面的循环说你有一个名为$password的变量已经从其他来源定义。现在我可以发送$_GET['password']并覆盖你的变量!这可能导致各种各样的肮脏。这与PHP放弃register_globals基本上做同样事情的原因相同。

我的建议:尽可能使用$_POST。它可以让您的网址更加清晰。其次,没有任何理由将数组分配给变量,只需在程序中需要它们的地方使用它们。

有一个很好的理由,特别是在一个大型程序中,你会立即知道它们的来源,并且不应该信任它们的数据。

相关问题