2009-11-19 20 views
16

का उदाहरण है हर बार जब मैं $ _GET के माध्यम से एक चर प्राप्त करता हूं, तो मैं यह सत्यापित करना चाहता हूं कि यह वास्तव में उपयोगकर्ता वर्ग का एक उद्देश्य है।PHP: जांचें कि कोई चर एक निश्चित वर्ग

तो:

if (isUser($_GET['valid_user'])) 
{ 
... 
} 

है समारोह में बनाया गया एक इस तथाकथित "isUser" के बजाय उपयोग कैसे करें?

बहुत बहुत धन्यवाद!

उत्तर

44

आप एक निश्चित वर्ग के लिए किसी भी चर सत्यापित कर सकते हैं:

if ($my_var instanceof classname) 

हालांकि, अपने मामले कि कभी काम नहीं करेगा में, $ _GET [ "valid_user"] अनुरोध से आता है और कभी नहीं एक होने जा रहा है के रूप में वस्तु।

isUser() शायद उपयोगकर्ता प्रबंधन लाइब्रेरी से एक कस्टम फ़ंक्शन है जो वर्तमान सत्र को प्रमाणित करता है। आपको यह देखने की ज़रूरत है कि अगर आप इसे बदलना चाहते हैं तो यह कैसे काम करता है। अगर यह एक वस्तु है और नीचे दिए गए लिंक को देखने का तरीका जो वर्ग

http://hr.php.net/manual/en/reflectionclass.isinstance.php

+1

दूसरों के लिए: ध्यान दें कि 'classname' एक स्ट्रिंग नहीं है - यह वर्ग पहचानकर्ता (कि' use' कीवर्ड के साथ आयात किया जा सकता है) है। – robsch

0

is_object जाँच करने के लिए:

bool is_a (object $object , string $class_name) 

documentation से: यह जांचता है कि वस्तु इस वर्ग का है या इस वर्ग में उसके माता-पिता में से एक है

5

PHP भाषा में एक समारोह नहीं है, आप मदद कर सकता है जो यह बताती है

0

$ _GET [] चर वैरिएबल की तुलना में अधिक स्थिरांक हैं, वे केवल पढ़े जाते हैं .. लेकिन आपके जैसे किसी अन्य $variable तक पहुंचा जा सकता है।

अपने उदाहरण में:

if (isUser($_GET['valid_user'])) 
{ 
... 
} 

मैं आशा कि इसे पढ़ा होगा:

if (isUser($some_sanatized_variable)) 

.. जब तक isUser() कि क्या कर रही है है। 'वैरिएबल' जो PHP सेट किसी भी वर्ग से संबंधित नहीं है, जो मेरी चिंता को दर्शाता है कि उपयोगकर्ता()) पर्याप्त रूप से यह नहीं जानता कि इससे क्या निपट रहा है।

2

आप इस कोशिश कर सकते:

if (is_object($_GET['valid_user'])) 
{ 
    // more code here 
} 
संबंधित मुद्दे