Ошибка - неверный ключ формы

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 \ приложение \ код \ ядро ​​\ 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() ?>"/>

Спасибо за вашу помощь.

phpschool
источник
какой веб-браузер вы использовали? Попробуйте использовать Firefox, потому что я также получаю такую ​​ошибку в Chrome.
Файяз Хаттак
Я использую Chrome, но это та же ошибка со всеми веб-браузерами (Firefox, IE, Safari).
phpschool
Можете ли вы установить «Cookie Domain» из системы, чтобы сделать эту вещь правильной.
Кетан Панчал

Ответы:

27

У меня была такая же проблема, и я мог ее исправить, установив правильный

Web / печенье / cookie_domain

а также

Web / печенье / cookie_path

значения в таблице core_config_data.

Не забудьте очистить все данные сеанса и cookie в вашем браузере, а также сеанс Magento и кешировать файлы / данные после этого.

codephunk
источник
3
Итак, что я должен установить в этой записи?
Алехандро дель Рио,
Какие записи, пожалуйста?
Зоя
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>

phanvugiap
источник
хороший способ без необходимости phpmyadmin, спасибо :)
acidjunk
Ницца! Это решение работает для меня!
Марк
5

Проверьте свои настройки для https. Если вы используете https для своего magento, но пытаетесь открыть сайт с http, у вас возникнет проблема.

Арни
источник
1
в этом случае измените config web / secure / use_in_adminhtml на 0
roman204
Спасибо, @ roman204, это сводило меня с ума! Я был уверен, что этот параметр означает «использовать все, что определено в защищенном базовом URL», но, очевидно, нет, он пытается применить https независимо. После почти десятилетия работы с благословенным, я до сих пор не сталкивался с этой причудой. Magento, подарок, который просто продолжает дарить: D: D
Даг Маклин
5

Я получил эту ошибку после обновления до php7.0 . действующее предприятие magento 1.9 . Затем я попробовал каждое предложение там. Вот как я получил это на работу:

  1. Я добавил отчет об ошибках в свой index.php и исправил все ошибки, о которых сообщалось.

  2. В таблице MySQL core_config_dataя очистил значения для web/cookie_path web/cookie_httponly. Убедитесь, что у вас есть правильное web/cookie_domain значение с вашим доменом (очень важно).

  3. Очистите кеш браузера и файлы cookie .

webwiseguys
источник
4

В новых версиях Magento требуются формы для <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" />предотвращения атак CSRF (межсайтовая подделка запросов).

andyjv
источник
Да, я уже добавил в форму входной ключ form_key, и это тот же результат.
phpschool
Можете ли вы подтвердить, что ключ формы действительно генерируется? (проверьте источник страницы). Эта проблема возникла, когда вы обновили Magento? С какой версии?
andyjv
Я уверен, когда я иду, чтобы проверить исходную страницу: <input type="hidden" name="form_key" value="Pzty7ZxT6PWRSjhR"/>с magento 1.7.0.2 все в порядке.
phpschool
3

У меня была такая же ошибка с Magento 1.9.2.3 после копирования сайта на локальном веб-сервере на MAMP 3.

Таким образом, проблема решена , когда я изменил в таблице , чтобы вместо .core_config_dataweb/cookie/cookie_domainmysite.lanmysite.lan:8888

Галина
источник
2

В моем случае это работало в Linux, но в моей локальной среде Windows, использующей virtualbox / Docker и windows 10, эта ошибка была вызвана странными разрешениями, которые vb / docker / windows предоставляет / var / session /. Только в локальной среде разработки я переместил путь с подключенного диска Windows к «реальному» пути на виртуальной машине Linux

Я добавил это в конфигурационный файл app/etc/local.xml, а затем удаляются все файлы var/cacheи var/sessionи может войти в OK.

<session_save><![CDATA[files]]></session_save>
<session_save_path><![CDATA[/tmp]]></session_save_path>
Пит Хеншалл
источник
2

В моем случае я создал ошибку с помощью следующих шагов: я переместил копию magento (dev) в самом magento: magento / magento-copy Прежде, чем они были расположены рядом на сервере. Каждый со своей квотой. Таким образом, перемещение одного существа в другое -> возникли проблемы. Поскольку я не мог просматривать magento-копию с FTP, я изменил владельца файлов с помощью редактора файлов. По любой причине это создало ошибку.

TonkBerlin
источник
1

Проверьте, можете ли вы войти по адресу https: // yourwebsite / admin вместо http и проверить core_config_data web / secure / use_in_adminhtml

У меня похожая проблема, и вход в систему работает только на безопасном

Хенрик бжоска
источник
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.

изменить мою версию php для 5.6 в .htaccess

Приложение AddHandler / x-httpd-php56 .php suPHP_ConfigPath / opt / php56 / lib

Джеймерсон Лима
источник
0

Еще одна причина, по которой эта ошибка может возникать для самодельных модулей администратора, - это когда frontNameваш routes.xmlне совпадает с <add action"someFrontName/someAction" />вашим menu.xml. Это приводит к тому, что ключ, который вы видите в ссылке при попытке открыть модуль, отличается от ожидаемого.

bdbdbd
источник
0

Относительно принятого ответа ( https://magento.stackexchange.com/a/102678/6078 ) правильные записи

web / cookie / cookie_domain = ваш базовый URL, например:

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

а также

Web / печенье / cookie_path

как правило, просто, /но может быть /[storecode]|и в магазине

Для локальной разработки обычно удаляется cookie_domainили остается пустой, но похоже, что в Microsoft Edge 80 есть проблемы с этим.

Ozzie
источник