چطور تصاویر و فایل‌ها را از پوشه‌های غیر public فراخوانی کنیم و نمایش دهیم؟

به هر دلیل ممکن است قصد داشته باشیم روی Host خود اطلاعاتی را در پوشه‌ای غیر از public_html قرار داده، ولی آن را از طریق فایلی در پوشه‌ی public_html فراخوانی کنیم. اما به روش‌های معمول این کار شدنی نیست.

در زیر روشی به همراه یک مثال برای فراخوانی یک تصویر از root را نمایش داده‌ام و به اصطلاح قصد دارم فایل و تصویر خود را از طریق صفحه serve کنم.

یک فایل php با نام index.php در public_html ایجاد می‌کنم که حاوی کد زیر باشد.

<?php
header('Content-Type: image/jpeg');
$file = 'image_name.jpg'; // or $_GET['img']
echo file_get_contents('../storage/'.$file);
?>

توضیح: فرض بر این است من در قسمت root سرور خود یا به اصطلاح قبل از public_html، یک پوشه به نام storage برای ذخیره تصاویر خود در نظر گرفته‌ام.

header ابتدایی نوع فایل را تعیین کرده است. سپس به هر طریق نام و پسوند فایل را به متغیری پاس می‌دهم. این نام می‌تواند از هر جایی بیاید. مثلاً دیتابیس یا توسط کاربر و… و از طریق متدهای مختلفی نیز می‌تواند دریافت شود. بدیهی است اگر به فرض قصد استفاده از $_GET را داشته باشیم، حتماً پارامترهای ورودی باید validate شوند.

در نهایت هم متغیر خود که حاوی نام و پسوند تصویر من است را به همراه محل نسبی ذخیره‌سازی تصاویر به تابع file_get_contents پاس داده‌ام و در نهایت تصویر مورد نظر در صفحه به من نمایش داده خواهد شد.

این کار می‌تواند باعث امنیت بیشتر فایل‌های ما شود و از دسترسی مستقیم و غیر مجاز به فایل‌ها جلوگیری کند و در کل بستگی به سناریویی دارد که در سر می‌پرورانیم.

درباره نویسنده: احسان

مطالب زیر را حتما بخوانید