Php smarty-分配时出错

Php smarty-分配时出错,php,smarty,Php,Smarty,我是这样使用赋值的: $smarty->assign("akakak", $_POST[do]); 它在某些情况下是有效的,但在某些情况下是无效的 当我添加此参数时 $smarty->assign("akakak", $_POST[do], true); 它总是工作 为什么?您应该检查或设置默认值: <?php //Check it or set default for $do $do=(isset($_POST['do']))?$_POST['do']:''; //A

我是这样使用赋值的:

$smarty->assign("akakak", $_POST[do]);
它在某些情况下是有效的,但在某些情况下是无效的

当我添加此参数时

$smarty->assign("akakak", $_POST[do], true);
它总是工作


为什么?

您应该检查或设置默认值:

<?php 
//Check it or set default for $do
$do=(isset($_POST['do']))?$_POST['do']:'';

//Assign the $smarty var with $do
$smarty->assign("akakak", $do);
?>

您应该检查或设置默认值:

<?php 
//Check it or set default for $do
$do=(isset($_POST['do']))?$_POST['do']:'';

//Assign the $smarty var with $do
$smarty->assign("akakak", $do);
?>

分配超全局变量($\u GET、$\u POST、$\u REQUEST、$\u SESSION、$\u COOKIE、$\u SERVER、$\u ENV)的值是多余的。您可以通过变量
{$smarty.post.do}
在模板中访问其中任何一个

以下情况适用于Smarty3:

第三个参数是nocache标志。有关这方面的详细信息,请参阅。如果这确实解决了您的问题,那么真正的问题在于缓存。您可能有
$smarty->caching=true设置,在这种情况下,模板不会在每次调用时呈现,而是尽可能从缓存中读取

如果您需要进一步的帮助,您可能需要详细说明失败的案例


除此之外,请仔细查看其他建议
$\u POST['do']
超过
$\u POST[do]
的评论,如果适用,请使用
isset()
empty()

分配超全局值($\u GET,$\u POST,$\u请求,$\u会话,$\u COOKIE,$\u服务器,$\u ENV)是多余的。您可以通过变量
{$smarty.post.do}
在模板中访问其中任何一个

以下情况适用于Smarty3:

第三个参数是nocache标志。有关这方面的详细信息,请参阅。如果这确实解决了您的问题,那么真正的问题在于缓存。您可能有
$smarty->caching=true设置,在这种情况下,模板不会在每次调用时呈现,而是尽可能从缓存中读取

如果您需要进一步的帮助,您可能需要详细说明失败的案例


除此之外,请仔细查看其他建议
$\u POST['do']
超过
$\u POST[do]
的评论,以及
isset()
empty()
的使用(如果适用)。

在分配之前,您是否先检查
if isset($\u POST['do'])
?在
do
周围加上引号,因为您正在强制PHP将常量解释为字符串数组键。
error\u reporting(E\u ALL)
是您的朋友。。。您应该使用
$\u POST['do']
而不是
$\u POST[do]
分配前是否先检查
是否设置了($\u POST['do'])
?在
do
周围加上引号,因为您正在强制PHP将常量解释为字符串数组键。
error\u reporting(E\u ALL)
是您的朋友。。。您应该使用
$\u POST['do']
而不是
$\u POST[do]