Magento 1.9.2.1 SUPEE-7405 admin tidak berfungsi

8

Saya menginstal tambalan baru hari ini - SUPEE-7405 via FTP dari situs ini.

https://magentary.com/kb/install-supee-7405-without-ssh/

Sekarang, sepertinya front end store saya masih berfungsi, namun ketika saya mencoba masuk ke admin, saya akan dibawa ke halaman login / kata sandi ... setelah saya masuk saya mendapat kesalahan.

Invalid method Mage_Core_Model_Session::validateFormKey(Array
(
    [0] => y6h9TjgvchV8hCZT
)
)

Trace:
#0 /home/a0cegcom/public_html/app/code/core/Mage/Admin/Model/Observer.php(73): Varien_Object->__call('validateFormKey', Array)
#1 /home/a0cegcom/public_html/app/code/core/Mage/Admin/Model/Observer.php(73): Mage_Core_Model_Session->validateFormKey('y6h9TjgvchV8hCZ...')
#2 /home/a0cegcom/public_html/app/code/core/Mage/Core/Model/App.php(1357): Mage_Admin_Model_Observer->actionPreDispatchAdmin(Object(Varien_Event_Observer))
#3 /home/a0cegcom/public_html/app/code/core/Mage/Core/Model/App.php(1336): Mage_Core_Model_App->_callObserverMethod(Object(Mage_Admin_Model_Observer), 'actionPreDispat...', Object(Varien_Event_Observer))
#4 /home/a0cegcom/public_html/app/Mage.php(448): Mage_Core_Model_App->dispatchEvent('controller_acti...', Array)
#5 /home/a0cegcom/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(527): Mage::dispatchEvent('controller_acti...', Array)
#6 /home/a0cegcom/public_html/app/code/core/Mage/Adminhtml/Controller/Action.php(160): Mage_Core_Controller_Varien_Action->preDispatch()
#7 /home/a0cegcom/public_html/app/code/core/Mage/Core/Controller/Varien/Action.php(407): Mage_Adminhtml_Controller_Action->preDispatch()
#8 /home/a0cegcom/public_html/app/code/core/Mage/Core/Controller/Varien/Router/Standard.php(254): Mage_Core_Controller_Varien_Action->dispatch('index')
#9 /home/a0cegcom/public_html/app/code/core/Mage/Core/Controller/Varien/Front.php(172): Mage_Core_Controller_Varien_Router_Standard->match(Object(Mage_Core_Controller_Request_Http))
#10 /home/a0cegcom/public_html/app/code/core/Mage/Core/Model/App.php(365): Mage_Core_Controller_Varien_Front->dispatch()
#11 /home/a0cegcom/public_html/app/Mage.php(684): Mage_Core_Model_App->run(Array)
#12 /home/a0cegcom/public_html/index.php(88): Mage::run('', 'store')
#13 {main}

ada ide? Saya sudah membersihkan var / cache dan var / sesi saya tanpa hasil

MuhuPower
sumber

Jawaban:

11

Bagi saya sepertinya patch itu tidak diinstal dengan benar.

The validateFormKeyFungsi termasuk dalam patch.

  • Buka app/code/core/Mage/Core/Model/Session.phpfile dan periksa apakah validateFormKeyfungsinya di sini
  • Jika file tersebut diganti app/code/local/Mage/Core/Model/Session.php, Anda harus menambahkan metode baru validateFormKeydan renewFormKeysecara manual di file yang diganti. Ubah juga baris 60 dari:

    $this->setData('_form_key', Mage::helper('core')->getRandomString(16));

    untuk

    $this->renewFormKey();
  • Jika ada di sini, itu pasti masalah caching / kompilasi. Siram cache Anda, serta cache lainnya (Varnish / APC dll ...)

  • Jika Anda mengaktifkan kompilasi, harap nonaktifkan kompilasi lalu kompilasi ulang.
  • Jika fungsinya tidak di sini, itu berarti file belum diunggah dengan benar. Harap dicatat bahwa ketika Anda mengekstrak arsip dari Magentary, file diekstrak dalam folder SUPEE-7405-1.9.2.1, Anda harus membuka folder ini dan mengekstrak file dari folder ini ke root Magento Anda, mentransfer seluruh SUPEE-7405- 1.9.2.1 folder tidak akan menerapkan tambalan.
Raphael di Digital Pianism
sumber
7

The Nexcess_Turpentinemodul menimpa app/code/core/Mage/Core/Model/Session.phpsebagai app/code/local/Mage/Core/Model/Session.php. Kami baru saja mengalami ini. Ini kemungkinan besar masalah Anda. Untuk menenangkan patch ini tanpa menghabiskan banyak waktu, saya pikir solusi yang paling tepat adalah menambahkan perubahan patch ke file override lokal. Turpentine menimpa file itu, saya percaya, karena penulisan ulang tidak berfungsi untuk skenario tertentu yang perlu mereka liput. Saya tidak berpikir ini dapat dikonversi menjadi penulisan ulang.

Berikut adalah perubahan tambalan yang perlu diterapkan:

--- a/app/code/core/Mage/Core/Model/Session.php
+++ b/app/code/core/Mage/Core/Model/Session.php
@@ -36,7 +36,7 @@
  */
 class Mage_Core_Model_Session extends Mage_Core_Model_Session_Abstract
 {
-    public function __construct($data=array())
+    public function __construct($data = array())
     {
         $name = isset($data['name']) ? $data['name'] : null;
         $this->init('core', $name);
@@ -50,8 +50,27 @@ class Mage_Core_Model_Session extends Mage_Core_Model_Session_Abstract
     public function getFormKey()
     {
         if (!$this->getData('_form_key')) {
-            $this->setData('_form_key', Mage::helper('core')->getRandomString(16));
+            $this->renewFormKey();
         }
         return $this->getData('_form_key');
     }
+
+    /**
+     * Creates new Form key
+     */
+    public function renewFormKey()
+    {
+        $this->setData('_form_key', Mage::helper('core')->getRandomString(16));
+    }
+
+    /**
+     * Validates Form key
+     *
+     * @param string|null $formKey
+     * @return bool
+     */
+    public function validateFormKey($formKey)
+    {
+        return ($formKey === $this->getFormKey());
+    }
}
kirkmadera
sumber
3

Situs saya memiliki versi modifikasi pernis / terpentin dari Session.phpfile dalam app/code/local/Mage/Core/Model/direktori.

Buat fungsi yang sesuai di dalam file itu sekarang terlihat seperti berikut ini dan semuanya akan berfungsi lagi

public function getFormKey()
{
    if (Mage::registry('replace_form_key') &&
            !Mage::app()->getRequest()->getParam('form_key', false)) {
        // flag request for ESI processing
        Mage::register('turpentine_esi_flag', true, true);
        return '{{form_key_esi_placeholder}}';
    } else {
        return $this->real_getFormKey();
    }
}

public function real_getFormKey()
{
    if (!$this->getData('_form_key')) {
        //$this->setData('_form_key', Mage::helper('core')->getRandomString(16));
        $this->renewFormKey();
    }
    return $this->getData('_form_key');
}

public function renewFormKey()
{
    $this->setData('_form_key', Mage::helper('core')->getRandomString(16));
}

public function validateFormKey($formKey)
{
    return ($formKey === $this->getFormKey());
}
Andy Copley
sumber
2

Pastikan juga Anda tidak memodifikasi app/code/core/Mage/Core/Model/Session.phpsecara langsung, tetapi salin file ke app/code/local/Mage/Core/Model/Session.phpdan buat modifikasi yang sesuai.

(Magento akan memeriksa localjalur direktori sebelum menggunakan corejalur.

Sergey Repin
sumber
Saya lupa dan pada dasarnya menjalankan Magento 1.9.2.4 dengan aplikasi / kode / lokal / Mage / Core / dari versi magento sebelumnya di lokal ... karena itu admin admin saya akan masuk ke POST.
BENN1TH
1

Tambahkan fungsi di bawah ini ke Modul Pihak Ketiga / Kustom. Jika tidak menerapkan / memperluas fungsi dengan benar.

/**
* Creates new Form key
*/
public function renewFormKey()
{
$this->setData('_form_key', Mage::helper('core')->getRandomString(16));
}

/**
* Validates Form key
*
* @param string|null $formKey
* @return bool
*/
public function validateFormKey($formKey)
{
return ($formKey === $this->getFormKey());
}
}

Terima kasih!

Nithin Ninan
sumber
0

Saya memiliki kesalahan yang sama, bagi saya saya harus memutar kembali tambalan (menggunakan -R setelah file .sh, tetapi tidak tahu bagaimana Anda melakukannya melalui PHP)

Kemudian dalam sistem goto Magento -> umum -> web -> pengaturan validasi sesi

Saya mengubah 'Validasi HTTP_X_FORWARDED_FOR' menjadi 'tidak' dan 'Validasi HTTP_USER_AGENT' menjadi 'yes. Pastikan domain cookie Anda diatur dengan benar juga seperti 'domainAnda.com'

Setelah saya melakukan ini, terapkan kembali tambalan dan dapat masuk. Semoga ini bisa membantu Anda menyelesaikannya - tampaknya setiap sesi sesi yang salah akan menyebabkan masalah kunci formulir.

Pastikan Anda juga menghapus cookie browser Anda sebelum pengujian

Ricky Odin Matthews
sumber