कम्प्युटरसफ्टवेयर

समारोह मा PHP वैश्विक चर। PHP मा एक वैश्विक चर बनाउन

पूर्ण साइट, तपाईं धेरै जान्नु आवश्यक जो व्यापक कार्यक्षमता छ सिर्जना गर्न। तर के उहाँलाई साँच्चै अद्वितीय बनाउन सक्छ - यो PHP छ। यस कार्यक्रम भाषामा वैश्विक चर अक्सर प्रयोग गरिएको छैन, तर कहिलेकाहीं यो कसरी काम गर्छ जान्न, कहिलेकाहीं यो आवश्यक छ। त्यो यो छ र कसरी यो काम गर्छ, हामी यस लेखमा के गर्न जाँदैछन् के को अध्ययन हो।

स्कोप

त्यसैले चर र निर्धारित जसमा सन्दर्भ कल। प्रायजसो, तिनीहरूले एउटा मात्र स्कोप छ। PHP वैश्विक चर अन्य फाइलहरू बाट लोड गर्दा, त्यसपछि यसलाई समावेशी (समावेश) र आवश्यक हुन सक्छ (आवश्यक)।

पूर्वनिर्धारित, तिनीहरूले स्थानीय समारोह स्कोप सीमित छन्। र कसरी कुन थप र प्रयोग गर्न सक्छ, आफ्नो सीमाहरु मा चल देखेको फाइलहरू बनाउने? यो अन्त गर्न, र PHP वैश्विक चर प्रदान गरिएको छ।

कीवर्ड "वैश्विक"

र यहाँ एक वैश्विक चर php कसरी घोषणा गर्न हो? यो लक्ष्य प्राप्त शब्द हामीलाई "वैश्विक" मदत गर्नेछ। यो तपाईं एक वैश्विक (narimer, वैश्विक «चर") बनाउन चाहनुहुन्छ चर अगाडि राख्न आवश्यक छ।

एक संकेत जस्तै को कार्यान्वयन पछि, डाटा कुनै पनि फाइल काम गर्न सक्षम हुनेछ। कतै यो चल सन्दर्भहरू छन् भने, कार्यक्रम सधैं वैश्विक संस्करणमा ध्यान हुनेछ।

किन यस्तो अनौठो भाषा? एकै समयमा तथ्यलाई त्यहाँ स्थानीय संस्करण हुन सक्छन्। तर तिनीहरू कहाँ घोषणा ती फाइलहरू लागि विशेष उपलब्ध हुनेछ। र सबै बाँकी वैश्विक चर PHP वर्ग कार्य गर्नेछ। त्यसैले तपाईं होसियार हुनुपर्छ। वैश्विक एक: र कुनै शङ्का थियो कि, तिनीहरू यहाँ कस्तो हेर्न को एक उदाहरण हो।

एउटा फाइल चर को एक नम्बर पहुँच हुनेछ भने किनभने, यो तिनीहरूलाई जुध्न हुन हुनेछ। स्थानीय वा वैश्विक चर पढ्न वा पूरै छ असफल - तर हामी निश्चित लागि भन्न सक्दैन। त्यसैले, यो एक समारोह मा दर्ता छ भने, यो कुनै समस्या हुनुपर्छ। तर यसको सीमाना लागि एक चर को प्रयोग समस्याग्रस्त हुन। तसर्थ, कतै छ कि राम्ररी अनुगमन र निश्चित गर्न आवश्यक कोड को मस्यौदा संरचना पनि भन्नुभयो संघर्ष गर्न जरूरी उठ्दा।

रेकर्डिङ अर्को embodiment

यसलाई PHP मा अर्को बाटो मा एक वैश्विक चर सिर्जना गर्न सम्भव छ? हो, पनि एक छैन। पहिलो, गरेको पनि $ GLOBALS विचार गरौं। यो associative एरे छ। यसलाई प्रमुख - नाम हो। सामग्रीहरू को मूल्य एक वैश्विक चर रूपमा कार्य रूपमा। यो घोषणा पछि एरे कुनै पनि स्कोप मा अवस्थित छ उल्लेख गर्नुपर्छ। यसले superglobal विश्वास गर्ने कारण दिन्छ। यो त देखिन्छ: $ GLOBALS [ 'चल']।

पूर्वनिर्धारित / superglobals

हरेक कार्यक्रम भाषामा यसको कार्य केही लागि चार्टर्ड छन् केही नाम छन्। तसर्थ, एउटै नाम काम छैन को PHP वैश्विक चर सिर्जना गर्न।

यो कार्यक्रम भाषा यसको आफ्नै विशेषताहरु छन्। त्यसैले, यो कि यहाँ पूर्वनिर्धारित चर, "सुपर" स्थापना छैन भनेर हो, तिनीहरूले सबै स्थानहरूमा उपलब्ध छन् महत्त्वपूर्ण छ। म यसलाई कसरी समाधान गर्न सक्छन्? पूर्वनिर्धारित चर केही स्थानीय क्षेत्र मा उपलब्ध थियो निम्नानुसार :. विश्व «चर, यो घोषणा हुनुपर्छ" यसलाई सही, अघि भन्नुभयो जस्तै हुन देखिन्छ? यो सत्य हो, तर एकदम। हामीलाई पहिले नै एउटा उदाहरण "झगडा" हेरौं:

  • वैश्विक $ HTTP_POST_VARS;
  • $ HTTP_POST_VARS [ 'नाम'] झल्काउँछ।

तपाईंले तिनीहरूलाई बीच फरक महसुस? PHP वैश्विक चर मा आवश्यक समारोह भित्र प्रयोग गर्न छैन भनेर याद गर्नुहोस्। यो पनि यसलाई समावेश भएको एक फाइल मा राखिएको गर्न सकिन्छ।

लिंक र सुरक्षा

तपाईं देख्न सक्नुहुन्छ रूपमा, PHP मा सिर्जना एक वैश्विक चर समस्या छैन। तर त्यहाँ कुनै पनि विशेष नातेदार लिंक छ? हो, वैश्विक प्रयोग गर्दा अनपेक्षित व्यवहार हुन सक्छ। तर पहिले, एक सानो backstory।

संस्करण 4.2.0 मा पूर्वनिर्धारित register_globals द्वारा निर्देशन मा-राज्य देखि बन्द परिवर्तन भयो। सबैभन्दा प्रयोगकर्ताहरूको लागि, यो छैन धेरै महत्वपूर्ण, तर व्यर्थमा छ। आखिर, यो सीधा विकास उत्पादन सुरक्षा असर गर्छ। तपाईं बनाउन आवश्यक छ भने चर वैश्विक, यो प्यारामिटर मा PHP-निर्देशन सीधा असर छैन। तथापि, गलत प्रयोग पहिले नै precedents सुरक्षा सिर्जना गर्न सक्नुहुन्छ।

त्यसैले register_globals उदाहरण HTML-प्रकारका पठाउन को लागि लिखित कोड को कार्यान्वयन, विभिन्न चर आवश्यक छन् भनेर आरम्भ अघि, बन्द गरिएको छ भने। तसर्थ, यो बन्द गर्ने निर्णय भएको थियो।

किन धेरै owes PHP वैश्विक चर यो निर्देशन स्थिति छ? तथ्यलाई विकासकर्तालाई को राज्य निश्चितताका साथ सधैं त्यसो गर्दा आफूलाई कहाँ यसलाई आए को प्रश्नको जवाफ सक्ने छ। एक हात मा, यो कोड लेख्न सजिलो छ। तर अन्य मा - यो एक सुरक्षा जोखिम छ। तसर्थ, त्रुटिहरू, साथै डाटा मिश्रण बच्न र निर्देशलाई अक्षम गरिएको छ।

अब छैन / सुरक्षित कोड, साथै कसरी अवस्थामा जहाँ वैश्विक PHP चर को घोषणा प्रयासहरू द्वारा डाटा छेडछाड मा सँगसँगै छ पत्ता लगाउन हेरौं। यो मात्र सुन्दर सिर्जना गर्न आवश्यक छ, तर पनि निरंतर पहिलो उपलब्ध व्यक्ति दरार छैन भनेर साइटहरु काम।

खराब कोड

भन्ने चल अधिकृत छन् गर्नेहरूका लागि साँचो छ सेट गरौं:

यदि (authenticate_user ()) {
$ अधिकार = साँचो;
}

यदि ($ प्राधिकरण) {
"/highly/sensitive/data.php" समावेश;
}

यो अवस्थामा, स्वचालित चर सेट गर्न सकिन्छ। डाटा बस प्रतिस्थापित गर्न सकिँदैन, कि र आफ्नो मूल स्रोत सेट छैन विचार, त्यसपछि कुनै यस्तो परीक्षण पास र अरू कसैले बहाना गर्न सक्नुहुन्छ। इच्छित भने, आक्रमणकारीले (वा उत्सुक तर अनुभवहीन व्यक्ति) बिगडा हुन सक्छ, हाम्रो तर्क।

हामी निर्देशलाई को मूल्य परिवर्तन गर्नुभयो भने, यो कोड हामी आवश्यक, सही काम गर्नेछ। तर चर को प्रारम्भ भएको कार्यक्रम मा मात्र राम्रो स्वर छ, तर पनि हामीलाई लिपि को स्थिरता को एक निश्चित ग्यारेन्टी दिन्छ।

कोड को विश्वसनीय संस्करण

तपाईं बन्द गर्न सक्नुहुन्छ वा निर्देशनहरू काम, वा यो लक्ष्य हासिल गर्न एक थप जटिल कोड गर्ने सल्लाह दिन्छन्। उदाहरणका लागि, यो जस्तै:

यदि (isset ($ _ SESSION [ 'प्रयोगकर्ता नाम'])) {

प्रतिध्वनि "नमस्कार {$ _ SESSION [ 'प्रयोगकर्ता नाम']} ";

} अरू {

प्रतिध्वनि "नमस्कार अतिथि
";
"स्वागत छ प्रयोगकर्ता!" झल्काउँछ;

}

यस मामला मा एक प्रतिस्थापन बनाउन, त्यहाँ कठिन हुनेछ। तर अझै पनि - सम्भव। यसो गर्न, तपाईं तीव्र प्रतिक्रिया उपकरण प्रदान गरेका थिए हेरविचार गर्नुपर्छ। तपाईं PHP मा वैश्विक चर समावेश गर्न चाहनुहुन्छ भने, तपाईंले निम्न उपकरण प्रयोग गर्न सक्नुहुन्छ: हामी दायरा प्राप्त मान छ के थाहा छ भने, यो एक मिलान यो जाँच गर्न एक लिपि दर्ता गर्न सम्भव छ। निस्सन्देह, यो पनि प्रतिस्थापन मान विरुद्ध पूर्ण सुरक्षा ग्यारेन्टी छैन। तर त्यो पनि धेरै विकल्पहरू एकदम जटिल छ।

बहाना घूम्छ गर्न प्रयास पाता

तपाईँलाई पहिले लिखित कसरी बुझ्ने हेरौं। PHP मा तल दिइएको गरिने समारोह मा वैश्विक चर, तपाईं आफैलाई घोषणा गर्न आवश्यक हुनेछ। हामी यो पाठ विषय को Assimilation गृहकार्य एक प्रकारको छ भनेर भन्न सकिन्छ। यहाँ कोड छ:

यदि (isset ($ _ कुकी [ 'C_COOKIE'])) {
} Elseif (isset ($ _ प्राप्त [ 'C_COOKIE']) || isset ($ _ पोस्ट [ 'C_COOKIE'])) {

मेल ( "administrarot@example.com", "ध्यान, लिपि रेकर्ड गरियो चोरी मा प्रयास र डाटा छेडछाड", $ _SERVER [ 'REMOTE_ADDR']);
"त्यहाँ एक भाँचिएको सुरक्षा थियो वा त्यसो गर्न प्रशासक सूचित प्रयास।" झल्काउँछ;
बाहिर निस्कन;

} अरू {
}
?>

अब व्याख्या अतिरिक्त। आंशिक C_COOKIE एक विश्वसनीय स्रोतबाट हामीलाई आउँछ। पूर्णतया अपेक्षित परिणाम अनुसार सन्तुष्ट गर्न, हामी यसको मूल्य जाँच र समस्याहरू प्रशासक सूचित। यदि यो आउँछन्, त्यसपछि कुनै पनि कार्य गर्न आवश्यक छैन र थिएन। तपाईं बस register_globals निर्देशलाई आफ्नो कोड सुरक्षित छ बनाउन गर्दैन असक्षम भनेर बुझ्न छन्। तसर्थ, प्रयोगकर्ता देखि एक लिपि प्राप्त कुनै पनि चल, अपेक्षित मूल्य लागि जाँच गर्नुपर्छ।

निष्कर्षमा

यहाँ, सामान्य, र सबै तपाईं सफलतापूर्वक र सुरक्षित आफ्नो काममा प्रयोग गर्न वैश्विक चर बारेमा जान्नु आवश्यक छ। आक्रमणकारीहरूले निरन्तर आफ्नो विधि र कौशल सुधार छन् - को पाठ्यक्रम, त्यहाँ कसैले तिनीहरूलाई सक्दैन प्रयोग गर्नेछ पूर्ण ग्यारेन्टी छ भन्न। यो कोड मा वैश्विक चर अधिकतम प्रयोग सीमित गर्न यसकारण मनमोहक छ। खुसीको कुरा, यो कार्यक्रम भाषा को संरचना र डिजाइन सुविधाहरू यस लक्ष्य हासिल गर्न सक्नुहुन्छ। शुभकामना छ!

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ne.delachieve.com. Theme powered by WordPress.