我的博客上有以下代码,用于检查评论是否为垃圾邮件
$tmp = new Comment();
$tmp->setName(urldecode($this->getRequest()->getCookie('commName')));
$tmp->setEmail(urldecode($this->getRequest()->getCookie('commEmail')));
$tmp->setUrl(urldecode($this->getRequest()->getCookie('commUrl')));
$this->form = new CommentAddForm($tmp);
if ($request->isMethod('post'))
{
$this->form->bind($request->getParameter('comment'));
if ($this->form->isValid())
{
$key = sfConfig::get('akismet_api_key');
$data = array(
'blog' => '...',
'user_ip' => $this->getRequest()->getHttpHeader('addr','remote'),
'user_agent' => $_SERVER['HTTP_USER_AGENT'],
'referrer' => $_SERVER['HTTP_REFERER'],
'comment_type' => 'comment',
'comment_author' => $this->form->getObject()->getName(),
'comment_author_email' => $this->form->getObject()->getEmail(),
'comment_author_url' => $this->form->getObject()->getUrl(),
'comment_content' => $this->form->getObject()->getComment()
);
$isSpam = myLib::akismet_comment_check($key, $data);
(…)
但是我只是注意到我被垃圾邮件轰炸了,在本地测试时,似乎$this->form->getObject()->getName()
没有返回表单中的名称,而是使用了以前的名称,即保存在 cookie 中的名称!
我查看了 symfony 1.4.19 的更新日志,但没有看到任何与此相关的内容,这可能是巧合。