لدي مشكلة في كود php
لدي مجموعة ملفات واريد تحميلها على السيرفر برمجياً
عن طريق حلقة while
بدون استخدام فورم لتعبئة الملفات كل واحد على حدى
ولكم جزيل الشكر
لدي مشكلة في كود php
لدي مجموعة ملفات واريد تحميلها على السيرفر برمجياً
عن طريق حلقة while
بدون استخدام فورم لتعبئة الملفات كل واحد على حدى
ولكم جزيل الشكر
لم افهم قصدك بالضبط .
لكن استخدم الداله Copy لعمل النسخ إلى السرفر : وهي تحت الصيغة التالية :
bool copy ( string source, string dest )
source : الملف التي تحب ان تنسخة .
dest : المكان الذي تود النسخ إليه .
بالطبع الدالة تعيد True في حال النجاح و False في حال الفشل .
بالتوفيق
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
إذا كانت الملفات في جهازك وليست في الموقع فلابد من استخدام فورم لإرسالها .
لماذا ؟؟؟ لأن حلقة 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>";
}ولو وافيت ربك دون ذنب *** وناقشك الحساب إذاً هلكتا
ولم يظلمك في عملٍ ولكن *** عسير أن تقوم بما حملتا
وفقت يا استاذ الشمري فى شرح الدالة 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
شكراً لك أخ mo7ma7
فعلاً فهمت قصدي وفقك الله ولك جزيل الشكر
وشكراً لجميع الأخوة الذين شاركو في هذه المسألة
وجزاكم الله خيراً
عموما انا عملت لك سكربت صغير وكنت هطرحه هنا ليك بس لو الاكواد دي مشيت معاك المسالة خلاص زي ماتحب
بس على فكرة السكربت مش هتحط فيه اسماء الملفات مانوال هو هيجيبها لوحده :D
واحنا فىا لخدمة دائما
تعليق
اقتباسوأما استخدام الدالة copy فإنه ينتج عنها مخاطر من سوء الاستخدام وتفتح ثغرة
قرات في موضوع في سوالف : أنه لا يوجد ثغرة وإنما هناك فرق في الإستخدام بين الدالتين . من ضمن الفوارق كما ذكر الأخ ابو محمد هي ان الـ copy لا تعمل في الوضع الأمن .
فالدالة ()copy تقوم بنسخ ملف من مكان لمكان آخر
أما الدالة ()move_uploaded_file فتقوم بنقل الملف المرفوع عن طريق php و نماذج html الى المجلد الذي تحدده ..
لذا فلا يصح استخدام ()copy في سكريبتات رفع الملفات وانما يجب استخدام ()move_uploaded_file لأنها تقوم بالتأكد من أن الملف مرفوع عن طريق السكريبت وموجود على نفس الدومين قبل نقله.. لذا تعتبر أكثر أمناً
التخصص : نظم معلومات - جامعة سبأ - اليمن
من مواضيعي :
السلسلة الذهبية في تعلم البرمجة [شرح عن الإجراءات والدوال function وبناء الـ Classes] .
أكيد طبعا :)
ولكن الكود السابق باستخدام الدالة copy يعمل فقط على ال local host
ولا يعمل على السيرفر
ولكن كيف استخدم الدالة ()move_uploaded_file بدون فورم لتحميل مجموعة ملفات عندي
مساراتها في مصفوفة مثلاً
انا فكرتك تعرف تصوغ الكود لما تريده
بص ضيفني عالما سنجر hawy_php@hotmail.com
هذا الموضوع مغلق.