الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة تحميل ملفات

مغلق
بدأه the makro في 7 أغسطس 2006 · 9 رد · 630 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

لدي مشكلة في كود php

لدي مجموعة ملفات واريد تحميلها على السيرفر برمجياً

عن طريق حلقة while

بدون استخدام فورم لتعبئة الملفات كل واحد على حدى

ولكم جزيل الشكر

إذا غامرتَ في شرفٍ مروم ِ . . . . . فلا تقنع بما دونَ النجوم ِ

photo-86809.jpg

the_makro@hotmail.com

#2

لم افهم قصدك بالضبط .

لكن استخدم الداله Copy لعمل النسخ إلى السرفر : وهي تحت الصيغة التالية :

bool copy ( string source, string dest )

source : الملف التي تحب ان تنسخة .

dest : المكان الذي تود النسخ إليه .

بالطبع الدالة تعيد True في حال النجاح و False في حال الفشل .

بالتوفيق

#3

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

لماذا ؟؟؟ لأن حلقة while لا تعمل في جهاز المستخدم المتصفح .

وأما استخدام الدالة copy فإنه ينتج عنها مخاطر من سوء الاستخدام وتفتح ثغرة وقد لا تعمل في الوضع الآمن safe mod

	if(is_uploaded_file($_FILES["filename"]['tmp_name'])) {
		move_uploaded_file($_FILES["filename"]["tmp_name"], $FilesFolder.$_FILES["filename"]["name"]) 
			or die("<b>Unknown error!</b>");
		echo "<b>File: ".$_FILES["filename"]["name"]." Uploaded.</b>"; 
	}

ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا

ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا

#4

وفقت يا استاذ الشمري فى شرح الدالة B)

ويا استاذ أبو محمد الدالة copy معاك بها ثغرة وينتج عنها مخاطر من سوء الاستخدام لكن عند إستخدامها فى مراكز التحميل

لكن الاخ سيستخدمها شخصيا و ما فى حد هيضر نفسه بنفسه

هذا ناتج فهمي للوضع الذي يريده the makro

 <?php
  $files_name= array("softicon.gif","account.gif","annoicon.gif","home.gif");
  $files_number=count($files_name);
	$counter= 0;
while($counter<$files_number)
  {
  $path="C:\\AppServ\\www\\test\up\\$files_name[$counter]";
 if(copy($files_name[$counter],$path))
   {echo " <center>okay <br><br> ";}else {echo "erorr";}
   $counter++;
}
 ?>

ناتي للشرح مع ان الكود مش محتاجه ببس علشان يبقي عملنا الى علينا

هنا نضع اسماء الملفات فى مصفوفة

$files_name= array("softicon.gif","account.gif","annoicon.gif","home.gif");

هنا نحسب عدد الملفات فى المصفوفةوفى مثالنا سكونون 4

$files_number=count($files_name);

نعطي للعداد قيمة 0

ونبدا الحلقة بشرط ان العداد اصغر من عدد الملفات

$counter= 0;
while($counter<$files_number)
  {
  $path="C:\\AppServ\\www\\test\up\\$files_name[$counter]";
 if(copy($files_name[$counter],$path))
   {echo " <center>okay file uploaded <br><br> ";}else {echo "erorr on uploading ";}
   $counter++;
}

طبعا حضرتك تغير ال path الى مسار المجلد التى ستنقل اليه ملفاتك مثلا

 $path="/home/YOURUSERNEAME/puplic_html/folder/$files_name[$counter]";

هذا والله اعلم

ان اصبت فمن الله وان اخطئت فمني ومن الشيطان

وفقكم الله الى ما تحبون وماتريدون

السلام عليكم

تم تعديل هذه المشاركة بواسطة mo7ma7 في 8 أغسطس 2006 في 04:19

#5

شكراً لك أخ mo7ma7

فعلاً فهمت قصدي وفقك الله ولك جزيل الشكر

وشكراً لجميع الأخوة الذين شاركو في هذه المسألة

وجزاكم الله خيراً

إذا غامرتَ في شرفٍ مروم ِ . . . . . فلا تقنع بما دونَ النجوم ِ

photo-86809.jpg

the_makro@hotmail.com

#6

عموما انا عملت لك سكربت صغير وكنت هطرحه هنا ليك بس لو الاكواد دي مشيت معاك المسالة خلاص زي ماتحب

بس على فكرة السكربت مش هتحط فيه اسماء الملفات مانوال هو هيجيبها لوحده :D

واحنا فىا لخدمة دائما

#7

تعليق

اقتباس
وأما استخدام الدالة copy فإنه ينتج عنها مخاطر من سوء الاستخدام وتفتح ثغرة

قرات في موضوع في سوالف : أنه لا يوجد ثغرة وإنما هناك فرق في الإستخدام بين الدالتين . من ضمن الفوارق كما ذكر الأخ ابو محمد هي ان الـ copy لا تعمل في الوضع الأمن .

فالدالة ()copy تقوم بنسخ ملف من مكان لمكان آخر

أما الدالة ()move_uploaded_file فتقوم بنقل الملف المرفوع عن طريق php و نماذج html الى المجلد الذي تحدده ..

لذا فلا يصح استخدام ()copy في سكريبتات رفع الملفات وانما يجب استخدام ()move_uploaded_file لأنها تقوم بالتأكد من أن الملف مرفوع عن طريق السكريبت وموجود على نفس الدومين قبل نقله.. لذا تعتبر أكثر أمناً

#8

أكيد طبعا :)

#9

ولكن الكود السابق باستخدام الدالة copy يعمل فقط على ال local host

ولا يعمل على السيرفر

ولكن كيف استخدم الدالة ()move_uploaded_file بدون فورم لتحميل مجموعة ملفات عندي

مساراتها في مصفوفة مثلاً

إذا غامرتَ في شرفٍ مروم ِ . . . . . فلا تقنع بما دونَ النجوم ِ

photo-86809.jpg

the_makro@hotmail.com

#10

انا فكرتك تعرف تصوغ الكود لما تريده

بص ضيفني عالما سنجر hawy_php@hotmail.com

هذا الموضوع مغلق.

مواضيع مشابهة