Mungkin apa-apa karena kunci bentuk acak, sehingga memiliki menjadi berbeda setiap kali.
Jadi seharusnya tidak membuat perbedaan, tetapi praktik terbaik, bagaimana Anda harus menambahkan input kunci form ke template Anda, adalah ini:
<?php echo $this->getBlockHtml('formkey') ?>
Pembaruan: Saya harus mengakui, saya salah dalam satu hal: Kunci formulir tetap sama selama sesi. Jika Anda memiliki kunci formulir yang berbeda di halaman yang berbeda, ini mungkin menjadi masalah dengan cache halaman penuh pihak ketiga yang menyertakan kunci formulir di cache (yang seharusnya tidak), atau kunci formulir berada di dalam blok khusus yang menggunakan blok cache. Untuk yang terakhir, saya menemukan solusi: Blok cache yang berisi form_key (yaitu konten dinamis)
getBlockHtml()
diimplementasikan dalamMage_Core_Block_Abstract
danformkey
blok didefinisikan dalambase/default/layout/core.xml
<input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>"/>
. Tampaknya untuk memperbaikinya, tetapi masih membuat frustrasi. apakah ada cara yang lebih baik?Saya tahu pertanyaan yang tidak jelas ini seharusnya tidak dijawab. Namun saya mungkin mengalami masalah yang sama di sini, inilah yang saya pelajari:
Berdasarkan contoh singkat saya karena itu telah menimpa tindakan checkout addtocart seperti ini di Modul baru:
app / code / local / Name / Checkout / controllers / CartController.php
app / code / local / Name / Checkout / etc / config.xml
app / etc / modules / Name_Checkout.xml
Saya harap ini akan cukup luas bagi semua orang untuk menciptakan ini
sumber
Tidak dapat berkomentar jadi saya menjawab sebagai gantinya. Jangan menambahkan kunci formulir di controller. Ini menonaktifkan manfaat keamanan kunci formulir. Jika Anda menggunakan Varnish, Anda dapat menggunakan ESI (Termasuk Sisi Tepi) untuk menambahkan kunci. Anda harus menyimpannya di cookie agar bisa berfungsi.
sumber