magento表单提交时有个key,是如何引用进模板的:
<?php echo $this->getBlockHtml('formkey')?>
formkey配置代码:
<block name=”formkey” type=”core/template” template=”core/formkey.phtml” />
模板文件formkey.phtml内容:
<input name=”form_key” type=”hidden” value=”<?php echo Mage::getSingleton(‘core/session’)->getFormKey() ?>” />
core/session对应的文件为core/model/session.php。
验证key是否正确的底层代码:
protected function _validateFormKey()
{
if (!($formKey = $this->getRequest()->getParam(‘form_key’, null)) || $formKey != Mage::getSingleton(‘core/session’)->getFormKey()) {
return false;
}
return true;
}
从中可以看出当前网页的form_key与系统保存的form_key进行判断,如不同就返回false;
表单提交时验证KEY是否正确:
public function editPostAction()
{
if (!$this->_validateFormKey()) {
return $this->_redirect('*/*/edit');
}
}