这个{POST.data}构造是否可以在Yii电子邮件中使用?

时间:2015-07-21 23:16:41

标签: php yii adobe

我考虑将网站从Adobe转换为Yii。在Adobe代码中,我有一个变量的包含页面,它使用表单POST数据,如下所示:

$firstContact = "This is an email I sent to {POST.userFirstName}";

当我提交时,后期数据会被变量选中并很好地发送。

但是当我开始将这些页面转换为Yii时,我想知道是否{POST.userFirstName} 是Yii将识别为php并在电子邮件消息中正确部署POST数据的东西。

有人可以告诉我在Yii文档中的实际位置 回答这个,或者,如果你已经知道它确实有效,那就告诉我吧?

由于

1 个答案:

答案 0 :(得分:1)

php中的语法就像这样

$firstContact  = "words ".$_POST['userFirstName']." more words ";

或者

 $firstContact  = "words {$_POST['userFirstName']} more words ";

但我个人会包含这个

 $userFirstName =  isset($_POST['userFirstName']) ? $_POST['userFirstName'] : '';
 $firstContact  = "words $userFirstName more words ";

如果电子邮件中注入了后期数据,我强烈建议添加htmlentities

 $userFirstName =  isset($_POST['userFirstName']) ? htmlentities($_POST['userFirstName'], ENT_QUOTES, "UTF-8"); : '';
 $firstContact  = "words $userFirstName more words ";

但是请注意,这会使html变得无用,例如<p>html<\p>,所以它在很大程度上取决于你需要什么,如果你可以100%信任内容,谁发送电子邮件以及它是谁&#39;正被送往。原因是用户可以添加包含Javascript代码的html,这些代码可以劫持用户数据会话等各种最好避免的邪恶事物。

有几种方法可以将变量放在字符串中(插值),Yii可能会提供类似的方法,但它不是在本机php中完成的。许多模板系统使用的语法与您拥有的语法相似,但我不喜欢只使用POST,我需要_前面的{_POST.var},但这只是我

php中的.是类似于Javascript中的+的连接运算符。许多模板系统使用它作为访问操作符,这是Javascript的功能,这与php中的->或数组中的[ ]类似。一般来说,模板设计师会更熟悉Javascript,这就是他们以这种方式使用.的原因。