دوره‌ها / آموزش جامع PHP (از صفر تا استادی) / مدیریت فایل (PHP File Handling)

مدیریت فایل (PHP File Handling)

30 دقیقه Article

مدیریت فایل‌ها: حافظه‌یِ دائمیِ سیستم 📂📄

گاهی اوقات نیاز دارید اطلاعات را به جایِ دیتابیس، در فایل‌هایِ متنی ذخیره کنید یا تنظیماتِ سیستم را از یک فایل بخوانید. PHP تسلطِ کاملی بر سیستمِ فایل (Filesystem) دارد.

توابعِ سریع: readfile()

ساده‌ترین راه برایِ خواندنِ یک فایل و چاپِ مستقیمِ آن در خروجی.

{code_block('echo readfile("webdictionary.txt");')}

چک کردنِ وجودِ فایل:

قبل از هر عملیاتی، حتماً چک کنید فایل وجود دارد یا خیر:

{code_block('if (file_exists("test.txt")) { ... }')}
دسترسی‌ها (Permissions): اگر سرورِ لینوکسی دارید، مطمئن شوید که کاربرِ www-data یا وب‌سرور، اجازه‌یِ خواندن (Read) و نوشتن (Write) در آن پوشه را دارد (CHMOD).
توابعِ پرقدرت: توابعی مثل file_get_contents() و file_put_contents() راهکارهایِ "All-in-one" برایِ خواندن و نوشتنِ سریع هستند بدونِ اینکه درگیرِ باز و بسته کردنِ هندلر شوید.

گرفتنِ حجم فایل:

{code_block('echo filesize("test.txt");')}
امنیتِ نامِ فایل: هنگامِ کار با فایل‌ها، همیشه ورودیِ کاربر را با basename() تمیز کنید تا هکرها نتوانند با استفاده از ../ به فایل‌هایِ حساسِ سیستمِ‌عامل دسترسی پیدا کنند.
<hr style="margin: 50px 0; border: 0; border-top: 1px dashed rgba(255,255,255,0.1);">

بخش تخصصی: مهندسی پیشرفته و امنیت در PHP 🐘⚙️

درکِ عمیقِ مفاهیمِ پیشرفته، تفاوتِ بینِ یک کدنویسِ معمولی و یک معمارِ نرم‌افزار را رقم می‌زند.

۱. بهینه‌سازی I/O و بافرینگ

در هنگامِ کار با فایل‌هایِ حجیم، هرگز کلِ فایل را به یکباره در حافظه (RAM) بارگذاری نکنید. استفاده از Streams و توابعِ fopen/fgets به شما اجازه می‌دهد فایل را خط به خط پردازش کنید که باعث می‌شود مصرفِ حافظه همیشه در کمترین سطحِ ممکن باقی بماند.

۲. امنیتِ نشست‌ها (Session Security)

مهم‌ترین خطر در مدیریتِ کاربران، Session Hijacking است. همیشه بعد از لاگین کردنِ کاربر، از session_regenerate_id(true) استفاده کنید تا شناسه‌یِ نشستِ قبلی باطل شود. همچنین فلگ‌هایِ HttpOnly و Secure را برای کوکی‌ها فعال کنید.

۳. استانداردهایِ مدرن و Autoloading

در پروژه‌هایِ بزرگ، استفاده از include دستی فاجعه‌بار است. استانداردِ PSR-4 و استفاده از Composer به شما اجازه می‌دهد کلاس‌ها را فقط در زمانی که واقعاً نیاز هستند بارگذاری کنید (Lazy Loading)، که سرعتِ لود شدنِ کلِ اپلیکیشن را به شدت بالا می‌برد.

نکته استراتژیک: به جایِ استفاده از توابعِ سنتی، سعی کنید به سمتِ Object-Oriented Programming (OOP) حرکت کنید. اکثرِ کتابخانه‌هایِ پیشرفته‌یِ PHP مثل DateTime و PDO از این پارادایم استفاده می‌کنند.

تمرین‌های عملی

برای تثبیت یادگیری این درس تمرین‌های زیر را حل کنید

چک کردن وجود فایل Easy
سوال تمرین

با استفاده از تابعِ مناسب، چک کنید آیا فایلی به نام "data.txt" وجود دارد یا خیر. نتیجه را چاپ کنید.

پاسخ تمرین
PHP
<?php
echo file_exists("data.txt");
?>

آماده رفتن به درس بعدی هستید؟

این درس را به پایان رساندید و می‌توانید به درس بعدی بروید.