Erreur - Clé de formulaire non valide


9

Je rencontre un problème avec magento 1.9.2.3, un message d'erreur apparaît lorsque je me connecte avec mon formulaire d'administration personnalisé.

J'ai créé un module et j'ai dupliqué la page client / compte / connexion pour mon rôle d'utilisateur.

<?xml version="1.0"?>
<config>
    <modules>
        <Custom_Page>
            <active>true</active>
            <codePool>local</codePool>
        </Custom_Page>
    </modules>
</config>

mon config.xml:

<?xml version="1.0"?>
<config>
    <global>
        <page>
            <layouts>
                <Custom_Page>
                    <label>User Login</label>
                    <template>page/user_login.phtml</template>
                </Custom_Page>
            </layouts>
        </page>
    </global>
</config>

Aucun problème avec l'ancienne version de magento.

Mais avec 1.9.2.3: la clé de formulaire non valide. Veuillez actualiser la page apparaît.

REMARQUE: si je remplace l'ancien Observer.php, c'est fait:

www \ app \ code \ core \ Mage \ Admin \ Model \ Observer.php

Mais je pense que ce n'est pas grave de remplacer le nouveau Observer.php par l'ancien.

EDIT: Mon user_login.phtml contient une entrée form_key.

<form action="/admin" method="post" id="login-form">
    <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>"/>

Merci de votre aide.


quel navigateur Web avez-vous utilisé? Essayez d'utiliser Firefox, car je recevais également ce type d'erreur sur Chrome.
Fayyaz Khattak

J'utilise Chrome, mais c'est la même erreur avec tous les navigateurs Web (Firefox, IE, Safari).
phpschool

Pouvez-vous s'il vous plaît définir "Domaine de cookie" à partir du système pour rendre cette chose correcte.
Ketan Panchal

Réponses:


27

J'ai eu le même problème et j'ai pu le résoudre en définissant le bon

web / cookie / cookie_domain

et

web / cookie / cookie_path

valeurs dans le tableau core_config_data.

N'oubliez pas d'effacer toutes les données de session et de cookie dans votre navigateur et la session Magento et de mettre en cache les fichiers / données par la suite.


3
Alors, que dois-je définir dans ces entrées?
Alejandro del Río,

quelles sont les entrées s'il vous plaît?
Zoya

12

J'ai utilisé ces requêtes et j'ai pu me reconnecter

DELETE FROM core_config_data WHERE path='web/cookie/cookie_domain'; DELETE FROM core_config_data WHERE path='web/cookie/cookie_path';

et assurez-vous que l'utilisateur du serveur Web a le droit d'écrire sur le stockage de session. vérification des session_save_pathparamètres si vous enregistrez la session dans des fichiers. Ça ressemble à ça

<session_save><![CDATA[files]]></session_save> <session_save_path><![CDATA[/tmp/session]]></session_save_path>


belle façon sans avoir besoin de phpmyadmin, merci :)
acidjunk

Agréable! Cette solution fonctionne pour moi!
Marc

5

Vérifiez vos paramètres pour https. Si vous utilisez https pour votre magento mais essayez d'ouvrir un site avec http, vous aurez un problème.


1
changer la configuration web / secure / use_in_adminhtml en 0 dans ce cas
roman204

Merci, @ roman204, ça me rendait fou! J'étais tellement sûr que ce paramètre signifiait simplement "utiliser tout ce qui est défini dans l'URL de base sécurisée", mais apparemment non, il essaie de faire respecter https malgré tout. Après presque une décennie de travail avec la chose bénie, je n'avais toujours pas rencontré cette bizarrerie jusqu'à présent. Magento, le cadeau qui ne cesse de donner: D: D
Doug McLean

5

J'ai eu cette erreur après la mise à niveau vers php7.0 . exécuter magento enterprise 1.9 . J'ai ensuite essayé toutes les suggestions. Voici comment je l'ai fait fonctionner:

  1. J'ai ajouté le rapport d'erreurs dans mon index.php et corrigé toutes les erreurs signalées.

  2. Dans la table MySQL core_config_data, j'ai effacé les valeurs de web/cookie_path web/cookie_httponly. Assurez-vous d'avoir la bonne web/cookie_domain valeur avec votre domaine (très important).

  3. Videz le cache de votre navigateur et les cookies .


4

Les versions plus récentes de Magento nécessitent des formulaires pour <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />empêcher les attaques CSRF (Cross-Site Request Forgery).


Oui, j'ai déjà ajouté une entrée form_key dans mon formulaire et c'est le même résultat.
phpschool

Pouvez-vous confirmer que la clé de formulaire est réellement générée? (vérifiez la source de la page). Ce problème s'est produit lorsque vous avez mis à niveau Magento? De quelle version?
andyjv

Je suis sûr, quand je vais vérifier la page source: <input type="hidden" name="form_key" value="Pzty7ZxT6PWRSjhR"/>Avec magento 1.7.0.2 c'est ok.
phpschool

3

J'ai eu la même erreur avec Magento 1.9.2.3 après avoir copié le site sur le serveur Web local sur MAMP 3.

Donc, le problème a été résolu lorsque j'ai changé dans le tableau core_config_datale web/cookie/cookie_domainau mysite.lanlieu du mysite.lan:8888.


2

Dans mon cas, cela fonctionnait sous Linux mais sur mon environnement Windows local utilisant virtualbox / Docker et Windows 10, cette erreur était due aux autorisations étranges que vb / docker / windows accordait à / var / sessions /. Sur mon environnement de développement local uniquement, j'ai déplacé le chemin d'un lecteur Windows mappé vers un chemin "réel" sur la machine virtuelle Linux

J'ai ajouté cela au fichier de configuration app/etc/local.xml, puis j'ai supprimé tous les fichiers var/cacheet j'ai var/sessionpu me connecter OK.

<session_save><![CDATA[files]]></session_save>
<session_save_path><![CDATA[/tmp]]></session_save_path>

2

Dans mon cas, j'ai créé l'erreur avec ces étapes: j'avais déplacé une copie de magento (dev) dans le magento lui-même: magento / magento-copy Avant, ils étaient côte à côte sur le serveur. Chacun avec son propre quota. Donc, déplacer un qutoa dans l'autre -> des problèmes sont survenus. Parce que je ne pouvais pas voir la copie magento avec FTP J'ai changé le propriétaire des fichiers par l'éditeur de fichiers. Pour une raison quelconque, cela a créé l'erreur.



1

J'ai souvent ce problème lorsque je travaille sur plusieurs sites de développement et sites en direct, et il y a une certaine confusion de cookies. Auparavant, je l'ai corrigé avec des requêtes MySQL et la suppression de fichiers, mais j'ai trouvé un moyen plus net de résoudre le problème.

L'outil magerun fournit un moyen de vérifier les problèmes avec le chemin du cookie et de les corriger. magerun ne fait pas partie de Magento, vous devrez donc l'installer. Il est décrit comme un couteau suisse pour magento, vous pouvez donc le trouver utile pour d'autres choses.

Pour le télécharger:

wget https://files.magerun.net/n98-magerun.phar

alors

chmod +x n98-magerun.phar

Vérifiez ensuite le chemin des cookies pour les problèmes ...

./n98-magerun.phar config:get web/cookie/*

Il imprimera un tableau. Regardez la valeur de web/cookie/cookie_domain. Lorsque je rencontre ce problème, il ne correspond pas au nom d'hôte approprié pour le site (par exemple, j'obtiens à la dev.example.complace de www.example.com).

Pour le corriger, vous devez réinitialiser le chemin d'accès et vider le cache, ce que magerun peut vous aider ...

./n98-magerun.phar config:set web/cookie/cookie_domain ""
./n98-magerun.phar cache:flush

Vous devriez alors pouvoir vous reconnecter.


0

Mon problème était la version 7.2 de PHP.

changer ma version php pour 5.6 en .htaccess

Application AddHandler / x-httpd-php56 .php suPHP_ConfigPath / opt / php56 / lib


0

Une autre façon dont cette erreur peut se produire pour les modules d'administration maison est lorsque frontNamevotre routes.xmlne correspond pas <add action"someFrontName/someAction" />à votre menu.xml. Cela fait que la clé que vous voyez dans le lien lorsque vous essayez d'ouvrir le module est différente de celle attendue.


0

Concernant la réponse acceptée ( https://magento.stackexchange.com/a/102678/6078 ) les entrées correctes sont

web / cookie / cookie_domain = votre URL de base comme:

https://website.com/ (without any store code)

et

web / cookie / cookie_path

généralement juste /mais peut /[storecode]|aussi être par magasin

Pour le développement local, cela fonctionne généralement pour le supprimer cookie_domainou le laisser vide, mais il semble que Microsoft Edge 80 ait des problèmes avec cela.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.