Fehler - Ungültiger Formularschlüssel

9

Ich habe ein Problem mit Magento 1.9.2.3. Wenn ich mich mit meinem benutzerdefinierten Administrationsformular verbinde, wird eine Fehlermeldung angezeigt.

Ich habe ein Modul erstellt und die Kunden- / Konto- / Anmeldeseite für meine Benutzerrolle dupliziert .

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

meine 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>

Kein Problem mit der alten Magento-Version.

Aber mit 1.9.2.3: Der ungültige Formularschlüssel. Bitte aktualisieren Sie die Seite erscheint.

HINWEIS: Wenn ich die alte Observer.php ersetze, ist Folgendes erledigt:

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

Aber ich denke, es ist nicht ernst, die neue Observer.php durch die alte zu ersetzen.

BEARBEITEN : Meine user_login.phtml enthält eine Eingabe form_key.

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

Danke für Ihre Hilfe.

phpschool
quelle
Welchen Webbrowser haben Sie verwendet? Versuchen Sie es mit Firefox, da ich diese Art von Fehler auch in Chrome erhalten habe.
Fayyaz Khattak
Ich verwende Chrome, aber es ist der gleiche Fehler mit allen Webbrowsern (Firefox, IE, Safari).
PHPschool
Können Sie bitte "Cookie Domain" vom System einstellen, um dies zu korrigieren?
Ketan Panchal

Antworten:

27

Ich hatte das gleiche Problem und konnte es beheben, indem ich das richtige einstellte

web / cookie / cookie_domain

und

web / cookie / cookie_path

Werte in der Tabelle core_config_data.

Vergessen Sie nicht, alle Sitzungs- und Cookie-Daten in Ihrem Browser sowie die Magento-Sitzung zu löschen und anschließend Dateien / Daten zwischenzuspeichern.

Codephunk
quelle
3
Was muss ich in diesen Einträgen einstellen?
Alejandro del Río
Was sind die Einträge bitte?
Zoya
12

Ich habe diese Abfragen verwendet und konnte mich erneut anmelden

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

und stellen Sie sicher, dass der Webserver-Benutzer das Recht hat, in den Sitzungsspeicher zu schreiben. Überprüfen Sie die session_save_pathEinstellung, wenn Sie die Sitzung in Dateien speichern. Es sieht aus wie das

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

Phanvugiap
quelle
schöner Weg ohne die Notwendigkeit für phpmyadmin, danke :)
acidjunk
Nett! Diese Lösung funktioniert bei mir!
Marc
5

Überprüfen Sie Ihre Einstellungen für https. Wenn Sie https für Ihr Magento verwenden, aber versuchen, eine Site mit http zu öffnen, tritt ein Problem auf.

Arni
quelle
1
Ändern Sie in diesem Fall config web / secure / use_in_adminhtml auf 0
roman204
Danke, @ roman204, das hat mich verrückt gemacht! Ich war mir so sicher, dass diese Einstellung nur "Verwenden Sie alles, was in der sicheren Basis-URL definiert ist" bedeutete, aber anscheinend nicht, sie versucht, https unabhängig davon zu erzwingen. Nachdem ich fast ein Jahrzehnt mit dem gesegneten Ding gearbeitet hatte, war ich bis jetzt noch nicht auf diese Eigenart gestoßen. Magento, das Geschenk, das immer wieder gibt: D: D
Doug McLean
5

Ich habe diesen Fehler nach dem Upgrade auf PHP7.0 erhalten . Ausführen von Magento Enterprise 1.9 . Ich habe dann jeden Vorschlag da draußen ausprobiert. So habe ich es zum Laufen gebracht:

  1. Ich habe Fehlerberichte in meine index.php eingefügt und alle gemeldeten Fehler behoben.

  2. In der MySQL-Tabelle habe core_config_dataich Werte für gelöscht web/cookie_path web/cookie_httponly. Stellen Sie sicher, dass Sie mit Ihrer Domain den richtigen web/cookie_domain Wert haben (sehr wichtig).

  3. Leeren Sie Ihren Browser- Cache und Cookies .

Webwiseguys
quelle
4

Neuere Versionen von Magento erfordern Formulare, <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />um CSRF-Angriffe (Cross-Site Request Forgery) zu verhindern.

andyjv
quelle
Ja, ich habe meinem Formular bereits einen Eingabeformularschlüssel hinzugefügt, und dies ist das gleiche Ergebnis.
PHPschool
Können Sie bestätigen, dass der Formularschlüssel tatsächlich generiert wird? (Überprüfen Sie die Seitenquelle). Dieses Problem trat auf, als Sie Magento aktualisiert haben? Ab welcher Version?
Andyjv
Ich bin mir sicher, wenn ich auf die <input type="hidden" name="form_key" value="Pzty7ZxT6PWRSjhR"/>Quellseite gehe : Mit Magento 1.7.0.2 ist es in Ordnung.
PHPschool
3

Ich hatte den gleichen Fehler mit Magento 1.9.2.3 nach dem Kopieren der Site auf einen lokalen Webserver auf MAMP 3.

Das Problem wurde behoben, als ich in der Tabelle core_config_datadas web/cookie/cookie_domainzu mysite.lananstelle des änderte mysite.lan:8888.

Galina
quelle
2

In meinem Fall funktionierte dies unter Linux, aber in meiner lokalen Windows-Umgebung mit Virtualbox / Docker und Windows 10 wurde dieser Fehler durch die seltsamen Berechtigungen verursacht, die vb / docker / windows / var / session / erteilt. Nur in meiner lokalen Entwicklungsumgebung habe ich den Pfad von einem zugeordneten Windows-Laufwerk auf einen "echten" Pfad auf der Linux-VM verschoben

Ich habe diese in die Konfigurationsdatei app/etc/local.xmlgelöscht dann alle Dateien in var/cacheund var/sessionund könnte OK anmelden.

<session_save><![CDATA[files]]></session_save>
<session_save_path><![CDATA[/tmp]]></session_save_path>
Pete Henshall
quelle
2

In meinem Fall habe ich den Fehler mit den folgenden Schritten erstellt: Ich hatte eine Magento-Kopie (dev) in das Magento selbst verschoben : Magento / Magento-Kopie Vorher waren sie nebeneinander auf dem Server. Jeder mit seiner eigenen Quote. Es trat also ein Qutoa in das andere auf -> es traten Probleme auf. Da ich die Magento-Kopie mit FTP nicht anzeigen konnte, habe ich den Eigentümer der Dateien per Datei-Editor geändert. Aus irgendeinem Grund verursachte dies den Fehler.

TonkBerlin
quelle
1

Überprüfen Sie, ob Sie sich unter https: // yourwebsite / admin statt http anmelden können, und überprüfen Sie core_config_data web / secure / use_in_adminhtml

Ich habe ein ähnliches Problem und die Anmeldung funktioniert nur auf sicher

Henryk Brzoska
quelle
1

Ich bekomme dieses Problem oft, wenn ich an mehreren Entwicklungs- und Live-Sites arbeite, und es gibt einige Cookie-Verwirrung. Früher habe ich es mit MySQL-Abfragen und dem Löschen von Dateien behoben, aber ich habe einen besseren Weg gefunden, um das Problem zu lösen.

Das Magerun-Tool bietet eine Möglichkeit, Probleme mit dem Cookie-Pfad zu überprüfen und zu beheben. magerun ist kein Teil von Magento, daher müssen Sie es installieren. Es wird als Schweizer Taschenmesser für Magento beschrieben, so dass Sie es für andere Dinge nützlich finden könnten.

So laden Sie es herunter:

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

Dann

chmod +x n98-magerun.phar

Überprüfen Sie dann den Cookie-Pfad auf Probleme ...

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

Es wird eine Tabelle gedruckt. Schauen Sie sich den Wert für an web/cookie/cookie_domain. Wenn ich dieses Problem habe, stimmt es nicht mit dem richtigen Hostnamen für die Site überein (z. B. bekomme ich dev.example.comstatt www.example.com).

Um dies zu beheben, müssen Sie den Pfad zurücksetzen und den Cache leeren. Magerun kann dabei helfen, ...

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

Sie sollten sich dann erneut anmelden können.

Kevin Sadler
quelle
0

Mein Problem war PHP Version 7.2.

ändere meine PHP-Version für 5.6 in .htaccess

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

Jamerson Lima
quelle
0

Ein anderer Weg, wie dieser Fehler für hausgemachte Admin-Module auftreten kann, ist, wenn frontNamein Ihrem routes.xmlnicht mit dem <add action"someFrontName/someAction" />in Ihrem übereinstimmt menu.xml. Dies führt dazu, dass der Schlüssel, den Sie beim Öffnen des Moduls im Link sehen, anders als erwartet ist.

bdbdbd
quelle
0

In Bezug auf die akzeptierte Antwort ( https://magento.stackexchange.com/a/102678/6078 ) sind die richtigen Einträge

web / cookie / cookie_domain = Ihre Basis-URL wie:

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

und

web / cookie / cookie_path

in der Regel nur /, kann aber /[storecode]|auch pro Geschäft sein

Für die lokale Entwicklung funktioniert es normalerweise, es zu löschen cookie_domainoder leer zu lassen, aber es scheint, dass Microsoft Edge 80 Probleme damit hat.

OZZIE
quelle