2012-01-24 89 views
0

我有类似:没有提取PHP提取()

if(isset($_POST['submit'])) 
    { 
    $linktitle=strtolower(str_replace(" ","-",$title)); 

$linktitle$title实际上是从$_POST变量 - 即$_POST['linktitle']$_POST['title']。不知何故,尽管(尽我所见!)在代码的这个阶段,我还没有提取()ed $ _POST,但它仍然有效 - PHP知道$ title是指$_POST['title']。任何人都可以解释为什么这可能是?

谢谢!

ps。对不起,但我真的不能得到这个内联代码报价格式的东西工作...!

回答

3

register_globals在您的PHP实例中启用。有关更多信息,请参见here

这是应该依赖的行为,因为它现在已被弃用。您会发现您仍然可以使用$_POST['keyname']以及$keyname,这就是您应该在代码中引用的内容。

1

您的php.ini文件必须启用register_globals,才能将GPC变量添加到符号表中。这就是你看到这种行为的原因。看看这个功能的安全风险here

1

你在你的web服务器(php.ini)中激活了register globals,所以PHP用对应的GET或POST值替换unknoe变量。此选项已被弃用且非常危险!如果可以,请禁用它!