无效的表单密钥。请刷新页面。产品保存错误


14

您好,每当我尝试在管理面板上保存产品时,都会
收到此错误“ Invalid Form Key. Please refresh the page.”。
我在这里通过了链接,但没有成功。
当我查看日志文件时,它向我显示了

2013-09-03T07:07:43+00:00 ERR (3): Notice: Undefined index: httponly  in /var/www/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php on line 94
2013-09-03T07:07:43+00:00 ERR (3): Notice: Undefined index: secure  in /var/www/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php on line 96
2013-09-03T07:07:43+00:00 ERR (3): Notice: Undefined index: domain  in /var/www/app/code/core/Mage/Core/Model/Session/Abstract/Varien.php on line 98

我注释掉文件中的行作为建议这个文章在这里。日志文件中的错误消失了。但是仍然无法保存我的产品和错误“无效的表单密钥。请刷新页面。” 照原样。
我检查了萤火虫中的帖子数据,它显示了我

form_key    THJDhxajLIZnzrHt
form_key    {{formKey}}

当我保存产品时传递的形式关键变量。当我在本地计算机上检查它时,它会显示我

form_key    prvOwOCGjSKG6DpF
form_key    {{formKey}}
form_key    prvOwOCGjSKG6DpF

这样的事情。
有谁知道这是怎么回事。在这里,我可以看到form_key实时传递的最后一个值是“ {{formkey}}”,而本地传递的最后一个值是“ prvOwOCGjSKG6DpF”。任何帮助表示赞赏。

Answers:


11

此错误还有另一个来源:cookie_domain配置错误。由于您无法登录到管理区域,因此可以直接通过mysql检查它:

SELECT * FROM core_config_data WHERE path LIKE '%cookie_domain%';

您也可以直接在mysql中更改值。不要忘了之后清除缓存。



4

首先尝试禁用已安装的所有自定义模块,然后查看问题是否仍然存在。

看起来有些东西在产品页面中注入了一个额外的字段,该字段与form_key参数冲突,该参数被媒体上载器和产品编辑页面的其他部分用作现时


您好Roscius,正如您所建议的,尽管magento js文件夹中的媒体上传文件一定存在问题。我替换了js文件夹,现在一切正常。谢谢..
Jaimin Sutariya 2013年

2

您的核心文件有问题。请检查以下路径和代码。您必须在以下代码中评论chrome登录问题。

 app/code/core/Mage/Core/Model/Session/Abstract/Varien.php:87
// session cookie params
$cookieParams = array(
    'lifetime' => $cookie->getLifetime(),
    'path'     => $cookie->getPath(),
    'domain'   => $cookie->getConfigDomain(),
    'secure'   => $cookie->isSecure(),
    'httponly' => $cookie->getHttponly()
);

if (!$cookieParams['httponly']) {
    unset($cookieParams['httponly']);
    if (!$cookieParams['secure']) {
        unset($cookieParams['secure']);
        if (!$cookieParams['domain']) {
            unset($cookieParams['domain']);
        }
    }
}

1

仔细看看您的.htaccess文件。当我将1.7.0 Magento存储迁移到另一台服务器时,我在旧服务器中包含了.htaccess文件,然后在屏幕上弹出消息:“无效的表单密钥。请刷新页面”,即使配置更改生效,也没有任何反应。解决方案是安装一个新的magento,然后将My Store文件复制到Magento根目录(不包括.htaccess)。当我从全新安装中使用.htaccess时,一切都开始正常运行。我不知道会发生什么,也许每个服务器结构都有不同的特定的.htaccess条目和规则。它对我有用。


1

我不确定是什么问题,但这似乎是我的Apache服务器ServerName指令导致的。

我为服务器提供了与ServerNameMagento安装相同的全局设置。由于表单密钥的整个目的(我认为)与域名(XSRF等)的安全性有关,所以这可能就是原因。

我将我的全局名称更改ServerName为“ example.com”。

然后,我清除了Magento缓存和远程服务器上的所有会话,并删除了浏览器中的cookie。

现在它正在工作。

max_input_vars在这种情况下,它与PHP无关。但是,很久以前,我与它们有一个不同的问题。保存类别产品时,只有第一个max_input_vars产品会被保存,其余的将与产品不相关。因此您可能已经在该类别中拥有10,000种产品,但是当您尝试在管理员中再添加1种产品时,最终只有1,000种。)


1

由于php.ini变量“ max_input_vars ” 导致此错误,可通过以下php函数将其增加到10000:

ini_set('max_input_vars', 10000);

或使用linux命令行

cd /etc/php/7.0/apache2/
vi php.ini (Open for edit and set max_input_vars=10000)
:wq(Press esc and write the mentioned command to save and exit)
sudo /etc/init.d/apache2 restart(Restart Server)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.