magento布局文件formkey的作用

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');
    }
}

 

 

你可能感兴趣的:(agent)