منتدى دعم PBBoard الرسمي
(نسخة قابلة للطباعة من الموضوع)
https://pbboard.info/forums/t5347
أنقر هنا لمشاهدة الموضوع بهيئته الأصلية

درس برمجة مركز رفع ملفات بسيط و محمي ويعمل بنظام قوالب .
oussamazad 30-03-2011 01:13 صباحاً

بسم الله الرحمن الرحيم
سنشرح اليوم برمجة مركز رفع ملفات بسيط ذو خصائص جميلة وآمن بإذن الله .

الإعداد :

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

- uploaded .
- includes .
- style .

وبداخل المجلد
includes
قم بإنشاء مجلد


نظام القوالب :

سنقوم بإستعمال نظام قوالب خفيف لكي يكون السكربت الذي نريد عمله أكثر تنظيماً وقابلية للإستخدام ...
سنستعمل نظام القوالب MOFTemplate Engine يمكنك زيارة الموقع و التعرف عليه أكثر ...
قم بتحميل نظام القوالب من هنا
( للأسف لم أستطع تحميل الملف لذا قمت بإستعمال نسخة سابقه من النظام 1.4.0.1
ولمن لم يستطع التحميل من الموقع الرسمي في هنا رابط آخر ).
بعد تحميل نظام القوالب قم بفك الضغط عنه , سنحتاج للملف moftemplate-engine
.php
,
قم بنسخ الملف moftemplate-engine
.php
ووضعه داخل المجلد
includes
الذي أنشأناه سابقاً .
انتهينا من تركيب نظام القوالب .




كتابة ملف تعريف نظام القوالب (
mof-define.php)
:

في هذه الخطوة سنقوم بكتابة ملف تعريف نظام القوالب ,
قم بعمل ملف جديد بإسم mof_define
.php
داخل المجلد
includes
, وسيكون هذا محتواه :-


<?
include &#39;moftemplate-engine.php&#39;
;
$tpl = new moftemplate
;
$tpl->tempdir = &#39;style/template&#39;
;
$tpl->cachedir = &#39;includes/cache&#39;
;

?>

في السطر الأول قمنا بتضمين ملف نظام القوالب .
في السطر الثاني قمنا بتشغيل النظام .
في السطر الثالث قمنا بتحديد مجلد القوالب .
في السطر الرابع قمنا بتحديد مجلد الملفات المؤقتة .





كتابة ملف الإعدادات (
config.php) :

الآن سنقوم بكتابة ملف إعدادات ومعلومات الموقع الذي سيقوم بتركيب السكربت , الملف كله مُتغيرات ولا أظن انه يحتاج لشرح :

<?
# اسم الموقع
$sitename = "مركز رفع الملفات"
;

# الرسالة الظاهر في الصفحة الرئيسية
$msg = "الرجاء عدم استخدام المركز فيما يغضب الله ورسوله"
;


/* هنا اكتب رابط موقع مع مجلد السكربت مثلwww.name.com/upload
بدونhttp://
وبدون / في الاخير */
$site_url ="localhost/upload"
;



# الكلمات المفتاحية keywords التي ستظهر بوصف الصفحة
$ _open = " مركز رفع ملفات الفلان "
;

# كلمات الوصف de ion
$ _desc = "مركز رفع ملفات , ارفع ملفاتك , رفع , ملفات "
;


// الحجم المسموح به بالبايت
// هذا الحجم يساوي 150 كيلو بايت
$maxsize = "153600"
;

// الامتدادات المسموح بها
$alemtdadat = array(&#39;.gif&#39;,&#39;.jpg&#39;,&#39;.jpeg&#39;,&#39;.zip&#39;,&#39;.rar&#39;,&#39;.png&#39;,&#39;.swf&#39;,&#39;.psd&#39;,&#39;.txt&#39;,&#39;.bmp&#39;
);
?>

هذا هو الملف , طبعاً كله متغيرات ولا يحتاج لشرح ... إلا في السطر الأخير وضعنا مصفوفة تحتوي على الإمتدادات ...
الآن انتهينا من الملف
config.php
وسنقوم بوضعه داخل المجلد
includes
,
الآن أتممنا المجلد
includes
بجميع ملفاته !






فكرة عن تنظيم ملفات العمل
:

سنقوم بتنظيم عملنا لأكبر حد ممكن , لذا سنقوم بوضع يحتوي على المحتوى العلوي لكل الصفحات وملف يحتوي على المحتوي السفلي لكل الصفحات ايضاً !
بمعنى اننا سنقوم بعمل ملف اسمه
content_up.php
وفيه نضع جميع مانريد ان يكون في اول الملف , وسنضع فيه :
تعريف ملف القوالب , تضمين ملف الإعدادات
config.php
, إستدعاء الهيدر , وبعض الأكواد الأخرى ...
وملف آخر اسمه
content_down.php
وسنضع فيه استدعاء للفوتر ...
اي انه بهذا النظام الصفحة الرئيسية لن تكون إلا بِضع أسطر فقط !
إذا لم تفهم المغزى من هذا , فستفهمه لاحقاً .
بخصوص نظام القوالب , لن نستعمل في هذا الشرح إلا المتغيرات فقط و لن نستعمل ادوات شرطيه
(if-else-elseif)
أو غيرها .... وطريقة طباعة
المتغيرات بنظام القوالب هي
{
المتغير
}
فقط .




كتابة الملف
content_up.php :

الملف ثم شرحه :


<?
include(&#39;includes/config.php&#39;
);
include(
&#39;includes/mof_define.php&#39;
);

echo
$tpl->show(&#39;header.htm&#39;
);

?>

في السطر الأول قمنا بتضمين ملف الإعدادات
config.php
.
في السطر الثاني ايضاً قمنا بتضمين ملف تعريف نظام القوالب .
في السطر الثالث قمنا بوضع امر إظهار قالب الهيدر الذي سننشأه لاحقاً .




كتابة الملف
index.php :

الملف
index.php
وهذا محتواه :


<?
include(&#39;content_up.php&#39;
);

$max_size = ($maxsize/1024
);
$allowed_file_types = implode(", ", $alemtdadat
);
$upload_path = &#39;uploaded&#39;
;

echo
$tpl->show(&#39;upload.htm&#39;
);

echo
$tpl->show(&#39;footer.htm&#39;
);
?>

السطر الأول قمنا بتضمين الملف
content_up.php
الذي كتبناه سابقاً ...
السطر الثاني قمنا بقسمة أقصى حجم مسموح به على 1024 لكي نحصل على الحجم بالكيلوبايت لكي نعرضه للزائر .
السطر الثالث قمنا بإستعمال الدالة
implode
وتستعمل مع المصفوفات لوضع محتواها في متغير وإمكانية طباعة بسهوله , يمكنك البحث عنها بموقع
php.net
.
السطر الرابع حددنا مسار مجلد الرفع , وهو المجلد
uploaded
الذي أنشأناه سابقاً .
السطر الخامس قمنا بطلب القالب
upload.htm
وسننشئه لاحقاً .
السطر السادس قمنا بطلب قالب الفوتر ...

الآن سنقوم بعمل القوالب الثلاثة
header,upload,footer
ثم سنقوم بعمل ملف الرفع
upload.php
لاحقاً ...
بخصوص القوالب و التصميم , فـسنقوم بعمل السكربت بتصميم عادي جداً وليس إحترافياً , ويمكنك تعديله لاحقاً على حسب رغبتك :) .
إذا كنت لاتعرف ال
HTML
او
CSS

فأنصحك بتعلمها لأهميتها في هذا الوقت , ولن يغنيك عن تعلمها أي برنامج كان !.




القالب
header.htm :

<html dir="rtl">
<head>
< http-**="Content-Type" content="text/html; charset=windows-1256">
< http-**="Content-Language" content="ar-sa">
< name="keywords" content="{ _open}">
< name="de ion" content="{ _desc}">
<title>{sitename}</title>
</head>
<body style="margin:0">


[/color]








{sitename}


[p]

<a href="index.php">
الرئيسية </a> -
<a href="http://phpx3.com">
رابط آخر </a>



سأشرحه شرحاً خفيفاً ..
- .في السطر الأول بدأنا وسم ال
HTML
وحددنا بأن إتجاه الصفحه من اليمين لليسار

dir =
تعني اتجاه
direction
, و
rtl
تعني من اليمين لليسار
right to left
.
- السطر الثاني بدأنا وسم
HEAD
وهو بالعاده يوضع فيه اكواد الجافاسكربت و
title
الصفحه واكواد
css
غالباً , و مايوضع هنا لايظهر في الصفحة .
- السطر الثالث و الرابع حددنا اللغه والترميز .
- السطر الخامس و السادس حددنا الكلمات المفتاحيه و كلمات الوصف , وهنا وضعنا
{ _open}
و
{ _desc}

متغيرات سيتعامل معها نظام القوالب , وهي متغيرات وضعناها في ملف
config.php
.
- السطر السابع حددنا عنوان الصفحه , وهو اسم الموقع الذي وضعناه بالمتغير
sitename
في ملف
config.php
.
- السطر الثامن أغلقنا وسم
HEAD
.
- السطر التاسع بدأنا بـ وسم
body
ومايقع تحت هذا الوسم هو محتوى صفحتنا .
- باقي الأسطر وضعنا جدولين جدول فيه اسم الموقع
{sitename}
وجدول آخر يحتوي على روابط.
انتهينا من قالب الهيدر .




القالب
footer.htm :

وسيظهر بالأسفل في كل الصفحات , القالب :





جميع الحقوق محفوظة © {sitename}


</body></html>

قمنا بوضع سطر جديد ثم توسيط المحتوى ثم كتبنا جميع الحقوق محفوظة ل
sitename
...
واغلقنا الوسوم التي بدأناها بقالب
header
.




القالب
upload.htm :

هذا القالب هو القالب المسؤول عن نموذج الرفع , أي صندوق الرفع .... القالب :



<BR>
"1" style="border:1px dotted #C0C0C0";" class="mycode_color">










<font face="Tahoma" style="font-size: 10pt; font-weight:700" color="#FFFFFF">{sitename}

<font face="Tahoma" style="font-size: 9pt; font-weight: 700"> {msg}

"100%" cellpadding="0" style="border-collapse: collapse" bordercolor="#CCCCCC";" class="mycode_color">




"#ECE9D8";" class="mycode_color"><font face="Tahoma" style="font-size: 9pt">
أقصى حجم مسموح به :
<font color="#FF0000">{max_size} كيلوبايت
.
"50%";" class="mycode_color">
<font face="Tahoma" style="font-size: 9pt">
الإمتدادات المسموح بها :
<font color="#FF0000" style="font-size: 8pt" face="Tahoma">{allowed_file_types}<font face="Tahoma" style="font-size: 9pt">
.


<form action="upload.php" method="post" enctype="multipart/form-data" name="form1" id="fileup">
"1" cellpadding="3" cellspacing="1" bgcolor="#FFFFFF" bordercolor="#C0C0C0" style="border:1px dotted #C0C0C0; border-collapse: collapse" id="table5";" class="mycode_color">








<font face="Tahoma" style="font-size: 9pt" color="#FFFFFF">
رفع الملفات

[p]<font face="Tahoma">

اختر الملف :


<input name="fileup" type="file" id="fileup0" size="50" style="text-decoration: underline; font-family: Tahoma; font-size: 9pt; border: 1px groove #C0C0C0; padding: 2px; font-weight:700; cursor:hand">
"#ECE9D8";" class="mycode_color">
<font face="Tahoma">
<input type="submit" name="Submit" value="رفــــــــــــع / Upload" style="font-family: Tahoma; color: #FFFFFF; font-variant: small-caps; font-size: 9pt; vertical-align: baseline; border: 1px dotted #C0C0C0; padding: 4px; background-color: #81A7E8; font-weight:700;cursor:hand">


<BR>

طبعاً جميعها أكواد
HTML ,
لاتحتاج لشرح , فقط قمنا بالإستعانه بالمتغيرات التي كتبناها بالملف
index.php
لتحديد أقصى حجم للتحميل بالكيلوبايت و الإمتدادت المسموح بها ...




الملف
upload.php
المسؤول عن رقم الملفات :

هذا هو الملف المسؤوول عن إحضاء الملف ورفعه , هذا هو الملف مع الشرح بداخله :-


<?
// نقوم بتضمين ملف المحتوى العلوي
include(&#39;content_up.php&#39;
);
// نقوم بتحديد المجلد الذي سنقوم بالرفع إليه
$upload_path = &#39;uploaded&#39;
;



// نقوم بإحضار الملف المراد رفعه واسمه ,
// لقراءة المزيد عن المصفوفة $_FILES
// يمكنك الدخول إلى php.net
$file_name = $_FILES[&#39;fileup&#39;][&#39;name&#39;
];
$fileup = $_FILES[&#39;fileup&#39;][&#39;tmp_name&#39;
];

// نقوم بإنتاج رقم عشوائي لكي نضيفه إلى إسم الملف لكي لاتكرر اسماء الملفات في
// مجلد الرفع
$rand = rand(000,999
);
// نقوم بوضع متغير يحتوي على اسم الملف ونلاحظ اننا اضفنا متغير اسم الملف العشوائي
$new_file_name=$rand.&#39;_&#39;.$file_name
;




// إذا كان لم يتم اختيار ملف
if($fileup == &#39;&#39;
){
print
" [p]عذراً , لم تقم بإختيار ملف

"
;
echo
$tpl->show(&#39;upload.htm&#39;
);
echo
$tpl->show(&#39;footer.htm&#39;
);
exit;
}else{

// نحضر إمتداد الملف
$att = strtolower(strrchr($file_name,&#39;.&#39;
));

// إحضار حجم الملف بواسطة الدالة
// filesize
// مع ملاحظة ان هذه الدالة تحضر حجم الملف بالبايت
$file_size = filesize($fileup
);

// التأكد من أن الإمتداد موجود في مصفوفة الإمتدادات
if(! in_array($att,$alemtdadat
)){
print
"

عذراً , هذا الإمتداد غير مسموح به

"
;
echo
$tpl->show("upload.htm"
);
echo
$tpl->show(&#39;footer.htm&#39;
);
exit;
}

// التأكد من حجم الملف
elseif($file_size > $maxsize
)
{
// نقوم بإحضار حجم الملف بالكيلوبايت لكي نقوم بطباعته للزائر
$max_size = ($maxsize/1024
);
print
"

عذراً , حجم الملف أكبر من $max_size

"
;
echo
$tpl->show("upload.htm"
);
exit;

}else{
// وضعنا متغير يحتوي على مسار مجلد الرفع ثم اسم الملف لكي نحدد المسار كاملاً
$path= $upload_path.&#39;/&#39;.$new_file_name
;

// رفع الملف
// هنا استخدمنا الدالة move_uploaded_file
// ولهذه الداله بارامتاران
// الأول الملف , والثاني مسار الملف وقد حددنا في أعلى
$Upload = move_uploaded_file($fileup,$path
);

// إذا تم رفع الملف
if($Upload
)
{
// نضع مصفوفة لإمتدادت الصور
// لكي إذا كان الملف المرفوع صوره , نقوم بالتحقق من عرضه و ارتفاعه كي لايكون ملفاً ضاراً !
$images = array(".jpg",".jpeg",".gif",".png",".bmp"
);

// إذا كان الإمتداد موجود في مصفوفة إمتداد الصور
if ( in_array($att,$images
) )
{
// إذا كان الإمتداد صورة ن??? ?????? ???????? ??? ???? ??????? ?? ?????
//
mime type
"
// بواسطة الدالة getimagesize
// وعلى مااظن ان هذه الدالة تستلزم مكتبة GD
// أيضاً نلاحظ اننا وضعنا علامة @
// ووضعه يعني عدم إظهار الأخطاء في حال حدوثها
$image = @getimagesize($path
);


// إذا كان الصورة غير حقيقيه
if(!stristr($image[&#39;mime&#39;],&#39;image&#39;
))
{
// نقوم بحذف الملف
$delete = @unlink($path
);
if(
$delete
)
{
print
"

عذراً , الصورة مزيفة

"
;
echo
$tpl->show("upload.htm"
);
echo
$tpl->show(&#39;footer.htm&#39;
);
exit;
}
}
}
// أما إذا تم رفع الملف بنجاح
// نحضر حجم الملف
$size= ($_FILES[&#39;fileup&#39;][&#39;size&#39;]/1024
);
// نحضر نوع الملف
$type = $_FILES[&#39;fileup&#39;][&#39;type&#39;
];
// نطبع القالب المسؤول عن عرض معلومات الملف المرفوع
echo $tpl->show("file-was-upload.htm"
);
echo
$tpl->show(&#39;footer.htm&#39;
);

}else{
// في حال لم يتم رفع الملف
print "

عذراً , حصل خطأ في رفع الملف , حاول مجدداً

"
;
echo
$tpl->show("upload.htm"
);
echo
$tpl->show(&#39;footer.htm&#39;
);

}

}
}

?>


القالب
file-was-upload.htm
المسؤول عن عرض نتيجة الملف بعد رفعه :


"table1";" class="mycode_color">














تم تحميل الملف بنجاح ، رابط الملف :
'[url'.http://{site_url}/{path} ? '='http://{site_url}/{path} : '' .']http://{site_url}/{path}[/url]'

حجم الملف : {size} كيلوبايت.<BR/>
نوع الملف :{type}.<BR/>
"#ECE9D8" height="19";" class="mycode_color">
<font color="#808080" style="font-size: 9pt" face="Tahoma">
استخدامات متعددة :
"center";" class="mycode_color"> <font face="Tahoma" size="2">للإستعمال كصورة في المنتديات<font face="Tahoma" style="font-size: 10pt"> (قم بنسخ مافي المربع والصقه في المنتدى)<font face="Tahoma"><font size="2">:

<input size=&#39;100&#39; value=&#39; &#39; name="T3"><font size="2">
<font face="Tahoma" size="2">للإستعمال كرابط في المنتديات<font face="Tahoma" style="font-size: 10pt"> (قم بنسخ مافي المربع والصقه في المنتدى)<font face="Tahoma"><font size="2">:

<input size=&#39;100&#39; value=&#39; اضغــط هنــا لتحميــل الملــف &#39; name="T4"><font size="2">


"center";" class="mycode_color"> <font face="Tahoma" size="2">
صفحة HTML :
<font face="Tahoma"><font size="2">للإستعمال
كصورة في صفحة HTML :
<input size=&#39;100&#39; value=&#39;'[url'.http://{site_url} ? '='http://{site_url} : '' .']<img src="http://{site_url}/{path}">[/url]'&#39; name="T1"><font size="2">

<font face="Tahoma"><font size="2">للإستعمال كرابط في صفحة
HTML :
<input size=&#39;100&#39; value=&#39;<a href="http://{site_url}/{path}" target="_blank">إضغط هنا</a>&#39; name="T2"><font size="2">


"center";" class="mycode_color"> <form method=[color=#0000ff]"POST" action="index.php">
<input type="submit" value="رفع المزيد من الملفات" style="font-weight: 700"></form>



انتهينا !
أتمنى أن الشرح كان واضحا ولو اني كتبته على عجل
:D
...
العمل بالكامل يمكن? تحميله من هنا .
منتدى دعم PBBoard الرسمي

Copyright © 2009-2024 PBBoard® Solutions. All Rights Reserved