有没有其他方法可以分配我没有的PHP变量';我不知道


Is there another way to assign PHP variables that I don't know about?

我正在调试一些让我感到困惑的客户端PHP代码。正如这个伪示例所示,在表单提交的接收端有一个代码,它处理表单值,但从未明显分配过这些值:

(在提交表单时,表单有"名称"answers"职位"字段):

echo "The name is = ". $name;
echo "The position is = ". $position;

此代码是大型应用程序的一部分,在此之前会调用其他文件中的代码。但关键的一点是,如果我在整个代码库中搜索"$name=",它永远不会出现。那么,请求变量怎么可能被分配给$name呢?除了$var = value之外,还有其他方法可以为PHP中的变量赋值吗??

我唯一的其他线索是这个项目使用了Smarty,我对此一无所知。

创建代码的人可能在register_globals打开的服务器上工作。例如,这样做的目的是作为表单提交的结果创建常规全局变量,而不是填充$_POST或$_GET数组。

如果register_globals指令在php.ini中设置为true,那么所有POST属性也将以您描述的方式显示为单个变量。请注意,此指令在默认情况下为false,并且不赞成使用此指令。

当你查看smarty文档时,你可以看到变量是这样分配的(从链接页面复制):

<?php
$smarty = new Smarty();
$smarty->assign('firstname', 'Doug');
$smarty->assign('lastname', 'Evans');
$smarty->assign('meetingPlace', 'New York');
$smarty->display('index.tpl');
?>

技术上是的。

$x = 'name';
$$x = 'harry';
echo 'Yer a wizard '.$name;

(如果这是原因的话,我会很惊讶)

我想你的服务器上有register_globals设置,它会自动从发布的项目中生成变量:

$_POST['foo'] === $foo

也许这是register_globals疾病的又一次爆发?

这被认为已经消失了,但一次又一次地浮出水面!

在我看来,有人包含这些变量是为了对它们做更多的处理,但从来没有抽出时间这样做。除非include php页面为这些变量赋值,否则它们什么都不会进去。

尝试提高错误报告级别,如果这些变量正在使用但尚未初始化,则会显示警告