সঠিক ফর্মকি পাওয়া যাচ্ছে


18

আমার একটি পৃষ্ঠা রয়েছে যা আমি পণ্য তালিকাভুক্ত করেছি, এটি that's এটির ধরণের catalog/view.phtmlক্লোন। শুধু অন্তর্ভুক্ত app/Mage.php

এই পৃষ্ঠায় আমি ব্যবহার

Mage::getSingleton('core/session')->getFormKey(); 

তবে এটি অন্য পৃষ্ঠার ফর্ম কী থেকে আলাদা

আমি কি ভুল করছি?

উত্তর:


17

সম্ভবত কিছুই কারণ ফর্ম কী, এলোমেলো হয়ে যায়, তাই এটি হয়ে গেছে প্রতিটি সময় আলাদা হতে।

সুতরাং এটির কোনও পার্থক্য করা উচিত নয়, তবে সর্বোত্তম অনুশীলন, আপনার কীভাবে আপনার টেমপ্লেটে ফর্ম কী ইনপুট যুক্ত করা উচিত তা হ'ল:

<?php echo $this->getBlockHtml('formkey') ?>

আপডেট: আমাকে স্বীকার করতে হবে, আমি এক পর্যায়ে ভুল ছিলাম: একটি সেশনের সময় ফর্ম কীটি একই থাকে। আপনার যদি বিভিন্ন পৃষ্ঠায় আলাদা ফর্ম কী থাকে তবে এটি তৃতীয় পক্ষের পূর্ণ পৃষ্ঠার ক্যাশেতে সমস্যা হতে পারে যা ক্যাশে ফর্ম কীটি অন্তর্ভুক্ত করে (যা এটি করা উচিত নয়) অথবা ফর্ম কীটি কোনও কাস্টম ব্লকের মধ্যে রয়েছে যা ব্লক ব্যবহার করছে ক্যাশে। পরেরটির জন্য, আমি একটি সমাধান পেয়েছি: ক্যাশে ব্লকগুলিতে ফর্ম_কি (যেমন ডায়নামিক সামগ্রী) রয়েছে


এই ধরুন একটি আড়াল ইনপুট ফর্ম আউটপুট? তবে আমি আমার পর্যালোচনা.ফ্টটিএমএল এড়াতে পারি না? কোন চিন্তা?
wlin

হ্যাঁ এবং আপনার যে কোনও পৃষ্ঠাতে যে কোনও ব্লকে এটি করতে সক্ষম হওয়া উচিত। getBlockHtml() বাস্তবায়িত হয় Mage_Core_Block_Abstractএবং formkeyব্লকটি সংজ্ঞায়িত করা হয়base/default/layout/core.xml
ফ্যাবিয়ান শেমংলার

এমনকি পরিষ্কার 1.8 ইনস্টল করেও আমি এটি আউটপুট পেতে পারি না। তবে আমি এটিকে হার্ডকোড করেছি <input type="hidden" name="form_key" value="<?php echo Mage::getSingleton('core/session')->getFormKey(); ?>"/>it এটি ঠিক করার মতো মনে হচ্ছে, তবে এখনও হতাশ। একটি ভাল উপায় আছে কি.
উইলিন

3
প্রতিটি বারের ফর্ম কীটি আলাদা হওয়া উচিত? এটি কোনও পৃষ্ঠায় প্রদত্ত সেশনের জন্য একই হওয়া উচিত; এটি শুধুমাত্র বিভিন্ন সেশনে পরিবর্তিত হওয়া উচিত।
নিক রোল্যান্ডো

আমি সম্মত হই যে এটি সত্যই প্রয়োজনীয় নয় তবে ম্যাজেন্টোতে এটি এভাবে কাজ করে।
ফ্যাবিয়ান শেমংলার

8

আমি জানি এই অস্পষ্ট প্রশ্নের উত্তর দেওয়া উচিত নয়। তবে আমি এখানে একটি অনুরূপ ইস্যুতে চালিত হতে পারি, এটি আমি শিখেছি:

  • প্রতিটি অনুরোধে ফর্ম_কি অবশ্যই আলাদা হতে হবে না
  • form_key পুরো অধিবেশন জুড়ে সামঞ্জস্যপূর্ণ
  • একটি আলাদা সেশনের আলাদা ফর্ম_কি তৈরি করা উচিত (অন্য ব্রাউজারটি চেষ্টা করুন)
  • পৃষ্ঠা CACHE কখনও কখনও এই হস্তক্ষেপ করে
  • আমার সাথে এটি একটি উইজেটের ফলে সমস্ত সেশনের জন্য একই (ক্যাশেড) ফর্ম_কি দেখায়।
    • আমি এই "বৈশিষ্ট্য" পাই না

সংক্ষিপ্ত উদাহরণের ভিত্তিতে আমি তাই নতুন মডিউলটিতে অ্যাডটকার্ট চেকআউট ক্রিয়াকে এইভাবে ওভাররাইড করেছি:

অ্যাপ্লিকেশন / কোড / স্থানীয় / নাম / চেকআউট / কন্ট্রোলার / CartController.php

<?php
require_once(Mage::getModuleDir('controllers','Mage_Checkout').DS.'CartController.php');

class Name_Checkout_CartController extends Mage_Checkout_CartController
{
    public function addAction()
    {
        $request = $this->getRequest();
        $formKey = Mage::getSingleton('core/session')->getFormKey();
        $request->setParam('form_key', $formKey);
        return parent::addAction();
    }
}

অ্যাপ্লিকেশন / কোড / স্থানীয় / নাম / চেকআউট জন্য / etc / config.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Name_Checkout>
            <version>0.1.0</version>
        </Name_Checkout>
    </modules>
    <frontend> 
        <routers>
            <checkout> 
                <args>
                    <modules>
                        <name_checkout before="Mage_Checkout">Name_Checkout</name_checkout>
                    </modules>
                </args>
            </checkout>>
        </routers>
    </frontend>
</config>

অ্যাপ্লিকেশন / ইত্যাদি / মডিউল / Name_Checkout.xml

<?xml version="1.0"?>
<config>
    <modules>
        <Name_Checkout>
            <active>true</active>
            <codePool>local</codePool>
            <depends>
                <Mage_Checkout/>
            </depends>
        </Name_Checkout>
    </modules>
</config>

আমি আশা করি এটি পুনরায় তৈরি করার জন্য এটি যথেষ্ট পরিমাণে হবে


"পৃষ্ঠার ক্যাপটি মাঝে মাঝে এতে হস্তক্ষেপ করে" এর জন্য +1। আমি কেন ইচ্ছামত তালিকায় পণ্য যুক্ত করতে পারছি না এর জন্য এটি কেস। আমরা বার্নিশ পৃষ্ঠার ক্যাচিং ব্যবহার করছি এবং এটি ফর্ম কীগুলি ক্যাশে করছে।
নিক রোল্যান্ডো

1

মন্তব্য করতে পারি না তাই পরিবর্তে আমি উত্তর দিচ্ছি। নিয়ামকটিতে ফর্ম কী যুক্ত করবেন না। এটি ফর্ম কীটির সুরক্ষা সুবিধা অক্ষম করে। আপনি যদি বার্নিশ ব্যবহার করেন তবে আপনি কী যুক্ত করতে ESI (এজ সাইড অন্তর্ভুক্ত) ব্যবহার করতে পারেন। কাজ করার জন্য আপনাকে এটি একটি কুকিতে সংরক্ষণ করতে হবে।


আপনি কী একটি উদাহরণ প্রদান করতে পারেন যে কীভাবে আপনার ফর্মকি ব্লকের জন্য ESI নির্দেশনা দেখায়?
ডারকউয়বয়

আপনি এটি ফিনিক্স মেডি ওয়ার্নিশ ক্যাশে এক্সটেনশান থেকে পেতে সক্ষম হবেন। github.com/PHOENIX-MEDIA/Magento-PageCache-powered-by- Varnish
বজরান টানটউ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.