मुझे लगता है कि नीचे दी गई विधि के माध्यम से एक स्ट्रिंग के बुनियादी एन्क्रिप्शन करता है एक PHP स्क्रिप्ट के साथ धन चिह्न:पीएचपी - प्राप्त क्वेरी
<?php
$key = 'secretkey';
$string = $_GET['str'];
if ($_GET['method'] == "decrypt")
{
$output = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($string), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
}
if ($_GET['method'] == "encrypt")
{
$output= base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $string, MCRYPT_MODE_CBC, md5(md5($key))));
}
echo $output;
?>
एक यूआरएल एक स्ट्रिंग एन्क्रिप्ट करने के लिए का एक उदाहरण इस प्रकार दिखाई देगा:
?Encrypt.php विधि = एन्क्रिप्ट & str = त्वरित लोमड़ी
कौन सा एन्क्रिप्टेड स्ट्रिंग के रूप में वापसी होगी:
LCuT/ieVa6cl3/4VtzE + jd9QPT3kvHY YJFqG6tY3P0Q =
अब स्ट्रिंग डिक्रिप्ट करने के लिए तुम सब करने की "विधि" क्वेरी बदल जाता है "डिक्रिप्ट" करने के लिए है, इसलिए जैसे:
Encrypt.php विधि = डिक्रिप्ट & str = LCuT/ieVa6cl3/4VtzE + jd9QPT3kvHYYJFqG6tY3P0Q =
केवल समस्या यह है कि जब कि एन्क्रिप्टेड स्ट्रिंग decrypted है यह इस रिटर्न है:
¬ƒ§rYV} ̳5Äš · nßì (ñïX8Þ;
ख मैं करने के लिए समस्या को संकुचित होता है पलस हसताक्षर वह एन्क्रिप्टेड स्ट्रिंग में है। PHP की GET विधि एक प्लस साइन का एक रिक्त स्थान में अनुवाद करने लगती है। मैंने इस बग की खोज की है और पता चला है कि इसे पहले से ही here दायर किया गया है। मैंने उस पृष्ठ पर सूचीबद्ध विभिन्न विधियों और अन्य सफलता के बिना प्रयास किए हैं। निकटतम मुझे मिल गया इस का उपयोग करना है:
$fixedstring = str_replace(" ", "+", $string);
और फिर एन्क्रिप्शन तरीकों में $ fixedstring का उपयोग कर, समस्या, डिक्रिप्शन पर, सभी रिक्त रिक्त स्थान के लिए धन चिह्न परिवर्तित कर रहे हैं। कोई विचार?
मुझे पता है कि POST का उपयोग करना अधिक समझ में आता है लेकिन मैं विशिष्ट कारणों से जीईटी का उपयोग कर रहा हूं। मैं विवरण छोड़ दूंगा।
मुझे पता है कि यह एक साधारण जवाब है लेकिन मैं एक निश्चित कारण के लिए जीईटी के माध्यम से भेज रहा हूं। – user
यह आपकी समस्या का सही उत्तर है। यदि आप यूआरएल में कहीं भी एक शाब्दिक प्लस साइन का उपयोग करना चाहते हैं, तो सर्वर-साइड भाषा के इस्तेमाल के बावजूद, इसे एन्कोड किया जाना चाहिए, जैसे इसे "% 2 बी" से बदलना। ऐसा इसलिए है क्योंकि URL में प्लस संकेत अंतरिक्ष वर्णों के लिए स्टैंड के रूप में उपयोग किए जाते हैं, और किसी भी सर्वर-साइड स्क्रिप्ट उन्हें वर्ण वर्णों के रूप में सही ढंग से व्याख्या करेंगे। – thomasrutter
आह जो मुझे यह जवाब दिखाई देता है संपादित किया गया है। ओह ठीक है, अब यह सही है। +1 – thomasrutter