解决方案吗
显然没有更快的方法,我没关系。
我只是在学习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
谢谢你们!
答案 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
。它可以让您的网址更加清晰。其次,没有任何理由将数组分配给变量,只需在程序中需要它们的地方使用它们。
有一个很好的理由,特别是在一个大型程序中,你会立即知道它们的来源,并且不应该信任它们的数据。