កុំព្យូទ័រ, ប្រភេទឯកសារ
ផ្ទុកឡើងឯកសារទៅម៉ាស៊ីនបម្រើ: កម្មវិធី PHP
ទាញយកឯកសារតាមរយៈកម្មវិធី PHP - គួរឱ្យចាប់អារម្មណ៍ខ្លាំងណាស់ដែលជាករណី, ដែលត្រូវតែត្រូវបានទៅជិតខ្លាំងណាស់ដោយប្រុងប្រយ័ត្ន។ នៅលើអ៊ីនធឺណិតអ្នកអាចរកឃើញឧទាហរណ៍ជាច្រើននៃការអនុវត្តន៍ផ្ទុកឡើងឯកសារប៉ុន្តែមិនមែនទាំងអស់នៃពួកគេគឺល្អនិងជួបប្បញ្ញត្តិសុវត្ថិភាព។
រឿងបែបនេះត្រូវនាំយកមកដល់ការសន្និដ្ឋានមួយ, បើទោះបីជាវាត្រូវការពេលវេលាយូរ។ ប្រសិនបើអ្នកទុកគម្លាតមួយនៅក្នុងកូដនេះបន្ទាប់មកម៉ាស៊ីនបម្រើរបស់អ្នកទាំងមូលអាចនឹងត្រូវបានសម្របសម្រួល។
សុវត្ថិភាព
ជាមួយនឹង PHP ឯកសារដែលបានផ្ទុកឡើង ទៅម៉ាស៊ីនបម្រើត្រូវបានអនុវត្តបានយ៉ាងងាយស្រួល។ លេខកូដនេះគឺមានរយៈពេលខ្លីនិងសាមញ្ញ។ គ្រាន់តែពីរបន្ទាត់។ ទោះជាយ៉ាងណាវិធីសាស្រ្តនេះគឺមានះថាក់។ ពេលវេលានិងបន្ទាត់នៃកូដឆ្ងាយដើម្បីសុវត្ថិភាពជាច្រើនទៀត។
គ្រោះថ្នាក់នេះគឺថាប្រសិនបើអ្នកមិនបានធ្វើការត្រួតពិនិត្យមិន, អ្នកវាយប្រហារណាមួយអាចផ្ទុកឡើងស្គ្រីបរបស់ពួកគេនៅលើម៉ាស៊ីនបម្រើរបស់អ្នក។ ក្នុងករណីនេះវានឹងមានសិទ្ធិចូលដំណើរការពេញលេញ។ គាត់អាចធ្វើអ្វីដែលគាត់ចង់បាន:
- លុបមូលដ្ឋានទិន្នន័យ;
- លុបគេហទំព័រឯកសារ
- កែប្រែគេហទំព័រឯកសារ
- បន្ថែមការផ្សព្វផ្សាយពាណិជ្ជកម្មរបស់អ្នកទៅកាន់គេហទំព័ររបស់អ្នក;
- ទាញយកមេរោគ;
- ប្តូរទិសអ្នកប្រើទាំងអស់នៅលើតំបន់បណ្ដាញរបស់ពួកគេ;
- និងអ្វីផ្សេងទៀតជាច្រើនដែលបានចូលមកក្នុងគំនិតអ្នកវាយប្រហារ។
អ្នកគួរតែពិនិត្យមើលថាការព្យាយាមដើម្បីទាញយកឯកសារសម្រាប់អ្នកប្រើ។ ឧទាហរណ៍ប្រសិនបើអ្នកបានផ្ទុកឡើងរូបភាពតែវាគឺជាការចាំបាច់ដើម្បីផ្ទៀងផ្ទាត់ថាឯកសារនេះគឺជារូបភាពមួយដែលត្រឹមត្រូវ។ បើមិនដូច្នេះទេអ្នកនឹងទាញយកអ្វីទាំងអស់។
ច្បាស់អំពីរបៀបដើម្បីអនុវត្តការផ្ទៀងផ្ទាត់វានឹងត្រូវបានបង្ហាញដែលមានស្គ្រីបការប្រឡងនេះដោយផ្ទាល់ដើម្បីផ្ទុកឯកសារឡើង។
បង្កើតសំណុំបែបបទមួយ PHP
សំណុំបែបបទដែលបានផ្ទុកឡើងឯកសារគឺសាមញ្ញណាស់។ បាត់ខ្លួនប៊ូតុងប៊ូតុងរកមើលនិងផ្ទុកឡើង។
រៀបរាប់អំពីរបៀបបង្កើតទម្រង់នឹងមិន, ដោយសារតែវាជាការងាយស្រួល។ សេចក្ដីណែនាំបន្ថែមទៀតសន្មតថាអ្នកមានរួចទៅហើយគោលគំនិតមូលដ្ឋាននៃ HTML (បើមិនដូច្នេះទេអ្នកនឹងមិនត្រូវបានកំពុងតែស្វែងរកពអំពីការទាញយកលើកម្មវិធី PHP) ។
ប៉ុន្តែចំណាំថាទិន្នន័យនៅក្នុងសំណុំបែបបទដែលអ្នកត្រូវការដើម្បីបន្ថែមគុណលក្ខណៈ enctype នេះ។
បើមិនដូច្នោះទេទិន្នន័យនៅលើកម្មវិធីដោះស្រាយឯកសារនឹងមិនត្រូវបានបញ្ជូន។
របៀបដែលវាគួរធ្វើការ?
បន្ទាប់ពីនោះវានឹងត្រូវបានទាមទារដើម្បីទទួលបានផ្លូវដែលជាកន្លែងដែលឯកសារត្រូវបានតាំងនៅ។
ប្រសិនបើផ្លូវមិនលេចឡើងអនុវត្តសកម្មភាពនេះជាថ្មីម្តងទៀត។
បន្ទាប់ពីចុចលើកម្មវិធីដោះស្រាយឯកសារទាញយកអាចផ្តល់ពណាមួយ។
ឧទាហរណ៍អ្នកអាចសរសេរបន្ទាត់ដែលបានបញ្ជាក់ថាឯកសារនេះគឺ "ដូច្នេះហើយដូច្នេះ" ឈ្មោះនេះត្រូវបានផ្ទុកឡើងដោយជោគជ័យទៅថត "បែបនេះ" នេះ។ ជាការពិតណាស់ឈ្មោះឯកសារនឹងត្រូវបានផ្ដល់តែងតែខុសគ្នា។
ជាធម្មតាព័តមាននេះត្រូវបានប្រើដើម្បីបំបាត់កំហុសកូដ។ ដូច្នេះវាគឺអាចធ្វើបានដើម្បីផ្ទៀងផ្ទាត់ថាទិន្នន័យនេះត្រូវបានបញ្ជូននិងសរសេរបានកើតមានឡើងនៅក្នុងថតដែលអ្នកចង់បាន។ ដែលត្រូវ, សូម្បីតែឈ្មោះឯកសារមិនត្រូវបានចង្អុលបង្ហាញ។ ចាប់តាំងពីការពនេះថាអ្នកប្រើបន្ថែមនេះមិនត្រូវការ។
វាធ្វើឱ្យយល់ទៅការបញ្ចេញឈ្មោះតែប្រសិនបើអ្នកប្រើទាញយកឯកសារច្រើន។ ដូចជាករណី, ពិចារណាបន្ថែមទៀតបន្តិច។ សូមឱ្យយើងមិនទទួលបានការនាំមុខនៃខ្លួនយើង។
ការលៃតម្រូវ
ក្នុងការផ្ទុកឡើងឯកសារទៅម៉ាស៊ីនបម្រើ PHP ដែលតម្រូវឱ្យមានការកំណត់មួយចំនួនដែលគួរតែត្រូវបានធ្វើរួចនៅក្នុងឯកសារ php.ini នេះ។ ឯកសារនេះមានច្រើននៃការកំណត់មួយ។ ពួកគេទាំងអស់យើងមិនត្រូវការ។ យើងមានការចាប់អារម្មណ៍នៅក្នុងបីបន្ទាត់: ស្ដីអំពី upload_tmp_dir, និង upload_max_filesize ។
សូមចំណាំថាការកំណត់ទាំងនេះនឹងប៉ះពាល់ដល់ទាំងអស់នៃតំបន់បណ្ដាញរបស់អ្នកនៅលើម៉ាស៊ីនបម្រើនេះមិនមែនគ្រាន់តែនរណាម្នាក់។ ដូច្នេះដើម្បីកំណត់ទំហំអតិបរមាដោយផ្អែកលើការពិតដែលថាអ្នកនឹងត្រូវផ្ទុកអ្នកប្រើ។ វាមិនត្រូវបានផ្ដល់អនុសាសន៍ដើម្បីកំណត់ទំហំធំពេក។
នៅពេលដែលអ្នកផ្លាស់ប្តូរតម្លៃនៅក្នុងប៉ារ៉ាម៉ែត្រទាំងនេះដែលអ្នកត្រូវការដើម្បីចាប់ផ្ដើមម៉ាស៊ីនបម្រើ។ បើមិនដូច្នោះទេការកំណត់នេះនឹងមិនមានប្រសិទ្ធិភាពដូចដែលពួកគេបានអាននៅពេលវេលានៃការផ្ទុកម៉ាស៊ីនបម្រើ។
អ្នកអាចធ្វើដូចនេះនៅក្នុងកុងសូលដោយភ្ជាប់តាមរយៈ SSH ទៅម៉ាស៊ីនបម្រើ។ គ្រាន់តែបញ្ចូលពាក្យបញ្ជាសេវាចាប់ផ្ដើមឡើងវិញ httpd, ហើយបន្ទាប់មកកំណត់នឹងមានប្រសិទ្ធិភាព។
វិធីសាស្រ្តមួយផ្សេងទៀត - ចាប់ផ្ដើមឡើងវិញតាមរយៈ ISP ឬតាមរយៈបន្ទះបន្ទះវិក័យប័ត្រជាអ្នកផ្តល់សេវា។
ឯកសារអារេ
ក្នុង PHP ឯកសារផ្ទុកឡើងត្រូវបានធ្វើដោយអារេ $ _FILES នេះ។ វាមានព័តមានទាំងអស់អំពីឯកសារដែលយើងបានទាញយក។
ដើម្បីមើលឃើញនូវអ្វីដែលពមាននៅក្នុងអារេដែលបានគ្រប់គ្រាន់ដើម្បីសរសេរនៅក្នុងកម្មវិធីដោះស្រាយឯកសារដូចខាងក្រោម។
ជ្រើសឯកសារណាមួយនិងចុចលើ "ផ្ទុកឡើង" ។ នៅលើទំព័រកម្មវិធីដោះស្រាយការនេះនឹងបង្ហាញពដែលត្រូវបានរក្សាទុកក្នុង $ _FILES នេះ។ អថេរនេះត្រូវបានសរសេរឡើងទាំងស្រុងដោយអក្សរធំ។ កម្មវិធី PHP - ភាសារសើបមួយ។
ដូចដែលអ្នកអាចឃើញនៅក្នុងអារេនេះមានច្រើននៃវាលមួយ។ ទាំងអស់នៃពួកគេគឺមានសារៈសំខាន់ចំពោះយើង។ វាលដំបូងមានឈ្មោះឯកសារនៅក្នុងសំណុំបែបបទដែលវាត្រូវបានគេប្រើនៅលើកុំព្យូទ័ររបស់អ្នក។
ជួរឈរប្រភេទដែលបានបញ្ជាក់ប្រភេទឯកសារ។ វាល Tmp_name ត្រូវគ្នាទៅនឹងឈ្មោះនៃឯកសារបណ្តោះអាសន្ននេះ។ បន្ទាប់ពីការបញ្ចប់នៃស្គ្រីបនេះនឹងត្រូវបានលុប។
វាលកំហុសនេះមានកូដកំហុស។ នេះជាការតិចតួចបន្ថែមទៀត។ ទំហំ - ទំហំគិតជាបៃនេះ។
កំហុស
អនុវត្តតាមរយៈឯកសារផ្ទុកឡើងរបស់ PHP តែងតែត្រូវបានអមដោយលេខកូដកំហុស។ សារកំហុសមួយបានចូលទៅក្នុង "កំហុស" ។ កំហុសរូបថតអេក្រង់នេះគឺសូន្យ។
សូមពិចារណាតម្លៃនៃកំហុសទាំងអស់នេះ:
ខាងក្រោមនេះគឺជាទម្រង់គំរូមួយក្នុងការទាញយកឯកសារដែលបង្ហាញអំពីដែនកំណត់នៃចំនួនទឹកប្រាក់នៃការផ្ទុកឯកសារឡើងនេះ។
ស្គ្រីបផ្ទុកឡើងឯកសារ: កម្មវិធី PHP
ក្នុងនាមជាអ្នកអនុវត្តទាំងអស់ចេញនៅក្នុងការអនុវត្ត? ក្នុង PHP ឯកសារផ្ទុកឡើងកើតឡើងជាពាក្យបញ្ជាច្បាប់ចម្លង។ ប្រសិនបើអ្នកមានចំណាប់អារម្មណ៍នៅក្នុងសំណួរអំពីរបៀបនៃការទាញយកឯកសារនេះចម្លើយគឺសាមញ្ញ copy- ដែលប្រើប៉ារ៉ាម៉ែត្រពីរ - ឯកសារប្រភពនិងឯកសារទិសដៅ។
ប៉ុន្តែដូចមានចែងខាងលើនេះ, វាមិនអាចត្រូវបានកំណត់សម្រាប់ហេតុផលសុវត្ថិភាព។ ឧទាហរណ៍ពិនិត្យមើលនូវអ្វីដែលជាប្រភេទនៃឯកសារដែលយើងបានបញ្ជូនអ្នកអាចប្រើប្រភេទវាលដែលនៅក្នុងអារេ $ _FILES នេះ។ ជាដំបូងចូរស្រាយជាមួយនឹងការត្រួតពិនិត្យនិងបន្ទាប់មកផ្លាស់ទីទៅស្គ្រីបពេញលេញ
ចូរនិយាយថាអ្នកចង់បានដើម្បីអនុញ្ញាតឱ្យអ្នកប្រើផ្ទុកឡើងរូបថតជាមួយ resolution បង្ហាញរូបភាពតែ GIF, JPEG ឬ PNG មួយ។ បង្ហាញថាវាអាចមានដូចនេះ។
ប្រសិនបើការ ($ _ ឯកសារ [ 'file_uploads'] [ 'ប្រភេទ']! = "image / gif") {
សូមបន្លឺ "សូមអភ័យទោស, យើងគាំទ្រការទាញយកឯកសារតែ Gif-";
ការចាកចេញ;
}
ប្រសិនបើអ្នកចង់នាំចេញទាំងអស់ 3 ប្រភេទ, គ្រាន់តែបន្ថែមលក្ខខណ្ឌបន្ថែមទៀតដើម្បីប្រភេទផ្សេងទៀតនៃរូបភាព។
ការចម្លងត្រូវបានធ្វើដូចនេះ: ច្បាប់ចម្លង (រូបភាពទី 1 រូបភាពទី 2) ។
ក្នុងករណីរបស់យើង, នៅពេលដែលការងារនេះត្រូវបានទាញយកពីទៅម៉ាស៊ីនបម្រើកុំព្យូទ័រ, អ្នកអាចធ្វើដូច្នេះបាន
ច្បាប់ចម្លង ($ _ ឯកសារ [ 'file_uploads'] [ "tmp_name"], "1.jpg")
នោះគឺជា, ឯកសារនឹងត្រូវបានចម្លងដោយមាន 1.jpg ឈ្មោះ។ នេះគឺជាការមិនត្រឹមត្រូវទាំងស្រុង។ ក្នុងករណីនេះវាគឺគ្រាន់តែជាឧទាហរណ៍មួយ។ ឈ្មោះឯកសារគឺតែងតែមានការចាំបាច់ដើម្បីបញ្ជាក់ភាពខុសគ្នានិងការបញ្ជាក់ផ្នែកបន្ថែមអាស្រ័យលើឯកសារ។
កំណត់ផ្នែកបន្ថែមដែលអាចមានវិធីផ្សេងគ្នា។ វាទាំងអស់គឺអាស្រ័យលើអ្នកអភិវឌ្ឍចំណេះដឹងជ្រៅជ្រះនេះ។ មួយក្នុងចំណោមវិធីលឿនបំផុតដើម្បី (ភាពខុសគ្នានៃភាគដប់នៃវិនាទី) កំណត់ផ្នែកបន្ថែម - នេះគឺជាកូដបន្ទាប់។
$ Path_info = pathinfo ($ _ ឯកសារ [ 'photo1'] [ "ឈ្មោះ"]);
$ ext ការ = $ path_info [ 'ផ្នែកបន្ថែម'];
នេះ $ អថេរ ext ដែលយើងនឹងរក្សាទុកផ្នែកបន្ថែមដែលអ្នកចង់បាន។ ឈ្មោះឯកសារអាចត្រូវបានកំណត់នៅចៃដន្យដោយការប្រើ md5 ។ ប្រសិនបើអ្នកមានគម្រោងក្នុងការទាញយកឯកសារច្រើនវាជាការល្អប្រសើរជាងមុនក្នុងការបញ្ជូនពួកគេទៅថតផ្សេងគ្នា។ ដូច្នេះវានឹងមានភាពងាយស្រួលបន្ថែមទៀត។ ជាពិសេសប្រសិនបើអ្នកចង់លុប។
ដើម្បីទាញយកកូដនឹងត្រូវដូចខាងក្រោមនេះ។
/// ជាមួយនឹងរូបថត
ប្រសិនបើការ ($ _FILES [ 'photo1'] [ 'tmp_name'] == ទទេ)
{
អេកូ ( "
ឯកសារដែលមិនស្គាល់។ strong> p> ត្រឡប់ ... p> "); ការចាកចេញ; } /// ។ និយាយថាអ្នកសម្រាប់គម្រោងណាមួយនៅលើម៉ាស៊ីនបម្រើត្រូវបានអនុញ្ញាតឱ្យផ្ទុកឯកសារទំហំធំ (វីដេអូ) ប៉ុន្តែមានតែរូបភាព, និងអ្នកប្រើត្រូវការកំណត់ ប្រសិនបើការ (($ _FILES [ "photo1"] [ "ទំហំ"]> 1024 * 1024 * 2) { ?> ទំហំអតិបរមាដែលបានអនុញ្ញាតឱ្យ 2 មេកាបៃ strong> ត្រឡប់ ... p> ការចាកចេញ; } // បង្កើតថត // បង្កើតថតនៃខែបច្ចុប្បន្ន ប្រសិនបើការ (! file_exists ( "img /" កាលបរិច្ឆេទ។ ( "M"))) { mkdir ( "img /" កាលបរិច្ឆេទ ( "M") ។ ); } // បង្កើតថតនៃថ្ងៃបច្ចុប្បន្ន ប្រសិនបើការ (! file_exists ( "img /" កាលបរិច្ឆេទ ( "M") ។ "/" ។ កាលបរិច្ឆេទ ( "ឃ"))) ។ { mkdir ( "img /" កាលបរិច្ឆេទ ( "M") "/" កាលបរិច្ឆេទ ( "ឃ") ... ); } /// កន្ទុយឯកសារ $ Path_info = pathinfo ($ _ ឯកសារ [ 'photo1'] [ "ឈ្មោះ"]); $ ext ការ = $ path_info [ 'ផ្នែកបន្ថែម']; /// បង្កើតឈ្មោះឯកសារ $ id = md5 (កាលបរិច្ឆេទ ( "YMD")); ប្រសិនបើការ (ច្បាប់ចម្លង ($ _ ឯកសារ [ 'photo1'] [ "tmp_name"], "img /" ។ កាលបរិច្ឆេទ ( "M") ។ "/" ។ កាលបរិច្ឆេទ ( "ឃ") ។ "/" ។ $ លេខសម្គាល់។ $ ext) ) { អេកូ ( "ឯកសារផ្ទុកឡើងដោយជោគជ័យ"); } /// សកម្មភាពបន្ថែមទៀតណាមួយ (ធាតុនៅក្នុងមូលដ្ឋានទិន្នន័យនិងដូច្នេះនៅលើអិន។ ) } ផ្ទុកឡើងឯកសារច្រើន (PHP) បានកើតឡើងដោយមធ្យោបាយនៃវាលបន្ថែមទៀតនៅក្នុងសំណុំបែបបទ។ វិធីសាស្រ្តនេះគឺជាការមិនល្អណាស់, វាជាការកំណត់ចំនួននៃឯកសារដើម្បីទាញយក។ លើសពីនេះទៅទៀត, វាត្រូវបានចាត់ទុកជាទម្រង់អាក្រក់នៅក្នុងកម្មវិធី។ សូមព្យាយាមដើម្បីធ្វើអ្វីគ្រប់យ៉ាងថាមវន្ត។ ជម្រើសល្អបំផុត - វាគឺជាជម្រើសនៃការមួយចំនួនធំនៃឯកសារនៅពេលតែមួយដោយចុចប៊ូតុងតែមួយ។ ដើម្បីធ្វើដូចនេះបង្កើតរូបរាងដូចកូដនេះ។ <សំណុំបែបបទវិធីសាស្រ្ត = សកម្មភាព "ញៈ" = "តំណទៅឯកសារកម្មវិធីដោះស្រាយ" ឈ្មោះ = "upload_form" enctype = "ច្រើន / សំណុំបែបបទទិន្នន័យ"> <បញ្ចូលថ្នាក់ = "form_upload" ប្រភេទ = "ឯកសារ" ឈ្មោះ = "file1 []" តម្លៃជាច្រើន = "ទិដ្ឋភាពទូទៅ"> <ថ្នាក់បញ្ចូល = "form_upload" ប្រភេទ = "ដាក់ស្នើ" ឈ្មោះ = "upldFile" តម្លៃ = "បន្ថែម" /> p> សំណុំបែបបទ> ចំណាំថាការបន្ថែមជាច្រើននៃពាក្យនិងឈ្មោះត្រូវបានផ្តល់ជាអារេមួយ [] ។ ក្នុងករណីនេះអារេ $ _FILES នឹងមានភាពខុសគ្នាបន្តិច។ អ្នកនឹងទទួលបានអារេនៃអារេមួយ។ ដើម្បីសាកល្បងជាថ្មីម្តងទៀតអាចប្រើ var_dump នេះ ($ _ ឯកសារ); ឯកសាររបស់អ្នកទាំងអស់នឹងត្រូវបានដាក់ក្នុងអារេដូចនេះ: ក្នុងវង់ក្រចកត្រូវបានសរសេរលេខឯកសារក្នុងអារេនេះ។ រាប់ពីសូន្យ។ យើងប្រព្រឹត្ដចំពោះពួកគេនៅក្នុងវិធីដូចគ្នានេះ, គ្រាន់តែសួរវដ្តនិងដោយទាក់ទងកូដខាងលើបានរៀបរាប់នៅចុងបញ្ចប់នៃសន្ទស្សន៍នេះបន្ថែម [$ i] នេះ។ $ i = 0; ខណៈពេល ($ _FILES [ "file1"] [ "ឈ្មោះ"] [$ i] <> '') { /// បិទភ្ជាប់កូដខាងលើនេះ } ដូច្នេះអ្នកនឹងត្រូវកើតឡើងតាមរយៈការផ្ទុកឡើងឯកសារទៅម៉ាស៊ីនបម្រើរបស់ PHP វដ្តមួយក្នុងពាក្យផ្ទួនមិនចាំបាច់នៃការដោយគ្មានលេខកូដនេះជាធម្មតាករណីនេះប្រសិនបើអ្នកប្រើកំណែដោយមានចំនួនឋិតិវន្តឯកសារ (រូបថតចុងក្រោយ) ។ ឯកសារច្រើន
Similar articles
Trending Now