2012-04-22 6 views
5

में http% 3A% 2F% 2F बनता है निम्न रीडायरेक्ट यूआरएल http: // के बजाय http% 3A% 2F% 2F के साथ बन जाता है। इससे कैसे बचा जा सकता है?http: // कोडइग्निटर

अग्रिम धन्यवाद।

$params = array(
      'client_id' => $client_id, 
      'redirect_uri' => site_url('welcome/google_connect_redirect/'), 
      'state' => $_SESSION['state'], 
      'approval_prompt' => 'force', 
      'scope' => 'https://www.googleapis.com/auth/userinfo.profile https://www.googleapis.com/auth/userinfo.email', 
      'response_type' => 'code' 
     ); 
     $url = "https://accounts.google.com/o/oauth2/auth?".http_build_query($params); 
     // send to google 
     redirect($url); 

यूआरएल इस तरह बन जाता है।

https://accounts.google.com/o/oauth2/auth?client_id=871111192098.apps. 
googleusercontent.com&redirect_uri=http%3A%2F%2Flocalhost%3A8888%2Fmyappname 
%2Findex.php%2Fwelcome%2Fgoogle_connect_redirect&state=f0babsomeletterscb5b48753358c 
3b9&approval_prompt=force&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2F 
userinfo.profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.email& 
response_type=code    
+0

मुझे नहीं लगता कि यूआरएल के पुनर्निर्देशन को प्रभावित करेगा। – hjpotter92

उत्तर

2

जब आप URL में विशेष वर्ण के साथ तार डाल दिया, वे इनकोडिंग किया जाएगा, आप उपयोग कर सकते हैं urldecode

0

http_build_query() की बात है कि यह urlencode() रों उन में शामिल होने से पहले आप के लिए सरणी के मूल्यों में से प्रत्येक के एक क्वेरीस्ट्रिंग प्रारूप। यह पसंदीदा व्यवहार है।

+0

बिल्कुल। यह वास्तव में एक अच्छी बात है कि यह यह कर रही है। ओपी, क्या आपने इसका परीक्षण किया है? क्या यहाँ कोई समस्या है? –

1

क्वेरी स्ट्रिंग एन्कोड किया गया है क्योंकि कुछ विशेष वर्ण हैं जिनका URL में विशेष अर्थ है।

Wikipedia से:

कुछ वर्ण एक यूआरएल (उदाहरण के लिए, अंतरिक्ष) का हिस्सा नहीं हो सकता और कुछ अन्य पात्रों के एक URL में एक विशेष अर्थ नहीं होता: उदाहरण के लिए, चरित्र # हो सकता है दस्तावेज़ के उपखंड (या खंड) को आगे निर्दिष्ट करने के लिए उपयोग किया जाता है; वर्ण = का उपयोग किसी मान से नाम को अलग करने के लिए किया जाता है। इन बाधाओं को पूरा करने के लिए एक क्वेरी स्ट्रिंग को परिवर्तित करने की आवश्यकता हो सकती है। यह यूआरएल एन्कोडिंग के रूप में जाना जाने वाला स्कीमा का उपयोग करके किया जा सकता है।