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

نویسنده

  • 1400/3/1
  • 0
  • 48
3 سال پیش| برنامه‌نویسی وب

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

چطور تصاویر و فایل‌ها را از پوشه‌های غیر 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 پاس داده‌ام و در نهایت تصویر مورد نظر در صفحه به من نمایش داده خواهد شد.

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

 

به‌روز رسانی: 1403/8/2
توی وبسایتم سعی می‌کنم محتوایی که تصور کنم ارزشمنده و به بقیه کمکی می‌کنه رو منتشر کنم. امیدوارم از مطالب وبسایت بتونید استفاده کنید و به کارتون بیاد. در ضمن اگه پروژه‌ی تحت وبی دارید که نیاز به برنامه‌نویسی و اجرا داره، می‌تونید با شماره انتهای صفحه با من تماس بگیرید تا در موردش با هم صحبت کنیم.


دیدگاه کاربران

ثبت دیدگاه

آدرس ایمیل شما منتشر نخواهد شد. فیلدهای الزامی مشخص شده اند*