Kesalahan - Kunci Formulir Tidak Valid

9

Saya menemui masalah dengan magento 1.9.2.3, pesan kesalahan muncul ketika saya terhubung dengan formulir admin kustom saya.

Saya membuat modul dan saya menduplikasi halaman pelanggan / akun / login untuk peran pengguna saya.

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

config.xml saya:

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

Tidak ada masalah dengan versi magento lama.

Tetapi dengan 1.9.2.3: Kunci Formulir Tidak Valid. Harap segarkan halaman muncul.

CATATAN: Jika saya mengganti Observer.php lama itu selesai:

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

Tapi saya pikir tidak serius untuk mengganti Observer.php baru dengan yang lama.

EDIT: User_login.phtml saya berisi form_key input.

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

Terima kasih atas bantuan Anda.

phpschool
sumber
browser web apa yang Anda gunakan? Coba gunakan firefox karena saya juga mendapatkan kesalahan seperti ini di Chrome.
Fayyaz Khattak
Saya menggunakan Chrome tetapi itu adalah kesalahan yang sama dengan semua browser web (Firefox, IE, Safari).
phpschool
Bisakah Anda mengatur "Cookie Domain" dari sistem untuk membuat hal ini benar.
Ketan Panchal

Jawaban:

27

Saya memiliki masalah yang sama dan dapat memperbaikinya dengan mengatur yang benar

web / cookie / cookie_domain

dan

web / cookie / cookie_path

nilai dalam tabel core_config_data.

Jangan lupa untuk menghapus semua data sesi dan cookie di browser Anda dan sesi Magento dan file cache / data sesudahnya.

codephunk
sumber
3
Jadi, apa yang harus saya atur di entri ini?
Alejandro del Río
apa saja entrinya?
Zoya
12

Saya menggunakan pertanyaan ini dan bisa masuk lagi

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

dan pastikan bahwa pengguna server web berhak menulis ke penyimpanan sesi. memeriksa session_save_pathpengaturan jika Anda menyimpan sesi ke file. Ini terlihat seperti ini

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

phanvugiap
sumber
cara yang bagus tanpa perlu phpmyadmin, terima kasih :)
acidjunk
Bagus! Solusi ini bekerja untuk saya!
Marc
5

Periksa pengaturan Anda untuk https. Jika Anda menggunakan httpsuntuk magento Anda tetapi mencoba membuka situs dengan http Anda akan mengalami masalah ini.

Arni
sumber
1
ubah config web / secure / use_in_adminhtml ke 0 dalam kasus itu
roman204
Terima kasih, @ roman204, itu membuatku gila! Saya sangat yakin pengaturan ini hanya berarti "menggunakan apa pun yang didefinisikan dalam url basis aman" tetapi ternyata tidak, ia mencoba untuk menegakkan https. Setelah hampir satu dekade bekerja dengan hal yang diberkati, saya masih belum menemukan kekhasan ini sampai sekarang. Magento, hadiah yang terus memberi: D: D
Doug McLean
5

Saya mendapatkan kesalahan ini setelah memutakhirkan ke php7.0 . menjalankan perusahaan Magento 1.9 . Saya kemudian mencoba setiap saran di luar sana. Inilah cara saya membuatnya bekerja:

  1. Saya menambahkan pelaporan kesalahan di index.php saya, dan memperbaiki semua kesalahan yang dilaporkan.

  2. Dalam tabel MySQL core_config_data, saya membersihkan nilai untuk web/cookie_path web/cookie_httponly. Pastikan Anda memiliki hak web/cookie_domain nilai dengan domain Anda (sangat penting).

  3. Bersihkan cache dan cookie browser Anda .

webwiseguys
sumber
4

Versi Magento yang lebih baru membutuhkan formulir <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />untuk mencegah serangan CSRF (Pemalsuan Permintaan Lintas Situs).

andyjv
sumber
Ya, saya sudah menambahkan input form_key di formulir saya dan ini adalah hasil yang sama.
phpschool
Bisakah Anda mengonfirmasi bahwa kunci formulir benar-benar dihasilkan? (periksa sumber halaman). Masalah ini terjadi ketika Anda meningkatkan Magento? Dari versi apa?
andyjv
Saya yakin, ketika saya pergi untuk memeriksa halaman sumber: <input type="hidden" name="form_key" value="Pzty7ZxT6PWRSjhR"/>Dengan magento 1.7.0.2 tidak apa-apa.
phpschool
3

Saya memiliki kesalahan yang sama dengan Magento 1.9.2.3 setelah menyalin situs di server web lokal di MAMP 3.

Jadi, masalah diselesaikan ketika saya berubah dalam tabel core_config_datayang web/cookie/cookie_domainuntuk mysite.lanbukan mysite.lan:8888.

Galina
sumber
2

Dalam kasus saya ini bekerja di Linux tetapi pada lingkungan windows lokal saya menggunakan virtualbox / Docker dan windows 10 kesalahan ini disebabkan oleh izin aneh yang diberikan vb / docker / windows ke / var / sesi /. Di lingkungan pengembangan lokal saya, hanya saya yang memindahkan jalur dari drive windows yang dipetakan ke jalur "nyata" di VM linux

Saya menambahkan ini ke file konfigurasi app/etc/local.xml, lalu menghapus semua file di var/cachedan var/sessiondan bisa masuk OK.

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

Dalam kasus saya, saya membuat kesalahan dengan langkah-langkah ini: Saya telah memindahkan salinan magento (dev) di magento itu sendiri: magento / magento-copy Sebelumnya, mereka di mana bersebelahan di server. Semua orang dengan kuotanya sendiri. Jadi memindahkan satu qutoa ke yang lain -> masalah terjadi. Karena saya tidak dapat melihat salinan magento dengan FTP, saya mengubah pemilik file dengan file-editor. Untuk alasan apa pun ini menciptakan kesalahan.

TonkBerlin
sumber
1

Periksa apakah Anda dapat masuk di https: // situs web Anda / admin sebagai gantinya http dan periksa core_config_data web / secure / use_in_adminhtml

Saya punya masalah serupa dan proses masuk hanya bisa dilakukan dengan aman

Henryk Brzoska
sumber
1

Saya sering mendapatkan masalah ini ketika saya mengerjakan beberapa situs pengembangan dan situs langsung, dan ada beberapa kebingungan cookie. Sebelumnya saya telah memperbaikinya dengan query MySQL dan menghapus file tetapi saya telah menemukan cara yang lebih rapi untuk menyelesaikan masalah.

Alat magerun menyediakan cara untuk memeriksa masalah dengan jalur cookie dan memperbaikinya. magerun bukan bagian dari Magento, jadi Anda harus menginstalnya. Ini digambarkan sebagai pisau swiss-tentara untuk magento, sehingga Anda bisa menemukannya berguna untuk hal-hal lain.

Untuk mengunduhnya:

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

Kemudian

chmod +x n98-magerun.phar

Kemudian periksa jalur cookie untuk masalah ...

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

Ini akan mencetak tabel. Lihatlah nilainya web/cookie/cookie_domain. Ketika saya mengalami masalah ini, itu tidak cocok dengan nama host yang tepat untuk situs tersebut (misalnya saya mendapatkan dev.example.comalih-alih www.example.com).

Untuk memperbaikinya Anda perlu mengatur ulang jalan dan membersihkan cache, yang dapat membantu dengan ...

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

Anda harus bisa masuk lagi.

Kevin Sadler
sumber
0

Masalah saya adalah versi php 7.2.

ubah versi php saya menjadi 5.6 di .htaccess

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

Jamerson Lima
sumber
0

Cara lain kesalahan ini dapat terjadi untuk modul admin buatan sendiri adalah ketika frontNamedi Anda routes.xmltidak cocok dengan <add action"someFrontName/someAction" />di Anda menu.xml. Ini menyebabkan kunci yang Anda lihat di tautan ketika mencoba membuka modul berbeda dari yang diharapkan.

bdbdbd
sumber
0

Mengenai jawaban yang diterima ( https://magento.stackexchange.com/a/102678/6078 ) entri yang benar adalah

web / cookie / cookie_domain = url basis Anda seperti:

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

dan

web / cookie / cookie_path

biasanya hanya /tetapi bisa /[storecode]|juga per toko

Untuk pengembangan lokal biasanya berfungsi untuk menghapus cookie_domainatau membiarkannya kosong tetapi sepertinya Microsoft Edge 80 memiliki masalah dengan itu.

OZZIE
sumber