الفرق بين المراجعتين لصفحة: «PHP/move uploaded file»
جميل-بيلوني (نقاش | مساهمات) إضافة محتويات الصفحة. |
|||
سطر 47: | سطر 47: | ||
تتأكَّد الدالة <code>move_uploaded_file()</code> من سلامة تنفيذ العمليَّة عبر السماح للملفات المرفوعة بوساطة PHP فقط بالانتقال إلى الموقع المعطى. | تتأكَّد الدالة <code>move_uploaded_file()</code> من سلامة تنفيذ العمليَّة عبر السماح للملفات المرفوعة بوساطة PHP فقط بالانتقال إلى الموقع المعطى. | ||
تحذير: إن كان الملف موجودًا في الموقع المراد نقله إليه مسبقًا، فسيُستبدل حينئذِ. | |||
== انظر أيضًا == | == انظر أيضًا == |
المراجعة الحالية بتاريخ 02:30، 28 أبريل 2018
(PHP 4 >= 4.0.3, PHP 5, PHP 7)
تنقل الدالة move_uploaded_file()
ملفًا مرفوعًا إلى موقع جديد.
الوصف
bool move_uploaded_file ( string $filename , string $destination )
تتحقَّق هذه الدالة إن كان الملف filename
مرفوعًا بطريقة صحيحة (أي أنَّه رُفِع باستعمال الطريقة POST) ثمَّ تنقله إلى الموقع destination
المعطى.
التحقُّق الذي تجريه الدالة له أهمية كبيرة إذ يمكن مصادفةً أن تؤدي أي عمليَّة تُجرى على الملفات المرفوعة إلى إظهار محتواها للمستخدم أو المستخدمين الآخرين الموجودين على النظام ذاته.
المعاملات
filename
اسم الملف المرفوع المراد نقله.
destination
الموقع المراد نقل الملف إليه.
القيم المعادة
تُعاد القيمة TRUE
عند نجاح العمليَّة.
إن كان المعامل filename
ملفًا مرفوعًا بطريقة غير صحيحة، فلن يُتخذ أي إجراء وستُعاد القيمة FALSE
.
إن كان العامل filename
ملفًا مرفوعًا بطريقة صحيحة ولكن لا يمكن نقله لعدَّة أسباب، فلن يُتخذ أي إجراء وستُعاد القيمة FALSE
بالإضافة إلى إصدار تنبيه.
أمثلة
المثال 1: رفع ملفات متعدِّدة
<?php
$uploads_dir = '/uploads';
foreach ($_FILES["pictures"]["error"] as $key => $error) {
if ($error == UPLOAD_ERR_OK) {
$tmp_name = $_FILES["pictures"]["tmp_name"][$key];
// (filesystem traversal attacks) هجمات تجاوز نظام الملفات basename() ربما تمنع الدالة
// إجراء المزيد من عمليات التحقُّق من صحة وسلامة اسم الملف قد يكون كافيًا
$name = basename($_FILES["pictures"]["name"][$key]);
move_uploaded_file($tmp_name, "$uploads_dir/$name");
}
}
?>
ملاحظات
تأخذ الدالة move_uploaded_file()
الوضع الآمن (safe_mode) والمتغير open_basedir
بالحسبان. على أيِّ حال، ستُطبَّق القيود على المسار destination
فقط عند السماح بنقل الملفات المرفوعة إليه إذ قد يتعارض اسم الملف filename
مع بعض القيود تلك.
تتأكَّد الدالة move_uploaded_file()
من سلامة تنفيذ العمليَّة عبر السماح للملفات المرفوعة بوساطة PHP فقط بالانتقال إلى الموقع المعطى.
تحذير: إن كان الملف موجودًا في الموقع المراد نقله إليه مسبقًا، فسيُستبدل حينئذِ.
انظر أيضًا
- الدالة
is_uploaded_file()
: تتأكد من عمليَّة رفع الملف باستعمال HTTP POST. - الدالة
rename()
: تعيد تسمية ملف أو مجلَّد ما. - التحكم برفع الملفات للاطلاع على المزيد من الأمثلة البسيطة شائعة الاستعمال.