កុំព្យូទ័រប្រភេទឯកសារ

ផ្ទុកឡើងឯកសារទៅម៉ាស៊ីនបម្រើ: កម្មវិធី 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 តែងតែត្រូវបានអមដោយលេខកូដកំហុស។ សារកំហុសមួយបានចូលទៅក្នុង "កំហុស" ។ កំហុសរូបថតអេក្រង់នេះគឺសូន្យ។

សូមពិចារណាតម្លៃនៃកំហុសទាំងអស់នេះ:

វាត្រូវបានគេនិយាយខាងលើប៉ារ៉ាម៉ែត្រដែលអាចប្រហែលជាត្រូវបានបញ្ជាក់នៅក្នុង HTML ធម្មតានេះ។

ខាងក្រោមនេះគឺជាទម្រង់គំរូមួយក្នុងការទាញយកឯកសារដែលបង្ហាញអំពីដែនកំណត់នៃចំនួនទឹកប្រាក់នៃការផ្ទុកឯកសារឡើងនេះ។

ស្គ្រីបផ្ទុកឡើងឯកសារ: កម្មវិធី 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'] == ទទេ)

{

អេកូ ( "

ឯកសារដែលមិនស្គាល់។

ត្រឡប់ ... ");

ការចាកចេញ;

}

/// ។ និយាយថាអ្នកសម្រាប់គម្រោងណាមួយនៅលើម៉ាស៊ីនបម្រើត្រូវបានអនុញ្ញាតឱ្យផ្ទុកឯកសារទំហំធំ (វីដេអូ) ប៉ុន្តែមានតែរូបភាព, និងអ្នកប្រើត្រូវការកំណត់

ប្រសិនបើការ (($ _FILES [ "photo1"] [ "ទំហំ"]> 1024 * 1024 * 2)

{

?>

ទំហំអតិបរមាដែលបានអនុញ្ញាតឱ្យ 2 មេកាបៃ

ត្រឡប់ ...

ការចាកចេញ;

}

// បង្កើតថត

// បង្កើតថតនៃខែបច្ចុប្បន្ន

ប្រសិនបើការ (! 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" តម្លៃ = "បន្ថែម" />

ចំណាំថាការបន្ថែមជាច្រើននៃពាក្យនិងឈ្មោះត្រូវបានផ្តល់ជាអារេមួយ [] ។ ក្នុងករណីនេះអារេ $ _FILES នឹងមានភាពខុសគ្នាបន្តិច។ អ្នកនឹងទទួលបានអារេនៃអារេមួយ។

ដើម្បីសាកល្បងជាថ្មីម្តងទៀតអាចប្រើ var_dump នេះ ($ _ ឯកសារ);

ឯកសាររបស់អ្នកទាំងអស់នឹងត្រូវបានដាក់ក្នុងអារេដូចនេះ:

  1. $ _FILES [ "file1"] [ "ឈ្មោះ"] [0]
  2. $ _FILES [ "file1"] [ "ឈ្មោះ"] [1]
  3. ហើយដូច្នេះនៅលើ។

ក្នុងវង់ក្រចកត្រូវបានសរសេរលេខឯកសារក្នុងអារេនេះ។ រាប់ពីសូន្យ។ យើងប្រព្រឹត្ដចំពោះពួកគេនៅក្នុងវិធីដូចគ្នានេះ, គ្រាន់តែសួរវដ្តនិងដោយទាក់ទងកូដខាងលើបានរៀបរាប់នៅចុងបញ្ចប់នៃសន្ទស្សន៍នេះបន្ថែម [$ i] នេះ។

$ i = 0;

ខណៈពេល ($ _FILES [ "file1"] [ "ឈ្មោះ"] [$ i] <> '')

{

/// បិទភ្ជាប់កូដខាងលើនេះ

}

ដូច្នេះអ្នកនឹងត្រូវកើតឡើងតាមរយៈការផ្ទុកឡើងឯកសារទៅម៉ាស៊ីនបម្រើរបស់ PHP វដ្តមួយក្នុងពាក្យផ្ទួនមិនចាំបាច់នៃការដោយគ្មានលេខកូដនេះជាធម្មតាករណីនេះប្រសិនបើអ្នកប្រើកំណែដោយមានចំនួនឋិតិវន្តឯកសារ (រូបថតចុងក្រោយ) ។

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 km.birmiss.com. Theme powered by WordPress.