有没有其他我不知道的分配PHP变量的方法?
我正在调试一些让我感到困惑的客户端PHP代码。正如这个伪示例所示,表单提交的接收端有一个代码,它处理表单值,但从来没有明显地分配这些值: 在提交表单时,表单包含“名称”和“位置”字段:有没有其他我不知道的分配PHP变量的方法?,php,smarty,variable-assignment,Php,Smarty,Variable Assignment,我正在调试一些让我感到困惑的客户端PHP代码。正如这个伪示例所示,表单提交的接收端有一个代码,它处理表单值,但从来没有明显地分配这些值: 在提交表单时,表单包含“名称”和“位置”字段: echo "The name is = ". $name; echo "The position is = ". $position; 此代码是大型应用程序的一部分,在此之前会调用其他文件中的代码。但关键的一点是,如果我在整个代码库中搜索“$name=”,它永远不会出现。那么,请求变量如何被分配到$name呢?
echo "The name is = ". $name;
echo "The position is = ". $position;
此代码是大型应用程序的一部分,在此之前会调用其他文件中的代码。但关键的一点是,如果我在整个代码库中搜索“$name=”,它永远不会出现。那么,请求变量如何被分配到$name呢?在PHP中,除了$var=value之外,还有其他方法给变量赋值吗
我唯一的另一个线索是,这个项目使用Smarty,我对此一无所知。听起来像是有人包含了这些变量,打算用它们做更多的事情,但从来没有这样做过。除非include php页面为这些变量赋值,否则这些变量中不会有任何内容。在我看来,有人包含这些变量是为了更好地使用它们,但从来没有这样做过。除非include php页面将值分配给这些变量,否则这些变量中不会有任何内容。可能是创建代码的人正在使用on的服务器上工作。例如,这样做的目的是创建常规全局变量作为表单提交的结果,而不是填充$\u POST或$\u GET数组。可能是创建代码的人正在使用的服务器上。例如,这样做的目的是创建常规全局变量作为表单提交的结果,而不是填充$\u POST或$\u GET数组。我猜您的服务器启用了register\u globals设置,它会自动从发布的项目生成变量:
$_POST['foo'] === $foo
我猜您的服务器已启用register_globals设置,该设置会自动从发布的项目生成变量:
$_POST['foo'] === $foo
如果该指令在php.ini中设置为true,那么所有POST属性也将以您描述的方式显示为单个变量。请注意,默认情况下,此指令为false,不推荐使用此指令。如果在php.ini中将该指令设置为true,则所有POST属性也将以您描述的方式显示为单个变量。请注意,默认情况下,此指令为false,不推荐使用此指令。尝试提高错误报告级别,如果这些变量正在使用但尚未初始化,将显示警告如果这些变量正在使用但尚未初始化,尝试提高错误报告级别,当您查看时,将显示一条警告,您可以看到从链接页面复制的变量分配如下:
<?php
$smarty = new Smarty();
$smarty->assign('firstname', 'Doug');
$smarty->assign('lastname', 'Evans');
$smarty->assign('meetingPlace', 'New York');
$smarty->display('index.tpl');
?>
当您查看时,您可以看到变量是这样分配的,它是从链接页面复制的:
<?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;
如果这就是原因的话,我会感到惊讶。从技术上讲,是的
$x = 'name';
$$x = 'harry';
echo 'Yer a wizard '.$name;
如果这就是原因的话,我会很惊讶,也许这是又一次疾病的爆发
这被认为已经消失了,但一次又一次地浮出水面 这可能是该病的又一次爆发
这被认为已经消失了,但一次又一次地浮出水面 +1用于提及Smarty,即使可能不正确;但是,这不只是影响tpl模板文件中可用的变量吗?我不确定,我从来没有真正使用过smarty,但我认为它使用了一些方法将变量分配给视图,就像这样分配。我只是想给你一个提示,告诉你在这个世界上还需要什么code@Yarin不,分配变量应该发生在.php文件中,该文件是将数据传递给视图的控制器。在.tpl文件中,您可以像这样访问这些变量:Hello{$firstname}{$lastname},很高兴看到您能做到这一点。再次摘自文件罗杰-这不是最终的罪魁祸首,但很高兴知道。+1感谢提及Smarty,即使可能不正确;但是,这不只是影响tpl模板文件中可用的变量吗?我不确定,我从来没有真正使用过smarty,但我认为它使用了一些方法将变量分配给视图,就像这样分配。我只是想给你一个提示,告诉你在这个世界上还需要什么code@Yarin不,分配变量应该发生在.php文件中,该文件是将数据传递给视图的控制器。在.tpl文件中,您可以像这样访问这些变量:Hello{$firstname}{$lastname},很高兴看到您能做到这一点。再次摘自文档罗杰-这最终不是罪魁祸首,但很高兴知道。谢谢你,它是梅奎因、贾斯莫和雅各布-我刚刚接受了教育谢谢你,它是梅奎因、贾斯莫和雅各布-我刚刚接受了教育,但在所有源代码页面中快速搜索“位置”应该会显示发生这种情况的证据。”“名字”可能太常见而无法搜索,但是
搜索“位置”并查看出现了什么。让我们知道这是不是真的!但只要在所有源代码页面中快速搜索“位置”,就会发现这种情况的证据“名称”可能太常见而无法搜索,但搜索“位置”并查看出现了什么。让我们知道这是不是真的!