还有另一种方法来分配我不知道的PHP变量吗?

时间:2012-02-21 19:54:59

标签: php smarty variable-assignment

我正在调试一些令我难过的客户端PHP代码。正如这个伪示例所示,表单提交的接收端有代码处理表单值,但没有显然分配这些值:

(在表单提交时,表单中有字段'name'和'position'):

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

此代码是大型应用程序的一部分,在此之前调用其他文件中的代码。但关键的一点是,如果我在整个代码库中搜索'$ name =',它就永远不会显示出来。然后,如何将请求变量分配给$name?是否有另一种方法为PHP 其他中的变量赋值而不是$var = value ??

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

8 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:5)

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

答案 2 :(得分:3)

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

<?php

$smarty = new Smarty();

$smarty->assign('firstname', 'Doug');
$smarty->assign('lastname', 'Evans');
$smarty->assign('meetingPlace', 'New York');

$smarty->display('index.tpl');

?>

答案 3 :(得分:3)

技术上是的,有。

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

(如果这是原因,我会感到惊讶)

答案 4 :(得分:2)

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

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

答案 5 :(得分:2)

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

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

答案 6 :(得分:1)

对我来说听起来像有人包含那些意图与他们做更多事情的变量,但从来没有这样做过。除非包含php页面为这些变量赋值,否则不会有任何内容。

答案 7 :(得分:1)

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