我考虑将网站从Adobe转换为Yii。在Adobe代码中,我有一个变量的包含页面,它使用表单POST数据,如下所示:
$firstContact = "This is an email I sent to {POST.userFirstName}";
当我提交时,后期数据会被变量选中并很好地发送。
但是当我开始将这些页面转换为Yii时,我想知道是否{POST.userFirstName} 是Yii将识别为php并在电子邮件消息中正确部署POST数据的东西。
有人可以告诉我在Yii文档中的实际位置 回答这个,或者,如果你已经知道它确实有效,那就告诉我吧?
由于
答案 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,这就是他们以这种方式使用.
的原因。