फ्रेमवर्क से नो-फ्रेमवर्क में जाना [बंद]


89

मैं PHP में एक शौक के रूप में लगभग 8 वर्षों से विकसित कर रहा हूं। 2009 में, मैंने कोडाइनाइटर उठाया और तब से मैं एक भी प्रोजेक्ट विकसित करने में कामयाब नहीं हुआ।

मुझे लगता है कि यह मुझे धीमा करने की कोशिश कर रहा है कि मैं इसे कैसे काम करने के लिए संशोधित करना चाहता हूं, जब मैं शुद्ध पीएचपी में काम कर रहा था, तो मुझे पता होगा, या मैं जल्दी से एक स्निपेट खोजने में सक्षम होगा।

मैंने CodeIgniter, कोहाना और सिम्फनी की कोशिश की है। मुझे उपयोग में आसानी पसंद है (और मैंने एक ORM के रूप में सिद्धांत का उपयोग करना भी शुरू कर दिया है जो बड़े पैमाने पर मेरे डेटाबेस का काम करता है), लेकिन मुझे लगता है कि परियोजनाएं मुझे शुद्ध पीएचपी में 3-4 गुना समय ले रही हैं। जब मैं पहले से शुद्ध PHP में हल की गई समस्या का हल नहीं ढूंढ पाता तो मैं ऊब और निराश हो जाता हूँ।

क्या कोई फ्रेमवर्क का उपयोग न करने के लिए फ्रेमवर्क से वापस चला गया है। क्या एक बुनियादी सुरक्षा ढांचे (XSS को रोकें, पोस्ट किए गए डेटा को फ़िल्टर करें, डेटाबेस के साथ उपयोग के लिए एक सफाई फ़ंक्शन प्रदान करें) जैसा कुछ है? मुझे लगता है कि ऐसा कुछ मुझे पूर्ण पैमाने की रूपरेखा से कहीं अधिक लाभान्वित करेगा। मुझे लगता है कि चौखटे के साथ काम करना सीखना मुझे बहुत कुछ सिखा गया है, लेकिन मैं अपने कोड के साथ काम करके खुश रहूंगा।


5
मैं इस बारे में अधिक सुनना पसंद करूंगा कि आपने नो-फ्रेमवर्क की तुलना में 3-4 गुना समय लेने के लिए फ्रेमवर्क का उपयोग करने के बारे में क्यों कहा है .. क्या आपको उस पर अधिक विस्तार करने का मन है?
लुकमान

7
CI, या किसी भी ढांचे के लाभों में से एक यह है कि यह आपको डिजाइन पैटर्न में मजबूर करता है जो डेवलपर्स के लिए आसान है जो आपके विशेष विकास शैली को बनाए रखने के आदी नहीं हैं। इसके अलावा, बड़े वातावरण में, तर्क से विचारों को अलग करना आवश्यक है, ताकि आपके सीएसएस गुरु डेवलपर्स के पैर की उंगलियों पर कदम रखे बिना अपनी बात कर सकें।
काइल नोलैंड

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

जवाबों:


101

PHP5 के वर्तमान संस्करणों में मानक लाइब्रेरी के हिस्से के रूप में आपके द्वारा खोजे जा रहे सुरक्षा ढांचे में बहुत कुछ शामिल है।

  • बाहर से आने वाले सामान को साफ करने के लिए filter_input_array का उपयोग करें ।
  • SQL इंजेक्शन हमलों को रोकने के लिए पैरामीटर किए गए SQL के साथ PDO के माध्यम से अपने डेटाबेस तक पहुँचें ।
  • अपनी साइट को सत्र निर्धारण और कुकी चोरी के प्रति अधिक प्रतिरोधी बनाने के लिए निम्न PHP सेटिंग्स का उपयोग करें:
    • session.use_only_cookies (URL में लीक होने से आपके सत्र के टोकन को रोकता है)
    • session.cookie_httponly या session_set_cookie_params () की httponlyविशेषता (संगत ब्राउज़रों में सत्र कुकी पढ़ने वाली लिपियों के विरुद्ध सुरक्षा)
    • अधिक सुझाव और PHP उदाहरण कोड विकिपीडिया पर उपलब्ध है ।
    • आप सेटक्यूकी () केhttponly साथ विशेषता का भी उपयोग कर सकते हैं ।
  • नई HTTP और HTML5 सुविधाओं के लिए बुनियादी टेम्प्लेटिंग और हेडर-सेटिंग के अलावा कुछ भी नहीं आवश्यक है:

यदि आप HTML को इनपुट के रूप में स्वीकार कर रहे हैं, तो मैं सुझाव देता हूं कि आप HTML Purifier को पकड़ें और इसे अपने फ़िल्टर_इनपुट_अरे सेटअप में FILTER_CALLBACK लाइन के माध्यम से कॉल करें। इनपुट सुरक्षा के लिए इसका श्वेतसूची-आधारित दृष्टिकोण, XSS के खिलाफ रक्षा की एक महान (और बहुत शक्तिशाली) पहली पंक्ति बनाता है।

जहां तक ​​मैं बता सकता हूं, PHP क्रॉस-साइट अनुरोध जालसाजी से बचाने के लिए एक तंत्र के साथ नहीं आता है , लेकिन मुझे यकीन है कि Google उस एक के बारे में आपकी मदद कर सकता है। OWASP सुरक्षा Cheatsheets अगर आप अपने खुद के सुरक्षा लागू करना चाहते हैं उस पर एक खंड शामिल हैं।

जिज्ञासा से बाहर, मैंने भी स्टैंडअलोन घटकों को देखना शुरू करने का फैसला किया और यहां मैंने अब तक क्या पाया है:

templating:

  • PHP टेम्पलेट वंशानुक्रम (नियमित PHP प्लस टेम्पलेट विरासत)
  • TWIG (Django / Jinja2 / लिक्विड -स्टाइल सिंटैक्स जिसमें ऑटोटस्केप और सैंडबॉक्सिंग शामिल हैं। गति के लिए कैश्ड PHP के संकलन।)
  • Dwoo (अधिक तेज़, के लिए और अधिक featureful, PHP5-ish उत्तराधिकारी चतुर । मौजूदा चतुर टेम्पलेट्स के लिए एक संगतता प्रणाली भी शामिल है।)

सामान मैं अभी भी ठीक से नहीं देखा है:

  • रूट डिस्पैचिंग (केवल अब तक का रूट मैप और Net_URL_Mapper मिला । धन्यवाद, cweiske)
  • ओआरएम (बस के मामले में नंगे पीडीओ आपकी बात नहीं है)

धन्यवाद, सभी बहुत अच्छी सलाह और मैं उन्हें अब देखना शुरू करने जा रहा हूँ!
एलेक्स सी।

4
यदि आपको टेम्प्लेटिंग इंजन की आवश्यकता है, तो ड्वो के लिए स्मार्टी को स्वैप करें। यह स्मार्टी के समान है, लेकिन सीपीयू को पिघलाता नहीं है।
फिल स्टर्जन

pear.php.net/package/Net_URL_Mapper एक मार्ग प्रेषण है।
cweiske

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

इस बात पर निर्भर करता है कि आप क्या हासिल करने की कोशिश कर रहे हैं और फ्रेमवर्क आपको धीमा क्यों कर रहा है।
ssokolow

10

मुझे रूपरेखाओं पर विश्वास नहीं है ... मैंने उनमें से कई में काम किया है।

MVC फ्रेमवर्क से नफरत करने के कारण:

1) कोड ब्लोट, मैं प्रीमियम कक्षाएं खरीदता हूं जो मुझे विकास में सहायता करती हैं। जैसे कि फॉर्म क्लास या एसक्यूएल क्लास।

2) मेरा मानना ​​है कि MVC फ्रेमवर्क आसानी से पोर्टेबल नहीं हैं, खासकर जब निर्भरता प्रबंधकों का उपयोग करते हैं।

3) मेरा मानना ​​है कि आप वास्तव में एक एमवीसी ढांचे के साथ अधिक कोड लिखते हैं तो अगर आपको एक टन बॉयलर के साथ उपयोगी कक्षाओं का उपयोग करना पड़ा जो प्रमाणीकरण को संभालते हैं आदि।

4) ज्यादातर चौखटे भी मूल रूप से सिर्फ एक या दो डेटाबेस के लिए पूरा करती हैं।

मेरा सुझाव है कि प्रमाणीकरण और टेक्स्ट एडिटर और मैडू + ई-मेल वर्ग जैसे एसक्यूएल फ्रेमवर्क के साथ एक फॉर्म फ्रेमवर्क ढूंढा जाए ...

आपके आवेदन का 90% हमेशा रूपों, sql और ajax CLASSES है - बाकी को केवल जरूरत पड़ने पर हासिल किया जा सकता है

मैं एक न्यूनतावादी हूं और मैं अपने आवेदन में कोड होने के विचार के साथ संघर्ष करता हूं जो कुछ भी नहीं कर रहा है ... बस अगर मुझे ज़रूरत है तो यह मेरे लिए काम नहीं करता है।


"मैं प्रीमियम कक्षाएं खरीदता हूं" कथन के बारे में: आप ऐसी कक्षाएं कहां से खरीदते हैं, और किन उद्देश्यों के लिए? धन्यवाद।
14

मैं सहमत हूँ। इसके अलावा बहुत सारे ढांचे के साथ एक बड़ा प्रदर्शन हिट है।
developerbmw

8

आपके पीछे इतना अनुभव होने के साथ, आपके पास पसंदीदा पुस्तकालयों का अपना सेट होना चाहिए, उन्हें चुनें और अपने स्वयं के सरल ढांचे के साथ आएं। फ्रेमवर्क या नो फ्रेमवर्क (और उस पर कौन सा) हाथ में प्रोजेक्ट की तरह पर निर्भर करता है, कोई भी दस्ताने सभी फिट नहीं होता है। इसलिए मैं दृढ़ता से सुझाव दूंगा कि यदि आपको लगता है कि मौजूदा ढांचे आपको धीमा कर रहे हैं, तो कुछ समय बिताएं और एक ऐसी रूपरेखा तैयार करें जो आपकी आवश्यकताओं के अनुसार काम करे।


8

अपने कथन के आधार पर कि आप PHP को एक शौक के रूप में उपयोग कर रहे हैं, साथ ही साथ आपका प्रोफ़ाइल स्टेटमेंट "धीरे-धीरे वहाँ पहुँच रहा है", यह एक सीखने की अवस्था जैसा लगता है। आपको यह अनुभव नहीं हुआ है कि अनुभव की गहराई और चौड़ाई क) संरचना के भीतर काम करने के तरीके को समझती है कि फ्रेम लगाता है और बी) आप इस तरह से उन क्षमताओं से लाभ नहीं ले पा रहे हैं जो ढांचा सक्षम बनाता है।

मैं आपसे आग्रह करता हूं कि आप इसके साथ रहें। वीडियो ट्यूटोरियल के साथ शुरुआत में वापस जाएं। अन्य लोगों के कोड को तब तक ढूंढें और पढ़ें जब तक आप इसे नहीं समझते। अपनी परियोजनाओं को नीचे से ऊपर बनाएं - बस शुरू करें, और कार्यक्षमता जोड़ें। उत्तर पढ़ने से पहले प्रश्नों का उत्तर देने की कोशिश करते हुए, मंचों का पालन करें।

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


मैं अभी भी सीमा रेखा पर हूं कि मुझे रूपरेखाएं पसंद हैं या नहीं। मैं निश्चित रूप से ओपी के बिंदु को देखता हूं, लेकिन मैं आपका भी देखता हूं ... एक रूपरेखा सीखना पूरी तरह से एक नई भाषा सीखने जैसा है। आपको चीजों को करने के ढांचे में उतरना होगा। हालाँकि, एक और चीज जिसके साथ मैं संघर्ष करता हूं, वह यह है कि अगर चीजें कैसे की जानी चाहिए, तो मेरा दर्शन फ्रेमवर्क से अलग है। मैं अब भी मुझे ढूंढने की कोशिश कर रहा हूं। (.NET MVC3 के लिए इंतजार नहीं कर सकता)
mpen

अभी तक, मैं किसी भी अन्य ढांचे को नहीं जानता, इसलिए मैं किसी भी सामान्यता के साथ बात नहीं कर सकता। लेकिन एक फ्रेमवर्क का उपयोग सभी या कुछ भी नहीं प्रस्ताव है। उदाहरण के लिए, मुझे CI की कैशिंग लाइब्रेरी (पृष्ठ, डेटाबेस) अपर्याप्त है और आसानी से स्केलेबल नहीं मिल रही है। इसलिए मैं थर्ड पार्टी कैश लाइब्रेरी (फिल स्टर्जन) का उपयोग करता हूं और मैं इससे बहुत खुश हूं।
कूलजेक

इसके साथ चिपके रहने का एक अन्य महत्वपूर्ण लाभ यह है कि यह बाद में अन्य रूपरेखाओं को सीखना अपेक्षाकृत आसान बनाता है। यही कारण है कि आप अक्सर नौकरी लिस्टिंग को एक विशेष ढांचे (कहते हैं, CI) को निर्दिष्ट करते हुए देखते हैं, लेकिन उस अनुभव को समान रूपरेखा (जैसे ज़ेंड, या सिम्फनी) के साथ माना जाएगा।
कूलजेक

2

Zend फ्रेमवर्क वास्तव में इसके लिए सुपर है। आप जितना चाहें उतना कम या ज्यादा उपयोग कर सकते हैं। इसके सभी php और खुले sourced में कोडित ताकि आप बस इसे हैक कर सकते हैं और इसे अपना बना सकते हैं। अलग-अलग घटक प्रत्येक माँ पर उतने निर्भर नहीं होते जितने अन्य ढांचे में।

आप बिना किसी समस्या के Zend के कुछ घटकों का उपयोग करके अपने आप को एक सरल ढांचा बना सकते हैं।

इसे देखें !


3
वह एक ढांचे से दूर जाने की कोशिश कर रहा है।
वार्मवाफल्स

1
@WarmWaffles। विच है क्यों मैं ZF के कुछ हिस्सों का उपयोग करने के बारे में बात की। निश्चित रूप से आप हर चीज के लिए पहिया को सुदृढ़ करने की उम्मीद नहीं करते हैं।
इज्नोगूड

2
इज़्नोगुड का एक बहुत अच्छा बिंदु है। ZF सिर्फ एक ढांचे से अधिक है। मैंने बहुत सारे सामान्य कार्यों को करने के लिए पैकेजों को बेहद उपयोगी माना है, और इसके बारे में ऐसा कुछ भी नहीं है जो आपको उनके एमवीसी पैटर्न या उनके डीबी एक्सेस विधियों या वास्तव में कुछ भी उपयोग करने के लिए मजबूर करता है। बेशक, आप नाशपाती मॉड्यूल के साथ भी जा सकते हैं।
बॉब बैडले

2
यह एक पुस्तकालय हाँ है जो एक ढांचे को भी स्पोर्ट करती है। हालाँकि, वह उपयोग करने में कुछ आसान लग रहा है, और पिछली बार जब मैंने चेक किया Zend का नाम स्थान अव्यवस्थित है और टाइप करने के लिए एक दर्द है। @Bus_Baddeley PEAR एक अच्छा सुझाव है
WarmWaffles

@WarmWaffles में से प्रत्येक अपने स्वयं के अनुमान लगाता है। हो सकता है कि आप Zend को 1.10.x पर रीचेक कर सकें और अब अलग-अलग हो तो 1.8 कहें।
इज़ानोगूड

2

मैं ठीक उसी तरह जानता हूं, जैसा आप महसूस करते हैं। मैंने 4 ~ 5 साल पहले PHP में शुरू किया था (मैं डेल्फी, लोल से आया था), और शुद्ध php में शुरू किया। जो मैंने उन्हें वापस किया था वह "सीएमएस पैनल जैसा" था, जो सभी टेबल फ़ील्ड्स को पढ़ता है और फॉर्म बनाता है। कुछ समय बाद मैं PHP फ्रेमवर्क के ज्ञान में किसी तरह पहुंचा, मैंने पहली बार CakePHP की कोशिश की और पसंद नहीं किया, बाद में, मेरी राय में Yii विच में मिला, बहुत सहज और आसान उपयोग है (इसके साथ Gii जनरेटर है यह बहुत ज्यादा चट्टानों)। मैंने सिम्फनी, ZF2, Laravel, Yii2-Beta और RAD के लिए कुछ फ्रेमवर्क की कोशिश की, लेकिन फिर भी मैं फ्रेमवर्क से पहले की तरह तेज महसूस नहीं कर रहा था।

हुआ कि मैंने अपना स्वयं का ढांचा विकसित किया (यह स्वाभाविक रूप से, बिल्कुल नहीं था कि मैं किसी दिन उठा और कहा "मैं एक नया ढांचा बनाने जा रहा हूं", समय के साथ हुआ)। मुझे पता है कि यह एक बुरा बुरा अभ्यास और "पहिया सुदृढीकरण" चाल है, लेकिन, मैं अब अपनी परियोजनाओं को बहुत तेजी से विकसित करता हूं (केवल PHP से अधिक)।

चूंकि यह कोड कुल मेस है, मैंने अपने ढांचे में सुधार के लिए लगभग एक महीने पहले शुरू किया था, अब यह संगीतकार का उपयोग करता है, जो सामान्य नियमों का पालन करता है जो कि php चौखटे के बीच मौजूद है, एमवीसी है।

मैं क्यों सुधार कर रहा हूं? क्योंकि अगर किसी को मेरा एक परियोजना की मरम्मत की जरूरत है तो यह एक दूसरी दुनिया की बात नहीं होगी।

इसलिए मैं आपको समझता हूं।

मेरी सलाह है, अपने उपकरणों को तैयार करें (इसे एक रूपरेखा, एक प्रीसेट-ऐप या जो भी लोग इसे नाम देते हैं), और इसे जिस तरह से आप बेहतर महसूस करते हैं, उसका उपयोग करें, लेकिन फिर भी कुछ सामान्य नियमों का पालन करें (जैसे एमवीसी, "आसान से मॉड्यूल" चीजें तुम टूट के मामले में बदल सकते हैं।


1

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

 $_GET->text("inputvar") or $_POST->name["field"]

यह इनलाइन $ _REQUEST-> sql () से बचने की भी अनुमति देता है। लेकिन डेटाबेस के काम के लिए पैरामीटराइज्ड SQL या अपनी DAL / ORM पसंद का उपयोग करते रहें।


यह निश्चित रूप से एक चतुर समाधान है, लेकिन मुझे यकीन नहीं है कि आपको क्यों लगता है कि फ़िल्टर एपीआई बोझिल है। अगर कुछ भी, मुझे लगता है कि filter_input_array () उत्कृष्ट है। (मुख्यतः क्योंकि यह किसी दिए गए अनुरोध प्रकार के लिए सभी इनपुटों को एक स्थान पर एक उचित ढंग से परिभाषित करने के लिए सरल बनाता है। कभी भी उस तरह के लाभ को कम न
समझें

@ssokolow: वास्तव में, filter_input_array () एक झपट्टा में करने के लिए निफ्टी है। हालाँकि फ़िल्टर_ * फ़ंक्शंस में पहले से ही बहुत अधिक लचीलापन है, और बहुत सारे पैरामीटर इसे सूट नहीं करते हैं। इसलिए मुझे लगता है कि लोग इसे बढ़ा रहे हैं (भले ही यह तकनीकी रूप से एक अच्छा समाधान है)।
mario

शायद। मुझे लगता है कि समस्या का एक हिस्सा यह है कि हाल ही में एक ऐसी दुनिया में आने के अलावा, जहां बहुत सारे लोग अभी भी अपनी अलमारियों पर PHP4 किताबें रखते हैं, यह अंडर-विज्ञापित है, आधिकारिक डॉक्स पर्याप्त रूप से स्पष्ट नहीं हैं, और W3Schools डॉक्स जो Google के शीर्ष परिणाम साझा करने के लिए पर्याप्त व्यापक नहीं हैं।
ssokolow

1

मैंने ToroPHP का एक दिन का अध्ययन किया और इसे काफी अच्छा पाया। यह न्यूनतम अनुप्रयोगों के लिए लक्षित एक न्यूनतम रूपरेखा है। यह किसी भी ढांचे के ब्लोट से निपटने के बिना, सर्वर साइड कोड मॉड्यूलर रखना संभव बनाता है।


1

मुझे नहीं पता कि आपको क्या परेशान कर रहा है, लेकिन कोडिनाइटर एक महान ढांचा है। इसके पास अच्छे दस्तावेज हैं और चूंकि बहुत से लोग कोडिग्नेटर का उपयोग करते हैं, इसलिए आपको इसके प्रलेखन, या मंच या स्टैकओवरफ़्लो पर सभी मदद मिलेगी। मैंने कई रूपरेखाओं पर काम किया है ( Codeigniter, CakePHP, Zend, Spring 3.0, रूबी ऑन रेल्स), लेकिन मुझे कहना होगा कि codeigniter के पास बेहतरीन डाक्यूमेंटेशन हैं। कोडिजर में बहुत सारी चीजें हैं जो अपने आप हैंडल हो जाती हैं और आपको सुरक्षा की चिंता करने की जरूरत नहीं है। कोर PHP पर काम करना पहिये का फिर से आविष्कार करने जैसा है। वैसे सबसे महत्वपूर्ण बात यह है कि एक कोर से फ्रेमवर्क में जाने के लिए आपके द्वारा उपयोग किए जाने के बाद आपके बहुत सारे प्रयासों की आवश्यकता होगी, आप इसे प्यार करने लगेंगे। रेल्स पर रूबी भी एक महान ढांचा है, जब आप इसकी ins और बहिष्कार को जान सकते हैं दोहरी गति है।


2
इसे पोस्ट किए हुए अभी दो साल से ज्यादा का समय हो चुका है और मैंने वास्तव में थोड़ी देर के लिए शुद्ध PHP के साथ काम किया है, लेकिन जब से PHP में वापस संक्रमण हुआ है - आप बिल्कुल सही हैं, इसका उपयोग करना अविश्वसनीय रूप से आसान है। मेरा वर्तमान पसंदीदा सेटअप CI है, डेटाबेस के लिए phpActiveRecord और templating के लिए टहनी।
एलेक्स सी

हाँ, phpActiveRecord अच्छा लग रहा है। क्या आपने कभी लारवेल की कोशिश की है? ( laravel.com ) मुझे लगता है कि आप पाएंगे कि यह सीआई, phpActiveRecord और टहनी का सबसे अच्छा डिफ़ॉल्ट रूप से बनाया गया है। मैं खुद एक CakePHP डेवलपर रहा हूं, लेकिन उत्सुकता से लारवेल को देख रहा हूं।
साइमन ईस्ट
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.