2011-10-14 5 views
5

छानने, इस स्क्रिप्ट में मैं एक इनकमिंग $ _GET चर के मूल्य की जाँच करें और मान्य है कि यह एक पूर्णांक है, मैं तो करने के लिए एक $ _SESSION मूल्य के खिलाफ इस मूल्य को मान्य पुष्टि करें कि वे केवल अपने खाते तक पहुंच सकते हैं।

// validate $_GET field 
if(isset($_GET['identity']) && filter_var($_GET['identity'], FILTER_VALIDATE_INT, array('min_range' => 1))) { 


if(isset($_SESSION['user_identity']) && ((int)$_SESSION['user_identity'] === (int)$_GET['identity'])) { // if session exists and is === $_GET['identity'] 
// Proceed with code 

यह उदाहरण के लिए ठीक काम करता है अगर मैं पारित करने के लिए कोशिश '0', '2-2', 'एबीसी' या $ _GET मूल्य के रूप में कोई मूल्य नहीं क्वेरी सही ढंग से विफल रहता है और पुनः निर्देश: कोड इस तरह दिखता है उन्हें होम पेज पर।

क्या मैं तो करने की कोशिश की थी मेरी .htaccess फाइल को बदलने बस इसे साफ करने के लिए '/ 1 प्रोफाइल' के लिए यूआरएल मैप करने के लिए।

RewriteRule ^profile$ profile.php 
RewriteRule ^profile/([0-9]+)$ profile.php?identity=$1 [NC,L] 

मैं अब क्या पाया गया कि अब किसी पृष्ठ से अधिक आयु वालों अमान्य $ _GET मानकों का प्रयोग करके रीडायरेक्ट नहीं करता है। यह सिर्फ 'प्रोफाइल/एबीसी' खोजने की कोशिश करता है।

क्या किसी को पता है क्यों?

उत्तर

10

मैं इस का उपयोग करें और यह मेरे लिए काम करता है:

RewriteEngine On 
RewriteBase/
RewriteRule ^profile$ profile.php 
RewriteRule ^profile/([a-z0-9\-]+)$ profile.php?identity=$1 [NC,L,QSA] 

अब, आप profile/abc कैसे मिला? यदि आप नियम में अक्षरों को पारित करने का प्रयास करते हैं तो यह काम नहीं करेगा क्योंकि आप केवल ([0-9]+) निर्दिष्ट करते हैं। आप पत्र पास करना चाहते हैं आप का उपयोग करने की आवश्यकता होगी:

RewriteRule ^profile/([a-z0-9\-]+)/?$ profile.php?identity=$1 [NC,L,QSA] 
+0

धन्यवाद, मैं अपने नियमों की कोशिश करेगा। मुझे नहीं पता, यह मेरे .htacces नियमों के साथ कुछ करना होगा क्योंकि php विवरण स्पष्ट रूप से किसी भी चीज़ को अस्वीकार करते हैं जो === एक पूर्णांक नहीं है और यूआरएल में $ _GET को गुजरने से अनचाहे अन्य सभी को फेंकता है। – Jonnny

+0

ठीक है मुझे बताएं कि आपको अतिरिक्त सहायता –

+0

की आवश्यकता है, मैंने अभी कोशिश की है, मुझे अभी भी वही परिणाम मिल रहा है। कितना अजीब, शायद यह मेरे सिस्टम में कुछ quirk है। आपकी सहायता की सराहना करें हालांकि – Jonnny

संबंधित मुद्दे