چطور تصاویر و فایلها را از پوشههای غیر 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 پاس دادهام و در نهایت تصویر مورد نظر در صفحه به من نمایش داده خواهد شد.
این کار میتواند باعث امنیت بیشتر فایلهای ما شود و از دسترسی مستقیم و غیر مجاز به فایلها جلوگیری کند و در کل بستگی به سناریویی دارد که در سر میپرورانیم.
توی وبسایتم سعی میکنم محتوایی که تصور کنم ارزشمنده و به بقیه کمکی میکنه رو منتشر کنم. امیدوارم از مطالب وبسایت بتونید استفاده کنید و به کارتون بیاد. در ضمن اگه پروژهی تحت وبی دارید که نیاز به برنامهنویسی و اجرا داره، میتونید با شماره انتهای صفحه با من تماس بگیرید تا در موردش با هم صحبت کنیم.