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

使用php从URL获取数据的最简单、最有效的方法?,php,get,Php,Get,解决方案? 显然没有更快的办法,我同意 我只是在学习php,我正试图找出一些好的技巧和窍门,这样我就不会养成坏习惯,浪费时间 我正在将值传递到php脚本中。我正在使用$\u GET,因此URL如下所示: /poll\u results.php?Sports=网球&cat=体育&question=Pick+your+favorite+Sports 现在我知道如何接受这些值并将它们放入变量中,如下所示: $sports = $_GET['Sports']; $cat = $_GET['cat'];

解决方案?

显然没有更快的办法,我同意


我只是在学习php,我正试图找出一些好的技巧和窍门,这样我就不会养成坏习惯,浪费时间

我正在将值传递到php脚本中。我正在使用$\u GET,因此URL如下所示:

/poll\u results.php?Sports=网球&cat=体育&question=Pick+your+favorite+Sports

现在我知道如何接受这些值并将它们放入变量中,如下所示:

$sports = $_GET['Sports'];
$cat = $_GET['cat'];
$question = $_GET['question'];
超级简单,但如果我要传递5-6个东西,它可能会变得麻烦,我不喜欢为每个变量输入东西,这是唯一的原因。我知道有更好的方法。我已经尝试过
list($var,$var,$var)=$\u GET
,但这对关联数组不起作用,我想是索引数组

我也尝试过这样的变量:

foreach($_GET as $value) {
    $$values = $value;
    echo $$values;
}
但是这给了我一个
注意:未定义的变量:poll_results.php中的值,在第14行。
第14行是
$$values=$value。
我不知道这是不是一个大问题。。。但我并没有关闭错误报告,因为我仍在构建脚本的过程中。它做了我想让它做的事

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

谢谢大家

用于从字符串中的URL提取查询字符串,然后提取查询字符串的各个参数

若你们想用超全局的内容污染你们的脚本,那个么你们可以使用。但是,请注意,这基本上是在复制被称为“register_globals”的可怕怪物,并打开各种安全漏洞

例如,如果原始查询参数之一是
\u GET=haha
,该怎么办。现在,您已经通过
extract()

从字符串中的URL提取查询字符串,然后提取查询字符串的各个参数,从而将
$\u GET
超全局设置破坏

若你们想用超全局的内容污染你们的脚本,那个么你们可以使用。但是,请注意,这基本上是在复制被称为“register_globals”的可怕怪物,并打开各种安全漏洞

例如,如果原始查询参数之一是
\u GET=haha
,该怎么办。现在,通过
extract()

变量(
$$value
)覆盖
$\u GET
超全局变量是个坏主意。在上面的循环中,假设您有一个名为
$password
的变量,该变量已从其他源定义。现在我可以发送
$\u GET['password']
并覆盖您的变量!这会导致各种各样的肮脏。这与PHP放弃register\u globals的原因是一样的,它基本上做了相同的事情

我的建议是:尽可能使用
$\u POST
。一方面,它让你的URL更干净。其次,没有真正的理由将数组分配给变量,只需在程序中需要的地方使用它们即可

这样做的一个很好的原因,特别是在大型程序中,是因为您可以立即知道它们来自何处,并且它们的数据不应该被信任。

变量(
$$value
)是一个坏主意。在上面的循环中,假设您有一个名为
$password
的变量,该变量已从其他源定义。现在我可以发送
$\u GET['password']
并覆盖您的变量!这会导致各种各样的肮脏。这与PHP放弃register\u globals的原因是一样的,它基本上做了相同的事情

我的建议是:尽可能使用
$\u POST
。一方面,它让你的URL更干净。其次,没有真正的理由将数组分配给变量,只需在程序中需要的地方使用它们即可


这样做的一个很好的原因是,特别是在大型程序中,您会立即知道它们来自何处,并且它们的数据不应被信任。

您的第二位代码是错误的。应该是这样的

foreach ($_GET as $key => $value) {
    $$key = $value;
}
如果我理解你的意图。然而,你基本上是在重新发明register_globals,这……呃。那会让你被砍死的

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

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

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

您的第二段代码是错误的。应该是这样的

foreach ($_GET as $key => $value) {
    $$key = $value;
}
如果我理解你的意图。然而,你基本上是在重新发明register_globals,这……呃。那会让你被砍死的

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

foreach (array('Sports', 'cat', 'question') as $key)
{
    $$key = $_GET[$key];
}
它不太可能覆盖某些重要变量(无论是偶然还是因为有人乱动URL)。

您可以使用

foreach($_GET as $key => $value)
保留键和值的关联性。

您可以使用

foreach($_GET as $key => $value)
保留键和值的关联性

我只是在学习php,我正试图找出一些好的技巧和窍门,这样我就不会养成坏习惯,浪费时间

如果我要传递5-6个东西,它会让人感到麻烦,我不喜欢为每个变量都输入东西,这是唯一的原因

如果你不加以控制,你试图做的事情将会变成一个坏习惯,甚至在那之前都是浪费时间

输入变量:你的手指喜欢运动,当你的大脑不需要找出哪些变量可用时(或者不可用,或者可能;当你使用变量时会出现这种情况),你的大脑可以轻松应对

我只是在学习php,我正试图找出一些好的技巧和窍门,这样我就不会养成坏习惯,浪费时间

如果我通过了5-6项考试,那会很麻烦,我不喜欢把每项考试的内容都打出来