Chave de formulário inválida. Atualize a página. erro ao salvar o produto

14

Olá a todos
. Estou recebendo esse erro " Invalid Form Key. Please refresh the page." sempre que tento salvar meu produto no painel de administração.
Passei por este link aqui, mas sem sucesso.
Quando olhei para o meu arquivo de log, ele me mostrou isso

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

Comentei as linhas do arquivo, conforme sugerido neste artigo aqui. E os erros nos arquivos de log se foram. Mas ainda não consigo salvar meu produto e o erro "Chave de formulário inválida. Atualize a página". é como é.
Eu verifiquei os dados da postagem no firebug e ele me mostrou

form_key    THJDhxajLIZnzrHt
form_key    {{formKey}}

como variáveis-chave de formulário que passam quando eu salvo meu produto. Quando eu o verifiquei na minha máquina local, ele me exibe

form_key    prvOwOCGjSKG6DpF
form_key    {{formKey}}
form_key    prvOwOCGjSKG6DpF

algo assim.
Alguém tem alguma idéia do que está errado aqui. Aqui posso ver que o último valor para " form_key" transmitir ao vivo é " {{formkey}}" enquanto no local é " prvOwOCGjSKG6DpF". Qualquer ajuda é apreciada.

Jaimin Sutariya
fonte

Respostas:

11

Há mais uma fonte para esse erro: um erro cookie_domainna configuração. Como você não pode entrar na área de administração, você pode verificá-lo diretamente via mysql:

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

Você também pode alterar o valor no mysql diretamente. Não esqueça de limpar o cache posteriormente.

Andreas von Studnitz
fonte
4

Primeiro, tente desativar os módulos personalizados que você instalou e veja se o problema persiste.

Parece que algo está injetando um campo extra na página do produto, que está colidindo com o parâmetro form_key que é usado pelo carregador de mídia e outras partes da página de edição do produto como um nonce .

Roscius
fonte
Olá Roscius, Como você sugeriu, acho que deve haver algum problema com os arquivos de upload de mídia na pasta magento js. Troquei a pasta js e tudo funciona agora. Obrigado ..
Jaimin Sutariya
2

problema com o seu arquivo principal. Verifique o caminho e o código abaixo. você deve ter comentado o código abaixo para obter um problema de login no 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']);
        }
    }
}
Zaheerabbas
fonte
1

Dê uma olhada no seu arquivo .htaccess. Ao migrar minha loja Magento 1.7.0 para outro servidor, incluí o arquivo .htaccess do servidor antigo e a mensagem: "Chave de formulário inválida. Atualize a página" pop-up na tela e nada acontece, mesmo as alterações na configuração tiveram efeito. A solução foi instalar um magento novo e copiar os arquivos da Minha loja na raiz do Magento, excluindo .htaccess. Quando usei o .htaccess da nova instalação, tudo começa a funcionar bem. Não sei o que exatamente acontece, talvez cada estrutura de servidor possua entradas e regras .htaccess diferentes e particulares. Isso funciona para mim.

Paulo
fonte
1

Não sei exatamente qual era o problema, mas parece ter sido o resultado das ServerNamediretivas do meu servidor Apache .

Dei ao servidor o mesmo global ServerNameque dei à minha instalação do Magento. Como todo o objetivo das chaves de formulário (acho) tem a ver com segurança com nomes de domínio (XSRF, etc), pode ser o motivo.

Mudei meu global ServerNamepara, literalmente, "example.com".

Limpei o cache do Magento e todas as sessões no servidor remoto e excluí os cookies no meu navegador.

E agora está funcionando.

(Não tinha nada a ver com PHP max_input_varsnesse caso. Há muito tempo, tive um problema diferente com eles. Ao salvar produtos de categoria, apenas o primeiro max_input_varsnúmero de produtos seria salvo e o restante seria desassociado com o Portanto, você já deve ter 10.000 produtos na categoria, mas ao tentar adicionar mais 1 no administrador e terminar com apenas 1.000.)

Buttle Butkus
fonte
1

Este bug surge devido à variável php.ini " max_input_vars ". Aumente para 10000 através da função php abaixo:

ini_set('max_input_vars', 10000);

OU Usando linha de comando 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)
Ahmad Vaqas Khan
fonte