エラー-無効なフォームキー


9

magento 1.9.2.3で問題が発生しました。カスタム管理フォームに接続するとエラーメッセージが表示されます。

モジュールを作成し、ユーザーロールの顧客/アカウント/ログインページを複製しました。

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

私の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>

古いmagentoバージョンでは問題ありません。

しかし、1.9.2.3の場合:無効なフォームキー。表示されるページを更新してください

注:古いObserver.phpを置き換えると、次のようになります。

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

しかし、新しいObserver.phpを古いものに置き換えることは深刻ではないと思います。

編集:私のuser_login.phtmlには、入力form_keyが含まれています。

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

ご協力いただきありがとうございます。


どのWebブラウザを使用しましたか?Chromeでもこのようなエラーが発生していたため、Firefoxを使用してみてください。
Fayyaz Khattak

私はChromeを使用していますが、すべてのWebブラウザー(Firefox、IE、Safari)で同じエラーが発生します。
phpschool 2016年

これを正しくするために、システムから「Cookieドメイン」を設定してください。
Ketan Panchal

回答:


27

私は同じ問題を抱えており、正しい設定でそれを修正することができました

web / cookie / cookie_domain

そして

web / cookie / cookie_path

表の値core_config_data

ブラウザとMagentoセッションのすべてのセッションとCookieデータをクリアし、後でファイル/データをキャッシュすることを忘れないでください。


3
では、このエントリには何を設定する必要がありますか?
アレハンドロデルリオ2017年

エントリは何ですか?
Zoya 2019年

12

これらのクエリを使用して、再度ログインできました

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

また、ウェブサーバーのユーザーがセッションストレージに書き込む権限を持っていることを確認してください。session_save_pathセッションをファイルに保存するかどうかの設定を確認しています。こんな感じ

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


phpmyadminを必要としないすばらしい方法、ありがとう:)
acidjunk

いいね!この解決策は私にとってうまくいきます!
マルク・

5

httpsの設定を確認してください。magentoにhttpsを使用しているが、httpでサイトを開くと問題が発生します。


1
その場合、config web / secure / use_in_adminhtmlを0に変更します
roman204

ありがとう、@ roman204、それは私を夢中にさせていました!私はこの設定が「安全なベースURLで定義されているものを使用する」ことを意味していると確信していましたが、どうやらそれは関係なくhttpsを強制しようとします。祝福されたものを使って10年近く働いた後も、今までこの癖に遭遇していませんでした。Magento、贈り続ける贈り物:D:D
Doug McLean

5

php7.0にアップグレードした後、このエラーが発生しました。magento enterprise 1.9を実行しています。それから私はそこにあらゆる提案を試みました。これが私がそれを機能させる方法です:

  1. index.phpにエラー報告を追加し、報告されているすべてのエラーを修正しました。

  2. MySQLテーブルでcore_config_data、の値をクリアしましたweb/cookie_path web/cookie_httponly。ドメインに適切なweb/cookie_domain 価値があることを確認 してください(非常に重要です)。

  3. ブラウザのキャッシュCookieをクリアします。


4

Magentoの新しいバージョンでは<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />、CSRF(Cross-Site Request Forgery)攻撃を防ぐためのフォームが必要です。


はい、すでにフォームに入力form_keyを追加していますが、これは同じ結果です。
phpschool 2016年

フォームキーが実際に生成されていることを確認できますか?(ページのソースを確認してください)。この問題は、Magentoをアップグレードしたときに発生しましたか?どのバージョンから?
andyjv 2016年

確かに、ソースページのチェックに行くと、<input type="hidden" name="form_key" value="Pzty7ZxT6PWRSjhR"/>magento 1.7.0.2では問題ありません。
phpschool 2016年

3

MAMP 3のローカルWebサーバーにサイトをコピーした後、Magento 1.9.2.3でも同じエラーが発生しました。

したがって、表core_config_dataweb/cookie/cookie_domainをのmysite.lan代わりにに変更すると、問題は解決しましたmysite.lan:8888


2

私の場合、これはLinuxで機能していましたが、virtualbox / DockerおよびWindows 10を使用するローカルWindows環境では、このエラーは、vb / docker / windowsが/ var / sessions /に与える奇妙な権限が原因でした。ローカル開発環境でのみ、マップされたWindowsドライブからLinux VM上の「実際の」パスにパスを移動しました

これを構成ファイルに追加し、app/etc/local.xmlすべてのファイルを削除しvar/cachevar/session、ログインできました。

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

2

私の場合は、この段階でエラーを作成しました:私は、Magentoの自体にMagentoのコピー(DEV)に移動していた: Magentoの/ Magentoの-コピー する前に、それらの場所をサーバー上で互いに隣接しています。自分の割り当てを持つ全員。したがって、1つのqutoaを別のqutoaに移動する->問題が発生しました。原因FTPでmagento-copyを表示できませんでした。ファイルエディターでファイルの所有者を変更しました。何らかの理由でエラーが発生しました。



1

複数の開発サイトやライブサイトで作業しているときに、この問題がよく発生し、Cookieの混乱が発生します。以前は、MySQLクエリで修正してファイルを削除しましたが、問題を解決するためのきちんとした方法を見つけました。

magerunツールは、Cookieパスの問題をチェックして修正する方法を提供します。magerunはMagentoの一部ではないため、インストールする必要があります。これは、magentoのスイスアーミーナイフとして記述されているため、他の用途にも役立ちます。

ダウンロードするには:

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

その後

chmod +x n98-magerun.phar

次に、Cookieパスに問題がないか確認します...

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

テーブルを印刷します。の値を見てくださいweb/cookie/cookie_domain。この問題が発生した場合、サイトの適切なホスト名と一致しません(たとえば、のdev.example.com代わりに取得しますwww.example.com)。

それを修正するには、パスをリセットしてキャッシュをフラッシュする必要があります。これはmagerunが役立ちます...

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

その後、再度ログインできるはずです。


0

私の問題はphpバージョン7.2でした。

.htaccessの5.6のPHPバージョンを変更する

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


0

このエラーが自家製の管理モジュールで発生する別の方法は、 frontNameあなたの中でroutes.xml一致していない<add action"someFrontName/someAction" />あなたにmenu.xml。これにより、モジュールを開こうとしたときにリンクに表示されるキーが予想と異なるものになります。


0

受け入れられた回答について( https://magento.stackexchange.com/a/102678/6078)、正しいエントリは

web / cookie / cookie_domain =次のようなベースURL

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

そして

web / cookie / cookie_path

通常は、/しかし/[storecode]|店舗ごともかまい

ローカル開発の場合、通常は削除するcookie_domainか空のままにしておくことができますが、Microsoft Edge 80には問題があるようです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.