هذا نموذج بسيط لرفع الملفات يعمل على السيرفر الشخصي وعلى الانترنت اذا بتحب
سنعمل مجلد نسميه
up في مجلد السيرفر الشخصي
سنعمل مجلد اسمه
uploads داخل مجلد up وفيه سنجد جميع الملفات المرفوعة
سنعمل ملف نسميه up.php ونضعه في مجلد up
هذا هو محتواه:
(قمت بتعيين الحجم الى 1 ميجا)
كود PHP:
<html>
<!-- Creation date: 10/25/2008 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
<title>upload</title>
</head>
<body>
<br>
<?php
$uploaddir = 'c:/appserv/www/up/uploads/'; // مسار المجلد الكامل مع علامة / في النهاية
// اذا كان الطلب هو رفع صورة
if (($_POST['upload'] == 'ok')) {
// اذا تم رفع الملف بنجاح وكان أصغر من الحجم المخصص
if (($_FILES['userfile']['error'] == 0) && (is_uploaded_file($_FILES['userfile']['tmp_name'])) && ($_FILES['userfile']['size'] < $_POST['MAX_FILE_SIZE'])){
$filename = basename($_FILES['userfile']['name']); // اسم الملف المرفوع
$uploadfile = $uploaddir . $filename; // مسار الملف
print '<pre>';
// اذا تم نقل الملف من التيمب الى المجلد الذي حددناه في $uploaddir
if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
print "تم رفع الملف بنجاح
رابط الملف\n <a href='uploads/$filename' target=_blank>$filename</a>\n\n";
}
else print "لم يتم رفع الملف";
print "هذه معلومات مفيدة عن الملف:\n\n";
print_r($_FILES);
print "</pre>";
}
else print 'حدث خطأ أثناء رفع الملف أو الملف الذي تريد رفعه أكبر من الحجم المسموح';
}
?>
<br><br>
<form enctype="multipart/form-data" action="up.php" method="post">
<input type="file" name="userfile"><br><br>
<input type="hidden" name="MAX_FILE_SIZE" value="1048576"> <!-- القيمة بالبايت 1048576 بايت = 1 ميجا بايت -->
<input type="hidden" name="upload" value="ok">
<input type="submit" value=" رفـــع ">
</form>
</body>
</html>
اذا بدك تحدد انواع الملفات وتخليها صور مثلا ( gif , png , jpeg , jpg ) فالمقبض الأول هو لاحقة الملف المرفوع
أولا اعمل مقارنة بين اللاحقة و بين الأنواع المتاحة
ثانياً: المقبض الثاني
والأهم هو
كود PHP:
$_FILES['userfile']['type']
اعمل مقارنة بين $_FILES['userfile']['type'] و بين الصيغ اللي انت محددها
عند رفع اي ملف الى الجهاز فسيذهب أولا الى مجلد التيمب الافتراضي في الجهاز وسيكون اسمه غير مكرر مثلاً: php39.tmp
الدالة move_uploaded_file تقوم بنقله من التيمب الى مجلد uploads وايضاً نسميه باسم نحن نختاره
(اذا كان يوجد ملف بنفس الاسم سيتم استبداله تلقائياً)
طبعا هذا نموذج مبدأئي يحتاج الى حماية أكثر ويرفع كل انواع الملفات انتبه تحطه لزوارك بتلاقي موقعك تاني يوم مخترق
في المرفقات المجلدات مع ملف الرفع