فایل موجود در پوشه uploads را با استفاده از تابع rename در PHP به یک نام جدید امن تغییر نام دهید و پس از موفقیت، لینک دانلود فایل جدید را نمایش دهید.
5.0 بازدید آخرین ویرایش در 202 روز قبل ساعت 02:53 0.0
برای این سؤال از تابع rename(oldPath, newPath) استفاده کنید؛ ابتدا با file_exists بررسی کنید که فایل مبدا موجود است و با file_exists برای مقصد مطمئن شوید نام جدید قبلاً وجود ندارد. قبل از تغییر نام نام جدید را با توابعی مانند basename یا preg_replace برای حذف کاراکترهای ناامن و pathinfo مدیریت کنید و با is_writable(dirname($oldPath)) مجوز نوشته شدن در پوشه را چک کنید. در انتها پس از اجرای rename با بررسی مقدار بازگشتی، لینک دانلود را با urlencode روی نام فایل تولید کرده و خطاها را بهصورت مناسب هندل کنید؛ در محیط آپلود از move_uploaded_file پیش از rename در صورت نیاز استفاده کنید و همیشه مسیرها را با realpath یا مسیر مطلق امن کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
یک نکته کلیدی این است که پیش از اجرای rename مطمئن شویم مسیر مبدا و مقصد هر دو معتبر و امن هستند و نام جدید بدون کاراکترهای ناامن است. استفاده از basename یا pathinfo برای ساخت نام امن و استفاده از urlencode روی نام فایل برای لینک دانلود ضروری است. بررسی وجود فایل مبدا با file_exists و عدم وجود نام مقصد در کنار بررسی writable بودن پوشه (is_writable(dirname($oldPath))) از بروز خطاها جلوگیری میکند. همچنین در محیط آپلود بهتر است move_uploaded_file را قبل از rename به کار بریم و همیشه از مسیر مطلق استفاده کنیم. در نهایت مقدار بازگشتی rename را بررسی کرده و خطاها را با پیام مناسب گزارش دهید.
گزارش