أجهزة الكمبيوترأنواع الملفات

تحميل الملفات إلى الخادم: PHP

تنزيل الملفات عن طريق PHP - حالة مثيرة جدا للاهتمام، والتي يجب تناولها بعناية فائقة. على شبكة الإنترنت يمكنك أن تجد أمثلة عديدة لتنفيذ تحميل الملفات، ولكن ليس كلها جيدة وتلبية قواعد السلامة.

تحتاج مثل هذه الأمور لجلب الى نتيجة، حتى لو كان يستغرق وقتا طويلا. إذا تركت فجوة في القانون، ثم الخادم الخاص بك كله يمكن أن يتعرض للخطر.

سلامة

مع PHP ملف تحميل ليتم الخادم من بسهولة تامة. رمز قصيرة جدا وبسيطة. قبل بضعة أسطر. ومع ذلك، هذا الأسلوب هو خطير. مزيدا من الوقت وخطوط للقانون بعيدا إلى بر الأمان.

الخطر هو أنه إذا كنت لا تفعل عمليات التفتيش، أي مهاجم تحميل نصوصهم على الخادم الخاص بك. في هذه الحالة، سيكون لها حق الوصول الكامل. أنه يستطيع أن يفعل ما يشاء:

  • حذف قاعدة البيانات؛
  • حذف مواقع الملفات؛
  • تعديل مواقع الملفات؛
  • إضافة إعلانك إلى موقع الويب الخاص بك؛
  • تحميل الفيروسات.
  • إعادة توجيه كافة المستخدمين على مواقعهم.
  • والعديد من الأشياء الأخرى التي تتبادر إلى الذهن المهاجم.

يجب عليك دائما التحقق الذي يحاول تحميل ملف للمستخدم. على سبيل المثال، إذا قمت بتحميل الصور فقط، فمن الضروري للتحقق من أن الملف هو صورة بدقة. خلاف ذلك، سوف تقوم بتحميل أي شيء.

بالضبط كيفية تنفيذ التحقق، وسيتم عرض ذلك، مع البرنامج النصي الفحص المباشر لتحميل الملفات.

إنشاء نموذج PHP

نموذج الرفع ملف بسيط جدا. في عداد المفقودين على زر التصفح وتحميل الأزرار.

يصف كيفية إنشاء سوف أشكال لا، لأنه من السهل. تفترض الإرشادات الأخرى التي لديك بالفعل المفاهيم الأساسية للHTML (وإلا فإنك لن تبحث عن معلومات حول تحميل على PHP).

ولكن لاحظ أن البيانات في شكل تحتاج إلى إضافة سمة enctype.

خلاف ذلك، لن يتم إرسال البيانات على معالج الملف.

كيف يعمل؟

عند النقر على زر استعراض سترى مربع حيث طلب منهم أن يختاروا ملف.

بعد ذلك سوف تكون هناك حاجة إلى الحصول على المسار حيث يقع الملف.

إذا لم يظهر المسار، تنفيذ الإجراء مرة أخرى.

بعد النقر على معالج ملف التحميل يمكن أن تعطي أي معلومات.

على سبيل المثال، يمكنك كتابة الخط الذي ينص على أن الملف هو "فلان" تم تحميلها اسم بنجاح إلى المجلد "كذا وكذا". بالطبع، سيتم إعطاء اسم ملف مختلف دائما.

عادة، يتم استخدام هذه المعلومات إلى رمز التصحيح. وبالتالي فمن الممكن للتحقق من أن تنتقل البيانات وتحدث يكتب في الدليل المطلوب. وهذا هو، لا تشير حتى اسم الملف. وبما أن هذه المعلومات الإضافية أن المستخدم لا يحتاج.

فمن المنطقي لإخراج اسم فقط إذا كان المستخدم بتحميل ملفات متعددة. هذا هو الحال، والنظر أبعد قليلا. دعونا لا نسبق الاحداث.

تعديل

في PHP تحميل الملفات إلى الخادم يتطلب إعدادات معينة، والتي ينبغي أن يتم في ملف php.ini. هذا الملف يحتوي على الكثير من الإعدادات. أنهم جميعا نحن لسنا بحاجة. ونحن مهتمون في ثلاثة خطوط: file_uploads، upload_tmp_dir وupload_max_filesize.

يرجى ملاحظة أن هذه الإعدادات سوف تؤثر على جميع المواقع الخاصة بك على الخادم، وليس أي واحد. لذلك، لتعيين الحد الأقصى لحجم استنادا إلى حقيقة أنه سيكون لديك لتحميل المستخدمين. فمن غير المستحسن لوضع كبيرة جدا.

بمجرد تغيير القيم في هذه المعايير، تحتاج إلى إعادة تشغيل الملقم. وإلا فإن الإعدادات نافذة المفعول، لأنها قراءة في وقت تحميل الملقم.

يمكنك القيام بذلك في وحدة تحكم من خلال الاتصال عبر SSH إلى الملقم. ببساطة أدخل هتبد إعادة تشغيل خدمة الأوامر، ثم الإعدادات نافذة المفعول.

طريقة أخرى - إعادة تشغيل من خلال ISP لوحة أو من خلال مزود لوحة الفواتير.

ملف مجموعة

في PHP يتم تحميل الملف من قبل مجموعة $ _files. فهو يحتوي على كل المعلومات حول الملفات التي نحن تحميل.

لمعرفة ما هي المعلومات الواردة في المصفوفة، وهو ما يكفي لكتابة في معالج الملفات التالية.

حدد أي ملف وانقر على زر "تحميل". على الصفحة معالج سيتم عرض المعلومات التي يتم تخزينها في $ _files. هو مكتوب متغير تماما مع الأحرف الكبيرة. PHP - لغة حساسة.

كما ترون، في هذه المجموعة لديها الكثير من المجالات. كل منهم مهم بالنسبة لنا. يحتوي الحقل الأول اسم الملف في الشكل الذي يتم استخدامه على جهاز الكمبيوتر الخاص بك.

العمود نوع تحديد نوع الملف. يتوافق Tmp_name الحقل إلى اسم الملف المؤقت. بعد نهاية البرنامج النصي سيتم حذف.

يحتوي الحقل الخطأ رمز خطأ. وكانت هذه أبعد قليلا. الحجم - حجم بالبايت.

أخطاء

نفذت من خلال تحميل ملف PHP ويرافق دائما رمز خطأ. رسالة خطأ دخلت في "خطأ". الخطأ قطة شاشة صفرا.

النظر في قيمة جميع الأخطاء:

قيل أعلاه عن المعلمة التي يمكن أن تكون محددة في HTML المعتادة.

هنا هو شكل عينة لتحميل الملف، والذي يشير إلى الحد من كمية الملف الذي تم تحميله.

السيناريو تحميل ملف: PHP

كما قام كل من على أرض الواقع؟ في PHP يحدث تحميل ملف الأوامر نسخة. إذا كنت مهتما في مسألة كيفية تنزيل ملف، فإن الجواب هو copy- بسيطة، والذي يستخدم معلمتين - الملف المصدر والملف الوجهة.

ولكن، كما هو مذكور أعلاه، فإنه لا يمكن أن يكون محدودا لأسباب تتعلق بالسلامة. على سبيل المثال، تحقق من أي نوع من الملفات ان السفينة، يمكنك استخدام نوع الحقل في مجموعة $ _files. أولا، دعونا التعامل مع التفتيش، ومن ثم الانتقال إلى البرنامج النصي الكامل

دعونا نقول لكم تريد السماح للمستخدمين بتحميل صورة مع دقة فقط GIF، JPEG أو PNG. إشارة إلى أنه يمكن أن يكون مثل هذا.

إذا ($ _ FILES [ 'file_upload'] [ 'نوع']! = "صورة / gif") {
صدى "عذرا، نحن نؤيد فقط المتحركة-الملفات تحميل".
الخروج؛
}

إذا كنت تريد أن تشحن جميع أنواع 3، ببساطة إضافة شرط إضافي إلى نوع آخر من الصورة.

يتم نسخ من هذا القبيل: نسخة (صورة 1، صورة 2).

في حالتنا، عندما عمل يتم تحميل من جهاز الكمبيوتر إلى الخادم، يمكنك القيام بذلك

نسخة ($ _ FILES [ 'file_upload'] [ "tmp_name"]، "1.JPG")

وهذا هو، سيتم نسخ الملف مع 1.jpg اسم. هذا ليس صحيحا تماما. في هذه الحالة، ما هي الا مثال على ذلك. اسم الملف هو دائما من الضروري تحديد مختلفة، وتحديد ملحق، اعتمادا على الملف.

تحديد امتداد يمكن أن يكون بطرق مختلفة. كل هذا يتوقف على مطور من سعة الاطلاع. واحدة من أسرع الطرق ل(بفارق أعشار ثانية) تحديد التمديد - وهذا هو رمز المقبل.

$ PATH_INFO = pathinfo ($ _ FILES [ 'photo1'] [ "اسم"])؛

$ تحويلة = $ PATH_INFO [ 'التمديد'].

المتغير $ على تحويلة سنقوم بتخزين التمديد المطلوب. يمكن تعيين اسم ملف عشوائيا باستخدام MD5. إذا كنت تخطط لتحميل الكثير من الملفات، فمن الأفضل لشحنها إلى مجلدات مختلفة. لذلك سوف تكون أكثر ملاءمة. على وجه الخصوص، إذا كنت ترغب في تطهير.

لتحميل الشفرة على النحو التالي.

/// مع صورة

إذا ($ _files [ 'photo1'] [ 'tmp_name'] == فارغة)

{

صدى ( "

ملف غير معروف.

العودة ... ")؛

الخروج؛

}

///. نقول لكم لأي مشروع على خادم يسمح لتحميل الملفات الكبيرة (فيديو)، ولكن هناك صور فقط، ويحتاج المستخدمون للحد من

إذا (($ _files [ "photo1"] [ "حجم"]> 1024 * 1024 * 2)

{

؟>

الحد الأقصى المسموح به حجم <قوية> 2 MB

العودة ...

الخروج؛

}

// إنشاء مجلدات

// إنشاء مجلد من الشهر الحالي

إذا (! file_exists ( "IMG /". التاريخ ( "M")))

{

مكدير ( "IMG /" التاريخ ( "M"))؛

}

// إنشاء مجلد من اليوم الحالي

إذا (! file_exists ( "IMG /". التاريخ ( "M"). "/". التاريخ ( "د")))

{

مكدير ( "IMG /" التاريخ ( "M") "/" التاريخ ( "د") ...)؛

}

/// ملحق الملف

$ PATH_INFO = pathinfo ($ _ FILES [ 'photo1'] [ "اسم"])؛

$ تحويلة = $ PATH_INFO [ 'التمديد'].

/// توليد اسم الملف

$ ID = MD5 (التاريخ ( "YMD"))؛

إذا (نسخة ($ _ FILES [ 'photo1'] [ "tmp_name"]، "IMG /". التاريخ ( "M"). "/". التاريخ ( "د"). "/". $ الهوية. $ تحويلة) )

{

صدى ( "ملف التي تم تحميلها بنجاح")؛

}

/// أي إجراء آخر (دخول في قاعدة البيانات، وهلم جرا. N.)

}

ملفات متعددة

تحميل ملفات متعددة (PHP) يحدث عن طريق حقول إضافية في النموذج.

هذه الطريقة ليست جيدة جدا، كما أنه يحد من عدد من الملفات للتحميل. وعلاوة على ذلك، فهو يعتبر النموذج السيئ في البرمجة. تحاول أن تفعل كل شيء ديناميكي.

الخيار المثالي - بل هو خيار لعدد كبير من الملفات في وقت واحد عن طريق الضغط على زر واحد.

للقيام بذلك، إنشاء شكل مثل هذا الرمز.

<نموذج أسلوب = "POST" العمل = "ارتباط إلى ملف معالج" اسم = "upload_form" enctype = "متعدد الأجزاء / شكل بيانات">

<الإدخال الطبقة = "form_upload" نوع = "ملف" اسم = "FILE1 []" قيمة متعددة = "نظرة عامة">

<الطبقة الإدخال = "form_upload" نوع = "تقدم" اسم = "upldFile" قيمة = "إضافة" />

لاحظ أن إضافة متعددة للكلمة، ويتم إعطاء اسم مجموعة []. في هذه الحالة، سوف $ _files مجموعة تكون مختلفة قليلا. سوف تحصل على مجموعة من المصفوفة.

لاختبار يمكن مرة أخرى استخدام var_dump ($ _ FILES)؛

سيتم وضع جميع الملفات الخاصة بك في مجموعة من هذا القبيل:

  1. $ _files [ "FILE1"] [ "اسم"] [0]
  2. $ _files [ "FILE1"] [ "اسم"] [1]
  3. وهلم جرا.

بين قوسين هو مكتوب رقم الملف في صفيف. العد من الصفر. نحن نعاملهم بنفس الطريقة، فقط أطلب دورة وعن طريق الاتصال رمز المبين أعلاه في نهاية مؤشر مضيفا [$ ط].

$ I = 0؛

بينما ($ _files [ "FILE1"] [ "اسم"] [$ ط] <> '')

{

/// لصق رمز أعلاه

}

وبالتالي، سيكون لديك أن يحدث من خلال تحميل ملف PHP على الخادم في دورة واحدة دون تكرار لا داعي له من القانون، كما هو الحال عادة إذا كنت تستخدم نسخة مع عدد ثابت من الملفات (الصورة الأخيرة).

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

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