कम्प्युटर, फाइल प्रकार
PHP: सर्भर फाइल अपलोड
PHP मार्फत फाइलहरू डाउनलोड - धेरै रोचक मामला, जो धेरै ध्यान दिएर नजिक हुनुपर्छ गर्न। इन्टरनेटमा तपाईं फाइल अपलोड को कार्यान्वयन को धेरै उदाहरण पाउन सक्नुहुन्छ, तर ती सबै राम्रो हो र सुरक्षा नियमहरु पूरा।
यस्तो कुरा यो एक लामो समय लाग्छ पनि भने, एक निष्कर्षमा गर्न ल्याउन आवश्यक छ। तपाईं कोड मा एक अंतर छोड्नु भयो भने, त्यसपछि आफ्नो सम्पूर्ण सर्भर सम्झौता गर्न सकिन्छ।
सुरक्षा
PHP संग फाइल अपलोड सर्भर एकदम सजिलै बाहिर छ गर्न। कोड धेरै छोटो र सरल छ। रेखा को बस एक जोडी। तर, यो विधि खतरनाक छ। धेरै समय र टाढा सुरक्षा गर्न कोड को लाइनहरु।
खतरा तपाईं निरीक्षण गर्न छैन भने, कुनै पनि आक्रमणकारीले आफ्नो सर्भर मा आफ्नो लिपि अपलोड सक्छ, छ। यस मामला मा, यो पूर्ण पहुँच हुनेछ। उहाँले जे उहाँले चाहन्छ गर्न सक्छन्:
- डाटाबेस मेटाउन;
- फाइलहरू साइटहरु मेटाउन;
- फाइलहरू साइटहरु परिमार्जन;
- आफ्नो वेबसाइटमा आफ्नो विज्ञापन थप्न;
- भाइरस डाउनलोड;
- आफ्नो साइटमा सबै प्रयोगकर्ताहरू पुनर्निर्देशित;
- र आउन धेरै थोक आक्रमणकारीले आपत्ति गर्न।
तपाईं सधैं प्रयोगकर्ता लागि फाइल डाउनलोड गर्न प्रयास गर्ने जाँच गर्नुपर्छ। उदाहरणका लागि, तपाईं मात्र तस्बिरहरू अपलोड भने, यो आवश्यक फाइल छवि सही हो भनेर प्रमाणित गर्न छ। अन्यथा, तपाईं केहि डाउनलोड गर्नेछ।
प्रमाणिकरण कसरी लागू गर्न ठीक, यो, फाइल अपलोड गर्न प्रत्यक्ष परीक्षा लिपि संग देखाइनेछ।
एक PHP फारम सिर्जना
फाइल अपलोड फारम धेरै सरल छ। को ब्राउज बटन र अपलोड बटन छुटेको छ।
किनभने यो सजिलो छ कसरी, प्रकारका गर्दैनन् सिर्जना गर्न वर्णन गर्दछ। थप निर्देशन तपाईं पहिले नै HTML को आधारभूत अवधारणाहरु (अन्यथा तपाईं जानकारी खोज्दै छैन हुन PHP मा डाउनलोड गर्ने बारेमा) छ कि मान।
तर फारम मा डाटा तपाईं enctype विशेषता थप्न आवश्यक याद गर्नुहोस्।
अन्यथा, फाइल सञ्चालनकर्ता मा डाटा स्थानान्तर गरिनेछ।
यसले कसरी काम गर्नुपर्छ?
कि पछि यो जहाँ फाइल स्थित एक बाटो प्राप्त गर्न आवश्यक हुनेछ।
यदि बाटो देखिदैन, कार्य फेरि प्रदर्शन।
डाउनलोड फाइल सञ्चालनकर्ता क्लिक पछि कुनै पनि जानकारी दिन सक्छ।
उदाहरणका लागि, तपाईं फाइल "यति र यति" नाम सफलतापूर्वक "यस्तो र यस्तो" फोल्डरमा अपलोड गरिएको छ हो भनेर भन्छ कि लाइन लेख्न सक्छ। निस्सन्देह, फाइल नाम सधैं फरक दिइनेछ।
सामान्यतया, यो जानकारी डिबग कोड प्रयोग गरिन्छ। यसरी यो डाटा प्रसारित र यस्तो लेख्छ इच्छित निर्देशिका उत्पन्न भएको छ भन्ने प्रमाणित गर्न सम्भव छ। त्यो पनि फाइल नाम संकेत छैन छ। यो अतिरिक्त जानकारी देखि प्रयोगकर्ता आवश्यकता छैन कि।
यो प्रयोगकर्ता धेरै फाइलहरू डाउनलोड भने मात्र नाम उत्पादन गर्न अर्थमा बनाउँछ। यस्तो, एक सानो थप विचार मामला छ। का आफूलाई अगाडि प्राप्त गरौं।
समायोजन
सर्भर PHP फाइल अपलोड मा php.ini फाइलमा गर्नुपर्छ जो केही सेटिङहरू, आवश्यक छ। यो फाइल सेटिङ धेरै छन्। तिनीहरू सबै हामी आवश्यक छैन। file_uploads, upload_tmp_dir र upload_max_filesize: हामी तीन रेखाहरूको रुचि राख्नुहुन्छ।
कृपया याद गर्नुहोस् कि यी सेटिङहरू कुनै एक होइन, सर्भर मा आफ्नो साइटहरु को सबै असर गर्नेछ। त्यसैले, तपाईं प्रयोगकर्ता लोड गर्न हुनेछ भन्ने तथ्यलाई आधारित अधिकतम आकार सेट गर्न। यो धेरै ठूलो सेट गर्न सिफारिस गरिएको छैन।
एक पटक तपाईंले यी मापदण्डहरू मा मान परिवर्तन, तपाईं सर्भर पुन: सुरु गर्न आवश्यक छ। अन्यथा सेटिङ तिनीहरूले सर्भर लोड को समयमा पढ्न रूपमा, प्रभाव पार्ने छैन।
तपाईं सर्भर SSH मार्फत जडान गरेर कन्सोल गर्न सक्नुहुन्छ। बस आदेश सेवा httpd पुन: सुरु गर्नुहोस्, र त्यसपछि सेटिङ प्रभाव गर्नेछ।
अर्को विधि - ISP-प्यानल मार्फत वा बिलिङ प्यानल प्रदायक मार्फत रिस्टार्ट।
एरे फाइल
PHP मा फाइल अपलोड एरे $ _FILES गरेको छ। यो कि हामी डाउनलोड फाइलहरू बारेमा सबै जानकारी छ।
सरणी, निम्न फाइल सञ्चालनकर्ता मा लेख्न पर्याप्त के जानकारी समावेश गरिएको छ हेर्नका लागि।
कुनै पनि फाइल चयन गर्नुहोस् र क्लिक गर्नुहोस् "अपलोड गर्नुहोस्।" को सञ्चालनकर्ता पृष्ठमा $ _FILES भण्डारण गरिएको छ कि जानकारी प्रदर्शन गर्नेछ। चर राजधानी पत्र संग सम्पूर्ण लेखिएको छ। PHP - एक भाषा-संवेदनशील।
तपाईं देख्न सक्नुहुन्छ, यो एरे मा क्षेत्रहरू धेरै छन्। ती सबै हाम्रो लागि महत्त्वपूर्ण छन्। पहिलो क्षेत्र यसलाई आफ्नो कम्प्युटरमा प्रयोग गरिन्छ जो फारममा फाइल नाम समावेश छन्।
प्रकार स्तम्भ फाइल प्रकार निर्दिष्ट। Tmp_name क्षेत्र अस्थायी फाइल नाम पारस्परिक रहेको छ। लिपि को अन्त पछि मेटिने छ।
त्रुटि क्षेत्र त्रुटि कोड समावेश गर्दछ। यो एक सानो थप थियो। आकार - बाइट आकार।
त्रुटिहरू
को PHP फाइल अपलोड मार्फत बाहिर सधैं त्रुटि कोड सँगसँगै छ। त्रुटि सन्देश "त्रुटि" मा प्रवेश। स्क्रिनसट त्रुटि शून्य छ।
सबै त्रुटिहरू को मूल्य विचार गर्नुहोस्:
यहाँ अपलोड गरिएको फाइल को राशि को सीमा संकेत जो फाइल डाउनलोड गर्न एक नमूना रुप हो।
PHP: फाइल अपलोड लिपि
सबै व्यवहार मा बाहिर रूपमा? PHP मा फाइल अपलोड आदेश प्रतिलिपि हुन्छ। स्रोत फाइल र गन्तव्य फाइल - तपाईं एक फाइल डाउनलोड गर्न कसरी प्रश्न रुचि राख्नुहुन्छ भने, जवाफ जो दुई प्यारामिटर प्रयोग सरल copy- छ।
तर, माथि भन्यो, यो सुरक्षा कारण सीमित हुन सक्दैन। उदाहरणका लागि, फाइल कस्तो हामी जहाज, तपाईं एरे $ _FILES मा क्षेत्र प्रकार प्रयोग गर्न सक्नुहुन्छ जाँच गर्नुहोस्। पहिलो, गरेको निरीक्षण सामना, र त्यसपछि पूर्ण लिपि मा सार्न गरौं
तपाईँलाई प्रयोगकर्ता मात्र GIF, JPEG वा PNG को एक संकल्प संग फोटो अपलोड गर्न अनुमति दिन चाहनुहुन्छ भन्न गरौं। संकेत यो जस्तै हुन सक्छ।
यदि ($ _ FILES [ 'file_upload'] [ 'प्रकार']! = "छवि / GIF") {
"माफ गर्नुहोस्, हामी मात्र डाउनलोड समर्थन gif-फाइलहरू" झल्काउँछ;
बाहिर निस्कन;
}
तपाईं सबै 3 प्रकार जहाज गर्न चाहनुहुन्छ भने, बस छवि को अन्य प्रकार गर्न थप अवस्था थप गर्नुहोस्।
प्रतिलिपि (तस्बिर 1, छवि 2): प्रतिलिपि गर्ने जस्तै यस गरेको छ।
हाम्रो मामला मा, काम सर्भर पीसी देखि डाउनलोड गर्दा, तपाईं त्यसो गर्न सक्नुहुन्छ
प्रतिलिपि ($ _ FILES [ 'file_upload'] [ "tmp_name"], "1.jpg")
कि, फाइल नाम 1.jpg संग प्रतिलिपि गरिनेछ छ। यो सम्पूर्ण सही छैन। यस मामला मा, यो केवल एउटा उदाहरण हो। फाइल नाम सधैं आवश्यक विभिन्न फाइल आधारमा विस्तार निर्दिष्ट गर्न, र निर्दिष्ट छ।
विस्तार विभिन्न तरिकामा हुन सक्छ निर्धारण। यो सबै erudition विकासकर्ता मा निर्भर गर्दछ। (सेकेन्ड दहाई को फरक) विस्तार निर्धारण गर्न सबैभन्दा छिटो तरिका को एक - यो अर्को कोड हो।
$ Path_info = pathinfo ($ _ FILES [ 'photo1'] [ "नाम"]);
$ Ext = $ path_info [ 'विस्तार'];
चर $ को ext हामी इच्छित विस्तार भण्डारण हुनेछ। फाइल नाम अनियमित MD5 प्रयोग मा सेट गर्न सकिन्छ। तपाईं फाइलहरू धेरै डाउनलोड गर्न योजना भने, यो फरक फोल्डरहरू तिनीहरूलाई जहाज राम्रो छ। त्यसैले यसलाई थप सुविधाजनक हुनेछ। विशेष, तपाईंले हटाउन चाहनुहुन्छ भने।
कोड निम्नानुसार हुनेछ डाउनलोड गर्न।
/// फोटो संग
यदि ($ _FILES [ 'photo1'] [ 'tmp_name'] == शून्य)
{
प्रतिध्वनि ( "
अज्ञात फाइल। strong> p> फिर्ता ... p> "); बाहिर निस्कन; } ///। सर्भर मा कुनै पनि परियोजना लागि भन्न ठूलो फाइलहरू (भिडियो) लोड गर्न अनुमति दिएको छ, तर त्यहाँ मात्र तस्वीर हो, र प्रयोगकर्ता सीमित गर्न आवश्यक यदि (($ _FILES [ "photo1"] [ "आकार"]> 1024 * 1024 * 2) { ?> अधिकतम अनुमति आकार 2 एमबी strong> फिर्ता ... p> बाहिर निस्कन; } फोल्डरहरू सिर्जना // // हालको महिनाको एक फोल्डर सिर्जना यदि (! file_exists ( "img /"। मिति ( "एम"))) { mkdir ( "img /" मिति ( "एम")।); } // हालको दिन एक फोल्डर सिर्जना यदि (! file_exists ( "img /"। मिति ( "एम")। "/"। मिति ( "घ"))) { mkdir ( "img /" मिति ( "एम") "/" मिति ( "घ") ...); } /// फाइल विस्तार $ Path_info = pathinfo ($ _ FILES [ 'photo1'] [ "नाम"]); $ Ext = $ path_info [ 'विस्तार']; फाइलनाम उत्पन्न /// $ Id = MD5 (मिति ( "YMd")); यदि (प्रतिलिपि ($ _ FILES [ 'photo1'] [ "tmp_name"], "img /"। मिति ( "एम")। "/"। मिति ( "घ")। "/"। $ आईडी। $ ext) ) { प्रतिध्वनि ( "सफलतापूर्वक फाइल अपलोड"); } /// कुनै पनि थप कार्य (डाटाबेस मा प्रवेश, र यति मा। एन) } धेरै फाइलहरू (PHP) अपलोड फारम थप क्षेत्रहरू को माध्यम द्वारा हुन्छ। यसलाई डाउनलोड गर्न फाइलहरू संख्या सीमित रूपमा यो विधि छैन धेरै राम्रो छ। यसबाहेक, यो कार्यक्रम मा खराब फारम मानिन्छ। गतिशील सबै गर्न प्रयास गर्नुहोस्। आदर्श विकल्प - यो एक बटन थिचेर एक पटकमा फाइलहरू को एक ठूलो संख्या को एक विकल्प छ। यो गर्न, यो कोड जस्तै आकृति सिर्जना गर्नुहोस्। <फारम विधि = "पोस्ट" कार्य = "लिंक सञ्चालनकर्ता फाइल" नाम = "upload_form" enctype = "multipart / फारम-डाटा"> <इनपुट वर्ग = "form_upload" प्रकार = "फाइल" नाम = "file1 []" धेरै मूल्य = "अवलोकन"> <इनपुट वर्ग = "form_upload" प्रकार नाम = "upldFile" मूल्य = "थप्नुहोस्" / = "पेश"> P> फारम> शब्द को धेरै वाहेक भनेर याद, र नाम एरे [] रूपमा दिइएको छ। यस मामला मा $ _FILES एरे, अलि फरक हुनेछ। तपाईं श्रेणीको एरे प्राप्त हुनेछ। परीक्षण गर्न फेरि var_dump ($ _ फाइलहरू) प्रयोग गर्न सक्नुहुन्छ; आफ्नो सबै फाइलहरू यो जस्तै एरे राखिनेछ: कोष्ठकमा एर्रेमा फाइल नम्बर लेखिएको छ। शून्य देखि गणना। हामी सिर्फ चक्र सोध्न र सूचकांक थप्दा [$ म] अन्तमा माथि-वर्णन कोड सम्पर्क गरेर, एउटै तरिकामा व्यवहार। $ म = 0; जबकि ($ _FILES [ "file1"] [ "नाम"] [$ म] <> '') { /// माथिको कोड पेस्ट } यसरी, तपाईंले फाइलहरू एक स्थिर नम्बर (अन्तिम फोटो) संग संस्करण प्रयोग यदि मामला सामान्यतया छ रूपमा, कोड को अनावश्यक पुनरावृत्ति बिना एक चक्र मा सर्भर एक PHP फाइल अपलोड मार्फत हुन हुनेछ। धेरै फाइलहरू
Similar articles
Trending Now