जवाबों:
Magento में फॉर्म की चाबियां क्रॉस साइट रिक्वेस्ट फॉरगेरी के खिलाफ रोकने का एक साधन हैं , संक्षेप में, यह आपको उन लोगों से सुरक्षित रखने के लिए है जो आपके रूप में प्रस्तुत अन्य साइटों से आपके फ़ॉर्म (जैसे कार्ट में जोड़ें) को पोस्ट करने की कोशिश कर रहे हैं।
यह खतरनाक हो सकता है क्योंकि कोई व्यक्ति सैद्धांतिक रूप से आपके स्टोर में किसी भी रूप हैंडलर नियंत्रक कार्रवाई के लिए अपना स्वयं का फॉर्म और पोस्ट बना सकता है। CSRF सुरक्षा अनिवार्य रूप से किसी भी पोस्ट को नजरअंदाज करती है जो फॉर्म पोस्ट के साथ शामिल form_key पैरामीटर पर एक जांच को विफल करती है।
<?php echo $this->getBlockHtml('formkey')?>
यह मैगेंटो को "फॉर्मकी" नाम के साथ एक लेआउट ब्लॉक की तलाश करने और इसे आउटपुट करने के लिए कहता है। Magento में यह आमतौर पर कुछ फ़ाइल है जिसमें यह है:
<div><input name="form_key" type="hidden" value="<?php echo Mage::getSingleton('core/session')->getFormKey() ?>" /></div>
यह मैगेंटो को उपयोगकर्ता सत्र के लिए एक अद्वितीय फॉर्म कुंजी को आउटपुट और स्टोर करने का निर्देश देता है। सभी सीएसआरएफ-संरक्षित मैगनेटो नियंत्रक क्रियाएं मूल्य का कुछ भी करने से पहले इसके खिलाफ सत्यापित करेंगी।
\Magento\Framework\Data\Form\FormKey\Validator
।
आप इस कोड के द्वारा formkey जोड़ सकते हैं:
<?php
$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$FormKey = $objectManager->get('Magento\Framework\Data\Form\FormKey');
?>
//Hidden form key field after <form> tag
<input name="form_key" type="hidden" value="<?php echo $FormKey->getFormKey();?>">
अगर आप phtml फाइल में फॉर्म की को जोड़ना चाहते हैं तो डायरेक्ट का उपयोग करें
$ This-> getFormKey ()
<input name="form_key" type="hidden" value="<?php echo $block->getFormKey();?>">
अपनी कक्षा के निर्माणकर्ता में निर्भरता इंजेक्शन का उपयोग करना:
protected $formKey;
public function __construct(
\Magento\Framework\Data\Form\FormKey $formKey
) {
$this->formKey = $formKey;
}
public function getFormKey()
{
return $this->formKey->getFormKey();
}
नोट: phtml फ़ाइलों में सीधे ऑब्जेक्ट मैनेजर का उपयोग न करें
ObjectManager
दृश्यपटल में उपयोग का सुझाव देना बंद करें यह एक अच्छा अभ्यास नहीं है।
ऑब्जेक्ट मैनेजर और सभी को इनिशियलाइज़ करने की कोई आवश्यकता नहीं है, आप उपयोग कर सकते हैं।
window.FORM_KEY
आप उपयोग कर सकते हैं:
$block->getKey()
उम्मीद है की यह मदद करेगा!
धन्यवाद