تغطية مباشرة لأحداث منتدى الإعلام الجديد المقام بمدينة أبوظبي
هل تقترح تمديد مسابقة سوالف كاست؟

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
عضو نشيط
تاريخ التسجيل: May 2007-
#1 (permalink)  
تعلم كيف تبرمج سكريبت لتحميل الملفات بيدك


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

الكود التالي احفظه في ملف (upload.php) أو أي ملف آخر
ثم تأكد من وجود مجلد images في نفس الدليل

كود PHP:
<?php
echo "<html dir=rtl>";
//مجلد رفع الملفات
$upload_dir "images/";

             
//51200 bytes = 50KB
$size_bytes 51200//حجم الملف بالبايت

//هل تريد تحميل ملفات من نوع معين yes/no
$extlimit "yes";
//أنواع الملفات المسموحة
$limitedext = array(".gif",".jpg",".png",".jpeg");

          
//يقوم بفحص إذا كان كان مجلد التحميل موجود أم لا
          
if (!is_dir("$upload_dir")) {

         die (
"المجلد <b>($upload_dir)</b> غير موجود!");
          }
          
//يقوم بفحص اذا كان مجلد التحميل قابل للكتابة
          
if (!is_writeable("$upload_dir")){
             die (
"المجلد <b>($upload_dir)</b> غير قابل للكتابة أعطه ترخيص 777");
          }

  if(
$uploadform// اذا تم الضغط على زر حمل الملف
  
{//($uploadform) بداية.


              //فحص اذا تم اختيار ملف.
              
if (!is_uploaded_file($_FILES['filetoupload']['tmp_name']))
              {
                     echo 
"خطأ: لم تقم باختيار ملف";
                     exit(); 
//الخروج من السكربت
              
}

              
//تعريف متغير يحمل حجم  الملف
              
$size $_FILES['filetoupload']['size'];
              
//فحص حجم الملف
              
if ($size $size_bytes)
              {
                    
$kb $size_bytes 1024;
                    echo 
"حجم الملف كبير. يجب أن يكون <b>$kb</b> KB. <br>";
                    exit();
              }

              
//فحص نوع امتداد الملف
              
$ext strrchr($_FILES['filetoupload'][name],'.');
              if ((
$extlimit == "yes") && (!in_array($ext,$limitedext))) {
                    echo(
"امتداد الملف خطأ!");
                    exit();
              }

              
// تعريف متغير يحمل اسم الملف
              
$filename =  $_FILES['filetoupload']['name'];
              
// Check if file is Already EXISTS.
              
if(file_exists($upload_dir.$filename)){
                    echo 
"الملف <b>$filename </b>موجود مسبقا!!!";
                    exit();
              }

              
//الدالة التالية تقوم بنقل الملف من الى السيرفر
              
if (move_uploaded_file($_FILES['filetoupload']['tmp_name'],$upload_dir.$filename)) {

                  
//طباعة رسالة نجاح التحميل
                  
echo "الملف(<a href=$upload_dir$filename>$filename</a>) تم رفعه بنجاح";
                  exit();

              }
                  
// طباعة رسالة خطأ في حالة فشل عملية رفع الملف
                  
else
              {
                  
//رسالة الخطأ
                  
echo "حدث خطأ غير معروف أثناء تحميل الملف، الرجاء المحاولة مرة أخرى.";
                  exit();
              }



  }
//if($uploadform) نهاية.

#---------------------------------------------------------------------------------#
// اذا لم يتم ضغط زر حمل الملف قم باظهار النوذج
else
  {
//else بداية

      
?>
      <br>
      <h3>::استعرض ملف من أجل التحميل:</h3>
      <i>- يمكن رفع أنواع:</i>

        <b>
      
    <?
        
// طباعة امتداد الملف
        
for($i=0;$i<count($limitedext);$i++)

    {

        if ((
$i<>count($limitedext)-1))$commas=", ";else $commas="";

        list(
$key,$value)=each($limitedext);

        echo 
$value.$commas;

    }

    
?>

    </b>

      <br>
      <i>- أقصى حجم للملف هو</i> = <b><?echo $size_bytes 1024?> KB </b>
      <br>
      <form method="post" enctype="multipart/form-data" action="<?php echo $PHP_SELF ?>">
      <br>
      <input type="file" name="filetoupload"><br>
      <input type="hidden" name="MAX_FILE_SIZE" value="<?echo $size_bytes?>">
      <br>
      <input type="Submit" name="uploadform" value="حمل الملف">
      </form>

      <?

  
}//else نهاية


?>


?>
تم استخدام متغير $_FILES وهو ضمن الاصدار 4 من php فما فوق.
كود PHP:
هذه الدالة تعني حجم الملف
$_FILES
['upload']['size']
وهذه تحمل اسم الملف المؤقت وقت التحميل
$_FILES
['upload']['tmp_name']
وهذه تحمل اسم الملف الفعلي
$_FILES
['upload']['name']
وهذه لنوع الملف
$_FILES
['upload']['type']
?> 
1- (!is_dir("$upload_dir"))
هذه الدالة تقوم بفحص اذا كان المجلد موجود أم لا

2- (!is_writeable("$upload_dir"))
هذه الدالة تقوم بفحص اذا كان المجلد يقبل الكتابة أم لا.


3- (!in_array($ext,$limitedext))) {
هذه الدالة تفحص امتداد الملفات مثل jpg zip exe وغيرها .

4- (file_exists($upload_dir.$filename))
تقوم بفحص اذا كان الملف موجود مسبقا أم لا

5- (move_uploaded_file($_FILES['filetoupload']['tmp_name'],$upload_dir.$filename))
تقوم بنقل بنسخ الملف ورفعه الى السيرفر. move_uploaded_file('الملف المصدر','المكان الهدف') .

كود PHP:
move_uploaded_file('المكان الهدف','الملف المصدر')
?> 






__________________
اللهم صل علي سيدنا محمد وعلي آل سيدنا محمد وصحبه وسلم
ابوطارق متواجد حالياً   قديم 17-06-2008, 12:12 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Feb 2008-
#2 (permalink)  

السؤال الاهم كيف تكتب سكربت يعطيك روابط تحميل ديناميكية للملف مثل :

كود:
http://www.domain.com/download.php?id=235
و العنوان اللي راح تحمل منه يجب ان يكون ديناميكي لا بثابت كهذا :

كود:
http://www.domain.com/file.zip
بحيث ما يعرف الزائر مسار و اسم الملف الحقيقي على السيرفر






__________________
.. MEG ..

التعديل الأخير تم بواسطة : iMEG بتاريخ 17-06-2008 الساعة 05:27 PM.
iMEG غير متواجد حالياً   قديم 17-06-2008, 05:20 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#3 (permalink)  
رد

الاخ العزيز الغالي يمكنك استخدام خاصية mod_rewrite

وهي مشروحه في درس اخو نا العزيز فكره

علي هذا الرابط

http://www.swalif.net/softs/swalif54/softs187729/

وشكرا لك






__________________
اللهم صل علي سيدنا محمد وعلي آل سيدنا محمد وصحبه وسلم
ابوطارق متواجد حالياً   قديم 17-06-2008, 05:50 PM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#4 (permalink)  

السلام، لماذا لا تستخدمون الكلاس class.upload.php
هو كلاس سهل الاستخدام ولا يتطلب اكثر من 3 سطور لكي تكتب سكربت رفع ملفات ..تجدوا الكلاس على الرابط
class.upload.php - verot.net






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 17-06-2008, 07:51 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: May 2006-
#5 (permalink)  

السلام عليكم

طريقة التحقق ههذ لييست أمنة أبدا :

$limitedext = array(".gif",".jpg",".png",".jpeg");


والأفضل استخدام الـ mimy type

تحية طيبة






__________________
شكرا سوالف سوفت ....
اخباري هنا - إمبراطورية وحيد
الإمبراطور وحيد غير متواجد حالياً   قديم 18-06-2008, 01:15 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#6 (permalink)  

جزاكم الله خير وان شاء الله نكون كلنا استفدنا






__________________
اللهم صل علي سيدنا محمد وعلي آل سيدنا محمد وصحبه وسلم
ابوطارق متواجد حالياً   قديم 18-06-2008, 10:34 AM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: Nov 2001-
#7 (permalink)  


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

تمنياتي لك بالتوفيق






__________________

ألا في سبيل الله ما أنا فاعل - - - عطاء وإقدام وحزم ونائل

ncE بارع Pri غير متواجد حالياً   قديم 22-06-2008, 10:15 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#8 (permalink)  

خوي الغالي ncE بارع Pri

انا ممتن لك واشكرك جزيل الشكر علي تثبيت الموضوع وان شاء الله تعالي نطور نحن والاخوان ونحوله للفكره الطيبه اللي تفضلت بطرحها وجزاك الله خير وان شاء الله تعاالي جزاك الجنه علي فعلك الكريم وقولك الطيب

الي الامام يا سوالف






__________________
اللهم صل علي سيدنا محمد وعلي آل سيدنا محمد وصحبه وسلم
ابوطارق متواجد حالياً   قديم 22-06-2008, 10:47 AM
رد مع اقتباس
مشرف قسم PHP
تاريخ التسجيل: Nov 2001-
#9 (permalink)  


والشكر موصول للأخ daif لأنه هو من قام بتثبت الموضوع
الله يبارك فيه وفيك






__________________

ألا في سبيل الله ما أنا فاعل - - - عطاء وإقدام وحزم ونائل

ncE بارع Pri غير متواجد حالياً   قديم 22-06-2008, 11:02 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#10 (permalink)  

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






__________________
اللهم صل علي سيدنا محمد وعلي آل سيدنا محمد وصحبه وسلم
ابوطارق متواجد حالياً   قديم 22-06-2008, 02:20 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Feb 2003-
#11 (permalink)  
[مساعدة] بحث في قاعدة بيانات عن عدة كلمات ؟؟

شكرا لك






fayz غير متواجد حالياً   قديم 22-06-2008, 03:14 PM
رد مع اقتباس
عضو سوبر نشيط
تاريخ التسجيل: Mar 2008-
#12 (permalink)  

شكرا لك ابو طارق , عمل رائع وشرح سهل






__________________
How To Subscribe In Google Analytics
سبحان الله وبحمده سبحان الله العظيم
لمراسلتي إضغط هنا
أمجــد الحربــي
A.M.J.A.D غير متواجد حالياً   قديم 22-06-2008, 04:06 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Feb 2003-
#13 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة الإمبراطور وحيد مشاهدة المشاركة
السلام عليكم

طريقة التحقق ههذ لييست أمنة أبدا :

$limitedext = array(".gif",".jpg",".png",".jpeg");


والأفضل استخدام الـ mimy type

تحية طيبة
ممكن شرح لهذه الطريقة ؟






fayz غير متواجد حالياً   قديم 22-06-2008, 11:18 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: May 2006-
#14 (permalink)  

بهذه الطريقة يتم التحقق :

كود PHP:
$ftype$_FILES['filup']['type'];
 
$allowed_extensions = array (
"image/pjpeg",
"image/gif",
"image/x-png",
"application/x-zip-compressed"
);
 
if ((!
in_array$ftype $allowed_extensions )) ) {
$err"نوع الملف الأصلي <br><font color=red>$ftype</font><br>غير مصرح به";


يمكنك الاطلاع على مصدر السكريبت والتعلم منه
[سكريبت] مركز التحميل النسخة 7.1 تم التحديث - دعم السكريبتات والأكواد

تحياتي






__________________
شكرا سوالف سوفت ....
اخباري هنا - إمبراطورية وحيد
الإمبراطور وحيد غير متواجد حالياً   قديم 23-06-2008, 12:26 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Feb 2003-
#15 (permalink)  

الإمبراطور وحيد
شكرا لك ..
بالعفل جيد
حيث أنني حملت ملف name.txt واسمه الأصلي كان name.zip

تعرف عليه على أنه ملفي مضغوط لانصي مع ان اسمه txt

شكرا لك






fayz غير متواجد حالياً   قديم 23-06-2008, 03:03 PM
رد مع اقتباس
عضو فعال
تاريخ التسجيل: May 2006-
#16 (permalink)  

حياك الله اخي فائز
بالفعل هي اضمن طريقة لذلك
فمن الممكن تحميل ملف shell.php باسم cartoon.gif

اتمنى الفائدة للجميع
سلامي لك






__________________
شكرا سوالف سوفت ....
اخباري هنا - إمبراطورية وحيد
الإمبراطور وحيد غير متواجد حالياً   قديم 23-06-2008, 05:47 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Feb 2008-
#17 (permalink)  

اللي قصدته :

كود PHP:
$path "folder/subfolder" 
$name "file" 
$ext "zip" ;

$file "$path/$name.$ext"
$MIME_Types mime_content_type($file) ;

if ( 
file_exists($file) and is_file($file) ) 
{    
    
header("Con tent-Type: $MIME_Types");
    
header("Content-Disposition: attachment; filename=$name");
    
readfile("$file");
    exit;

و الرابط اللي ذكرته انت افادني ايضاَ






__________________
.. MEG ..

التعديل الأخير تم بواسطة : iMEG بتاريخ 23-06-2008 الساعة 09:46 PM.
iMEG غير متواجد حالياً   قديم 23-06-2008, 09:22 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Oct 2003-
#18 (permalink)  

اقتباس:
المشاركة الأصلية كتبت بواسطة hilaby مشاهدة المشاركة
السلام، لماذا لا تستخدمون الكلاس class.upload.php
هو كلاس سهل الاستخدام ولا يتطلب اكثر من 3 سطور لكي تكتب سكربت رفع ملفات ..تجدوا الكلاس على الرابط
class.upload.php - verot.net
ممكن شرح بسيط لاستخدامة






الشحي غير متواجد حالياً   قديم 24-06-2008, 09:21 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Aug 2007-
#19 (permalink)  

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






__________________
شبكة شلون كوم
شبكة شلون كوم غير متواجد حالياً   قديم 10-07-2008, 10:26 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Aug 2007-
#20 (permalink)  

مشكوور اخي الكريم

لكن لدينا مشكلة
وهي :

انا اريد ان أقوم ببرمجة سكريبت رفع ملفات .. والمستخدمين لا يعرفون الـ mmi type ,, فهل يوجد طريقة أخرى غير الـ mmi type ؟
او دالة تقوم بإكتشاف الـ mmi type لأي صيغة معينة ؟






mostafa-962 غير متواجد حالياً   قديم 10-07-2008, 05:44 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Feb 2008-
#21 (permalink)  

^^^
كود PHP:
mime_content_type($file






__________________
.. MEG ..
iMEG غير متواجد حالياً   قديم 12-07-2008, 12:15 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Aug 2007-
#22 (permalink)  

ممكن شرح لـلدالة اخي العزيز iMEG






mostafa-962 غير متواجد حالياً   قديم 12-07-2008, 10:35 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Feb 2008-
#23 (permalink)  

استبدل المتغير file بـ رابط الملف






__________________
.. MEG ..
iMEG غير متواجد حالياً   قديم 13-07-2008, 02:36 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: May 2007-
#24 (permalink)  

جزكم الله خير علي المرور وان شاء الله نكون استفدنا جميعا






__________________
اللهم صل علي سيدنا محمد وعلي آل سيدنا محمد وصحبه وسلم
ابوطارق متواجد حالياً   قديم 13-07-2008, 09:26 AM
رد مع اقتباس
رد


 

أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة


المواضيع المتشابهه
الموضوع كاتب الموضوع المنتدى مشاركات آخر مشاركة
[ 1 ][فلاش] مقدمه : ما هي لغة الاكشن سكريبت وماهو الفلاش MohDesign تطوير الويب 25 21-08-2008 06:50 AM
سكربت E-Uploader Pro رائع لتحميل الملفات ma3hd تطوير الويب 8 13-03-2007 01:19 AM
كائن [AksidSars] لتحميل الملفات من برمجتي عبد الواحد البشيري PHP 9 19-12-2006 04:18 PM
هل من سكريبت يرسل الملفات إلى البريد دون تحميلها على الجهاز أولاً؟؟؟ Farasan.org تطوير الويب 6 09-11-2006 08:28 PM
سكريبت مركزي 4 للتحميل الملفات و الصور 4arab.net خدمات البيع والشراء والإعلانات التجارية 15 19-07-2006 09:23 PM


الساعة الآن: 10:39 AM بتوقيت المملكة العربية السعودية