今天推广部的同事突然提过来一个问题,有个站Log Out后就再也没法Login了,每次点击Login按钮后均提示there was a security error when ...,追踪之后发现模板文件相对于V1.3.8版本的默认文件少了下面这行代码:<?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?> 原来Zen-Cart在V1.3.8版本又新添加了一项安全验证,而使用的模板版本比较低,少了这项安全验证,所以才冲突了!
追踪后发现可能受影响的文件如下:
- /includes/templates/YOUR_TEMPLATE/templates/tpl_login_default.php
- /includes/templates/YOUR_TEMPLATE/templates/tpl_timeout_default.php
- /admin/login.php
解决方案如下:
既然是模板缺少了这行代码,就只要在相应的位置添加即可。
举例:在- /includes/templates/YOUR_TEMPLATE/templates/tpl_login_default.php文件中定位到zen_draw_password_field所在的行,然后在其下方添加<?php echo zen_draw_hidden_field('securityToken', $_SESSION['securityToken']); ?>这行代码。这个文件要添加两处。
- /includes/templates/YOUR_TEMPLATE/templates/tpl_timeout_default.php只要添加一处。
理论上只要改这两个文件就可以了。如果添加了上述代码还是不行的话,甚至可以考虑不使用当前模板的tpl_login_default.php文件,直接调用系统默认的tpl_login_default.php文件。