آموزش اصل طلایی برای اجرای اسکریپت های PHP
زبان PHP یکی از پرکاربردترین زبانهای برنامهنویسی سمت سرور است که در طراحی وبسایتهای پویا و تعاملی به کار میرود. مقاله با معرفی این زبان و کاربردهای گسترده آن آغاز میشود تا خواننده با اهمیت و جایگاه PHP در دنیای توسعه وب آشنا شود. سپس نحوه نصب PHP روی سیستمهای مختلف از جمله ویندوز (با ابزارهایی مانند XAMPP یا WAMP) و لینوکس (با ترکیب Apache، PHP و MySQL) توضیح داده میشود تا محیط مناسبی برای اجرای اسکریپتها فراهم شود.
پس از نصب، اجرای اسکریپتهای PHP به دو روش اصلی آموزش داده میشود: اجرای مستقیم از طریق مرورگر و اجرای خط فرمان (CLI). این دو روش، کاربردهای متفاوتی دارند و آشنایی با آنها به توسعهدهنده امکان میدهد در موقعیتهای مختلف به راحتی از PHP استفاده کند. همچنین ساخت یک فایل PHP ساده و اجرای اولیه آن به صورت عملی به همراه مثالهای ساده آموزش داده میشود تا پایه محکمی برای یادگیری بیشتر فراهم گردد.
ارتباط PHP با پایگاه داده، بهخصوص MySQL، از اهمیت بالایی برخوردار است زیرا اکثر وبسایتهای دینامیک نیازمند ذخیره و بازیابی داده هستند. مقاله به طور کامل نحوه اتصال PHP به MySQL و مدیریت دادهها را آموزش میدهد. همچنین مباحث مهمی مانند اشکالزدایی (debug) اسکریپتها و مدیریت خطاها و لاگها در PHP بررسی میشود تا برنامهنویسان بتوانند مشکلات را شناسایی و رفع کنند.
در ادامه، تعامل PHP با فرمهای HTML و استفاده از متدهای GET و POST برای ارسال دادهها به اسکریپتها آموزش داده میشود که از پایههای طراحی وب تعاملی است. اجرای اسکریپتها با Cron Job، آپلود اسکریپت در هاستهای اشتراکی، و تفاوت نسخههای مختلف PHP نیز مورد بررسی قرار میگیرند تا خوانندگان بتوانند در محیطهای متنوع و با توجه به نسخه مورد استفاده، اسکریپتهای خود را به درستی اجرا و مدیریت کنند. در نهایت، نکات حیاتی امنیتی در اجرای اسکریپتهای PHP ارائه میشود تا پروژههای توسعه داده شده در برابر تهدیدات محافظت شوند و به شکل امن و پایدار در فضای وب باقی بمانند.
لیست عناوین مقاله آموزشی «نحوه اجرای اسکریپتهای PHP»:
-
معرفی زبان PHP و کاربردهای آن
-
نصب PHP روی ویندوز (XAMPP یا WAMP)
-
نصب PHP روی لینوکس (Apache + PHP + MySQL)
-
اجرای اسکریپت PHP از طریق مرورگر
-
اجرای اسکریپت PHP از طریق خط فرمان (CLI)
-
ساخت فایل PHP ساده و اجرای آن
-
اتصال PHP به پایگاه داده MySQL
-
اشکالزدایی (debug) اسکریپتهای PHP
-
مدیریت خطاها و لاگها در PHP
-
استفاده از فرم HTML و ارسال اطلاعات به PHP
-
استفاده از GET و POST در اسکریپتهای PHP
-
اجرای اسکریپت PHP با Cron Job در سرور
-
آپلود و اجرای اسکریپت PHP در هاست اشتراکی
-
تفاوت بین نسخههای PHP و نکاتی در اجرای اسکریپتها
-
نکات امنیتی در اجرای اسکریپتهای PHP
🧩 معرفی زبان PHP و کاربردهای آن
✅ PHP چیست؟
PHP مخفف عبارت PHP: Hypertext Preprocessor است (که یک عبارت بازگشتی است) و یک زبان اسکریپتی سمت سرور (server-side) است که برای توسعه وب طراحی شده است.
PHP رایگان، متنباز (open source) و کراسپلتفرم (قابل اجرا روی ویندوز، لینوکس، مک و...) است.
🎯 ویژگیهای اصلی زبان PHP
-
اجرا روی سمت سرور: کدهای PHP روی سرور اجرا شده و خروجی HTML به مرورگر ارسال میشود.
-
یادگیری ساده: برای مبتدیان مناسب و در عین حال قدرتمند برای حرفهایها.
-
هماهنگ با HTML: میتوان آن را بهصورت ترکیبی در فایل HTML استفاده کرد.
-
پشتیبانی از پایگاهدادههای متنوع: بهویژه MySQL، PostgreSQL، SQLite و...
-
پشتیبانی از برنامهنویسی شیگرا (OOP).
-
دارای جامعهی بزرگ، منابع زیاد آموزشی و فریمورکهای معروف (مثل Laravel).
🛠 کاربردهای PHP
کاربرد | توضیح |
---|---|
🌐 طراحی سایت داینامیک | سایتهایی که با پایگاهداده کار میکنند، مثل پنل مدیریت، فرمها، کاربران |
📥 پردازش فرمها | مانند فرم ثبتنام، ورود، تماس با ما، جستجو و... |
🛒 ساخت فروشگاه اینترنتی | با استفاده از PHP میتوان فروشگاههایی مانند دیجیکالا ساخت |
📂 مدیریت فایلها و آپلود | آپلود عکس، ویدیو، فایلها و نمایش آنها به کاربر |
📧 ارسال ایمیل | امکان ارسال ایمیلهای اطلاعرسانی، تایید عضویت، فاکتور و... |
🧾 تولید فایلهای PDF و Excel | تولید خروجیهای قابل دانلود برای گزارشات یا فاکتورها |
🔐 احراز هویت و امنیت | ورود/خروج کاربر، مدیریت سشنها، رمزگذاری اطلاعات |
⏱ اجرای اسکریپت خودکار | با استفاده از Cron Job در سرور برای وظایف زمانبندیشده |
🌍 چه سایتهایی با PHP ساخته شدهاند؟
برخی از سایتها و پلتفرمهای معروفی که با PHP نوشته شدهاند:
-
WordPress (معروفترین CMS دنیا)
-
Facebook (نسخه اولیه آن با PHP بود)
-
Wikipedia
-
Drupal، Joomla
-
Magento (فروشگاهساز)
✅ نتیجهگیری
PHP یکی از پرمصرفترین زبانهای توسعه وب است. اگر هدف شما ساخت سایتهای پویا، پردازش فرمها، تعامل با پایگاهداده یا ساخت وبسرویس است، PHP انتخاب مناسبی خواهد بود.
این زبان حتی امروز با وجود رقبا، همچنان قدرتمند، محبوب و توسعهیافته باقی مانده است.
🧰 نصب PHP روی ویندوز (با استفاده از XAMPP یا WAMP)
برای اجرای اسکریپتهای PHP در ویندوز، بهترین و سادهترین روش، استفاده از نرمافزارهایی مانند XAMPP یا WAMP است که محیطی شبیه به سرور واقعی (Apache + PHP + MySQL) روی سیستم محلی شما ایجاد میکنند.
🔹 روش اول: نصب PHP با XAMPP
✅ XAMPP چیست؟
XAMPP مجموعهای شامل:
-
Apache (وبسرور)
-
MySQL / MariaDB (پایگاه داده)
-
PHP
-
phpMyAdmin (مدیریت پایگاه داده با رابط گرافیکی)
است که با یک نصب ساده، همهی این ابزارها را در اختیار شما میگذارد.
🧾 مراحل نصب XAMPP:
-
دانلود XAMPP
-
از سایت رسمی:
👉 https://www.apachefriends.org
-
-
نصب نرمافزار
-
فایل
.exe
را اجرا کرده و طبق مراحل پیش بروید. -
در بخش انتخاب کامپوننتها، تیک
Apache
,MySQL
,PHP
,phpMyAdmin
را حتماً بزنید.
-
-
اجرای XAMPP
-
پس از نصب،
XAMPP Control Panel
را اجرا کنید. -
سرویسهای
Apache
وMySQL
را Start کنید.
-
-
ایجاد فایل PHP
-
به مسیر
C:xampphtdocs
بروید. -
یک فایل به نام مثلاً
test.php
بسازید و در آن کد زیر را قرار دهید:php
CopyEdit
<?php echo "سلام دنیا!"; ?>
-
-
اجرای فایل در مرورگر
-
مرورگر را باز کنید و آدرس زیر را وارد کنید:
arduino
CopyEdit
http://localhost/test.php
-
باید متن «سلام دنیا!» را ببینید.
-
🔹 روش دوم: نصب PHP با WAMP
✅ WAMP چیست؟
WAMP نیز مشابه XAMPP است و شامل:
-
Windows
-
Apache
-
MySQL
-
PHP
است، ولی ظاهر گرافیکیتری دارد و کنترل بیشتری روی تنظیمات نسخه PHP و MySQL به شما میدهد.
🧾 مراحل نصب WAMP:
-
دانلود WAMP
-
از سایت رسمی:
👉 https://www.wampserver.com
-
-
نصب نرمافزار
-
نصب ساده و مشابه XAMPP است، اما حتماً نسخه 64 یا 32 بیتی متناسب با ویندوزتان را انتخاب کنید.
-
-
اجرای WAMP
-
پس از اجرا، آیکون WAMP در نوار پایین ویندوز سبز میشود (نشانه فعال بودن Apache و MySQL).
-
-
ساخت فایل PHP
-
به مسیر
C:wamp64www
بروید (یاwampwww
). -
فایل
test.php
ایجاد کرده و کد سادهای بنویسید.
-
-
مشاهده در مرورگر
-
آدرس زیر را در مرورگر وارد کنید:
arduino
CopyEdit
http://localhost/test.php
-
🆚 XAMPP یا WAMP؟ کدام بهتر است؟
ویژگی | XAMPP | WAMP |
---|---|---|
رابط کاربری | سادهتر | گرافیکیتر |
قابل نصب روی لینوکس | بله | فقط ویندوز |
مدیریت آسان سرویسها | بله | بله |
پشتیبانی از MariaDB | بله | معمولاً MySQL |
✅ نتیجه: اگر مبتدی هستید، XAMPP پیشنهاد میشود. اگر دنبال کنترل بیشتر و ظاهر گرافیکیتر هستید، WAMP گزینهی خوبی است.
🐧 نصب PHP روی لینوکس (Apache + PHP + MySQL)
برای اجرای اسکریپتهای PHP روی سیستمعامل لینوکس (مانند Ubuntu، Debian، CentOS)، باید سه جزء اصلی را نصب کنیم:
🔹 Apache: وبسرور
🔹 PHP: زبان اسکریپتنویسی
🔹 MySQL / MariaDB: پایگاه داده
این ترکیب به نام LAMP شناخته میشود:
Linux + Apache + MySQL + PHP
🧾 مراحل نصب در Ubuntu/Debian (با apt)
1. بهروزرسانی سیستم:
bash
sudo apt update sudo apt upgrade
2. نصب Apache:
bash
sudo apt install apache2
برای بررسی اینکه Apache نصب شده:
bash
sudo systemctl status apache2
و سپس در مرورگر بزن:
arduino
http://localhost
باید صفحه پیشفرض Apache نمایش داده شود.
3. نصب PHP:
bash
sudo apt install php libapache2-mod-php
برای بررسی نسخه PHP:
bash
php -v
4. نصب MySQL:
bash
sudo apt install mysql-server
برای ایمنسازی MySQL:
bash
sudo mysql_secure_installation
5. نصب phpMyAdmin (اختیاری، برای مدیریت پایگاه داده با رابط گرافیکی):
bash
sudo apt install phpmyadmin
در حین نصب، گزینه Apache را انتخاب کن و رمز root را تعیین کن.
سپس با رفتن به:
arduino
http://localhost/phpmyadmin
میتوانی وارد محیط phpMyAdmin شوی.
6. تست اجرای فایل PHP:
-
به پوشه ریشه وب برو (پیشفرض
/var/www/html
) -
فایل
test.php
بساز:
bash
sudo nano /var/www/html/test.php
-
این کد را بنویس:
php
<?php phpinfo(); ?>
-
مرورگر را باز کن و بزن:
arduino
http://localhost/test.php
اگر صفحه مشخصات PHP را دیدی، یعنی همهچیز درست نصب شده است.
🧾 مراحل نصب در CentOS/RHEL (با yum/dnf)
برای نسخههای مبتنی بر RedHat:
bash
sudo dnf install httpd sudo systemctl start httpd sudo systemctl enable httpd sudo dnf install php php-mysqlnd sudo dnf install mariadb-server sudo systemctl start mariadb sudo systemctl enable mariadb
🛠 نکات تکمیلی:
-
ریشه پروژهها معمولاً در مسیر:
css
CopyEdit
/var/www/html
قرار دارد. برای تغییر مجوز دسترسی:
bash
CopyEdit
sudo chown -R $USER:www-data /var/www/html
-
برای تغییر نسخه PHP (اگر چند نسخه نصب است)، میتوان از ابزارهایی مثل
update-alternatives
یاphpbrew
استفاده کرد.
✅ نتیجهگیری:
با نصب Apache، PHP و MySQL روی لینوکس، میتوان یک سرور قدرتمند محلی یا آنلاین برای اجرای پروژههای PHP راهاندازی کرد. این روش شبیه به محیط سرورهای واقعی است و برای توسعهدهندگان بسیار مناسب است.
🌐 اجرای اسکریپت PHP از طریق مرورگر
پس از نصب PHP و وبسرور (مانند Apache)، نوبت به اجرای اسکریپتهای PHP در مرورگر میرسد. این کار بسیار ساده است و با رعایت چند نکته میتوانید اسکریپتهای خود را تست و اجرا کنید.
✅ مراحل اجرای اسکریپت PHP در مرورگر
1. 📁 قرار دادن فایل PHP در پوشه سرور
بسته به سیستمعامل و نرمافزار مورد استفاده:
سیستمعامل | نرمافزار | مسیر فایلها |
---|---|---|
ویندوز | XAMPP | C:xampphtdocs |
ویندوز | WAMP | C:wamp64www |
لینوکس | Apache | /var/www/html |
📌 مثال: اگر فایل شما hello.php
نام دارد، باید در یکی از مسیرهای بالا قرار گیرد.
2. 🧾 محتوای یک اسکریپت ساده PHP
مثلاً فایلی با نام hello.php
ایجاد کرده و کد زیر را در آن قرار دهید:
php
<?php echo "سلام دنیا!"; ?>
3. 🌍 باز کردن فایل در مرورگر
مرورگر را باز کرده و آدرس را اینگونه وارد کنید:
arduino
http://localhost/hello.php
📌 اگر فایل در زیردوشهای (مثلاً project1
) قرار دارد:
bash
http://localhost/project1/hello.php
✅ نتیجه: خروجی کد PHP (مثلاً "سلام دنیا!") در مرورگر نمایش داده میشود.
⚠️ نکات مهم
-
فایل PHP را مستقیماً با دوبار کلیک باز نکنید! اگر فایل را با دوبار کلیک یا بهصورت
file:///C:/...
باز کنید، مرورگر کد PHP را اجرا نخواهد کرد، بلکه آن را مانند یک متن خام نشان میدهد. -
آدرس باید با
http://localhost
یا IP سرور شروع شود تا از طریق Apache یا Nginx پردازش شود. -
اگر با خطا روبرو شدید (مثلاً "404 Not Found" یا نمایش کد PHP)، حتماً بررسی کنید که:
-
فایل در مسیر صحیح قرار دارد
-
Apache اجرا شده باشد (
Start
در کنترل پنل XAMPP یا WAMP) -
فایل پسوند
.php
داشته باشد، نه.html
یا.txt
-
🎯 تست حرفهایتر
میتوانید از تابع phpinfo()
برای مشاهده تنظیمات PHP سرور استفاده کنید:
php
<?php phpinfo(); ?>
و سپس آدرس را در مرورگر باز کنید:
arduino
http://localhost/phpinfo.php
💻 اجرای اسکریپت PHP از طریق خط فرمان (CLI)
PHP فقط برای صفحات وب نیست! میتوان اسکریپتهای PHP را بدون مرورگر، مستقیماً از خط فرمان (Command Line Interface - CLI) اجرا کرد. این روش برای برنامهنویسی اسکریپتهای اتوماسیون، تست، کرونجابها (Cron Jobs)، یا اجرای سریع یک اسکریپت ساده بسیار مفید است.
✅ مراحل اجرای اسکریپت PHP از خط فرمان
1. ✍️ ساخت یک فایل PHP
مثلاً فایل test.php
را بسازید و کد زیر را در آن بنویسید:
php
<?php echo "اجرای PHP از طریق CLI با موفقیت انجام شد!
";
توجه: از
برای ایجاد خط جدید در ترمینال استفاده میشود، نه
<br>
.
2. 📂 باز کردن خط فرمان
بسته به سیستمعامل:
سیستمعامل | ابزار خط فرمان |
---|---|
ویندوز | cmd یا PowerShell |
لینوکس | ترمینال (Ctrl+Alt+T ) |
مکاواس | Terminal |
3. ▶️ اجرای اسکریپت با دستور php
به مسیری بروید که فایل .php
در آن قرار دارد و سپس بنویسید:
bash
php test.php
خروجی:
objectivec
اجرای PHP از طریق CLI با موفقیت انجام شد!
🧪 مثال پیشرفتهتر: دریافت ورودی از خط فرمان
php
<?php $name = readline("نام خود را وارد کنید: "); echo "سلام، $name!
";
و اجرا:
bash
php greeting.php
🛠 نکات مفید:
-
میتوانید PHP را مانند سایر زبانهای اسکریپتی (مثل Python) در کرونجابها یا اسکریپتهای Bash استفاده کنید.
-
برای مشاهده محل نصب PHP در سیستم:
-
ویندوز:
bash
CopyEdit
where php
-
لینوکس/مک:
bash
CopyEdit
which php
-
⚠️ خطای رایج:
اگر دستور php
شناخته نشد، یعنی PHP به مسیر سیستم (PATH) اضافه نشده. باید مسیر نصب PHP را به متغیر محیطی PATH اضافه کنید.
✅ نتیجهگیری:
CLI یکی از قدرتمندترین امکانات PHP است. با استفاده از آن میتوان اسکریپتها را سریع، بدون نیاز به مرورگر و با امکانات بیشتری مانند دریافت پارامتر، ساخت ابزارهای خط فرمان، یا اجرای زمانبندیشده استفاده کرد.
🛠 ساخت فایل PHP ساده و اجرای آن
در این بخش یاد میگیریم چگونه یک فایل ساده PHP بسازیم و آن را از طریق مرورگر یا خط فرمان اجرا کنیم. این آموزش پایهایترین قدم برای شروع برنامهنویسی PHP است.
✅ مرحله 1: ساخت فایل PHP
-
ابتدا یک ویرایشگر متن باز کنید (مثل Notepad، Notepad++، VS Code یا هر ویرایشگر دلخواه دیگر).
-
یک فایل جدید ایجاد کرده و کد زیر را در آن بنویسید:
php
<?php echo "سلام دنیا!"; ?>
-
فایل را با پسوند
.php
ذخیره کنید. مثلاً:
hello.php
✅ مرحله 2: اجرای فایل PHP
🔸 روش 1: از طریق مرورگر (Web Server)
-
فایل
hello.php
را در مسیر وبسرور قرار دهید:
نرمافزار | مسیر فایلها |
---|---|
XAMPP | C:xampphtdocs |
WAMP | C:wamp64www |
Apache (لینوکس) | /var/www/html |
-
مرورگر را باز کرده و آدرس را وارد کنید:
arduino
http://localhost/hello.php
🔹 اگر در زیردوشهای است:
arduino
http://localhost/myproject/hello.php
📌 خروجی باید این باشد:
سلام دنیا!
🔸 روش 2: از طریق خط فرمان (CLI)
اگر PHP در سیستم نصب باشد، میتوان فایل را مستقیم اجرا کرد:
bash
php hello.php
📌 خروجی در ترمینال:
سلام دنیا!
🔍 توضیح کد
php
<?php echo "سلام دنیا!"; ?>
-
<?php
نشاندهنده شروع کد PHP است. -
echo
برای چاپ متن استفاده میشود. -
?>
(اختیاری) پایان بلوک PHP است.
📌 نکات مهم
-
فایل PHP حتماً باید با
<?php
شروع شود. -
فایل PHP باید با پسوند
.php
ذخیره شود. -
برای اجرای درست در مرورگر، باید Apache یا Nginx فعال باشد.
🗄 اتصال PHP به پایگاه داده MySQL
یکی از مهمترین قابلیتهای PHP، امکان اتصال به پایگاهداده (Database) مانند MySQL/MariaDB است. در این آموزش یاد میگیریم چگونه از طریق کد PHP به پایگاهداده متصل شویم و اطلاعات را بخوانیم یا درج کنیم.
✅ پیشنیازها
-
MySQL نصب باشد (مثلاً همراه با XAMPP یا WAMP).
-
پایگاهدادهای ایجاد شده باشد (مثلاً با نام
testdb
). -
کاربر و رمز عبور مشخص باشد (مثلاً کاربر
root
بدون رمز).
✅ مراحل اتصال با mysqli
1. 🧾 کد اتصال ساده
php
<?php $host = "localhost"; $user = "root"; $password = ""; $dbname = "testdb"; // اتصال به پایگاه داده $conn = new mysqli($host, $user, $password, $dbname); // بررسی اتصال if ($conn->connect_error) { die("خطا در اتصال: " . $conn->connect_error); } echo "اتصال با موفقیت انجام شد!"; ?>
⚠️ اگر اتصال موفق نبود...
ممکن است خطایی مانند زیر ببینید:
pgsql
خطا در اتصال: Access denied for user 'root'@'localhost'
در این صورت:
-
بررسی کنید که MySQL در حال اجرا باشد.
-
رمز عبور یا نام دیتابیس را صحیح وارد کرده باشید.
✅ درج داده در جدول
فرض کنید جدول users
در پایگاه داده testdb
داریم:
sql
CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100) );
و کد درج:
php
<?php $conn = new mysqli("localhost", "root", "", "testdb"); $name = "علی"; $email = "ali@example.com"; $sql = "INSERT INTO users (name, email) VALUES ('$name', '$email')"; if ($conn->query($sql) === TRUE) { echo "اطلاعات با موفقیت ثبت شد."; } else { echo "خطا در ثبت: " . $conn->error; } $conn->close(); ?>
✅ خواندن دادهها از جدول
php
<?php $conn = new mysqli("localhost", "root", "", "testdb"); $sql = "SELECT id, name, email FROM users"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { echo "کاربر: " . $row["name"] . " - ایمیل: " . $row["email"] . "<br>"; } } else { echo "دادهای یافت نشد."; } $conn->close(); ?>
🧰 نکات امنیتی
-
برای جلوگیری از حملات SQL Injection حتماً از prepared statements استفاده کنید.
-
به جای استفاده مستقیم از دادههای کاربر در SQL، از
?
وbind_param()
استفاده نمایید.
🧪 نتیجه
PHP به راحتی میتواند به پایگاه داده MySQL متصل شود و دادهها را درج، خواندن، و مدیریت کند. این اتصال پایه بسیاری از وباپلیکیشنهای پویا مانند سیستمهای ثبتنام، فروشگاهها، وبلاگها و ... است.
🐞 اشکالزدایی (Debug) اسکریپتهای PHP
در فرآیند برنامهنویسی، خطاها اجتنابناپذیرند. برای پیدا کردن و رفع این خطاها، باید با روشهای اشکالزدایی (debugging) در PHP آشنا باشیم. در این آموزش روشهای رایج و حرفهای برای debug کردن اسکریپتهای PHP را بررسی میکنیم.
✅ 1. فعالسازی نمایش خطاها (Error Reporting)
برای اینکه خطاهای PHP را ببینید، باید آنها را فعال کنید:
php
<?php ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL); ?>
📌 این سه خط را در ابتدای فایل PHP قرار دهید. آنها تضمین میکنند که همه خطاها (حتی اخطارها و هشدارها) نمایش داده شوند.
✅ 2. بررسی گزارش خطاهای سرور (Apache/Nginx)
اگر خطایی در مرورگر نشان داده نمیشود، گزارش خطا (error log) سرور را بررسی کنید:
-
در XAMPP:
مسیر:C:xamppapachelogserror.log
-
در لینوکس (Apache):
مسیر:/var/log/apache2/error.log
✅ 3. استفاده از var_dump()
یا print_r()
برای بررسی محتویات متغیرها:
php
<?php $user = ["name" => "Ali", "age" => 30]; var_dump($user); print_r($user); ?>
📌 مناسب برای آرایهها و اشیاء.
✅ 4. استفاده از تابع debug_backtrace()
اگر بخواهید بفهمید چه تابعی یا کدی یک خطا را باعث شده:
php
<?php function test() { echo "<pre>"; print_r(debug_backtrace()); echo "</pre>"; } test(); ?>
✅ 5. استفاده از die()
یا exit()
برای توقف و بررسی
گاهی برای تست میتوانید اجرای برنامه را متوقف کرده و مقدار یک متغیر را ببینید:
php
<?php $result = query(); var_dump($result); die("برنامه در اینجا متوقف شد"); ?>
✅ 6. استفاده از IDE مناسب با پشتیبانی از Debug
استفاده از محیطهای حرفهای مانند:
-
Visual Studio Code با افزونه PHP Debug
-
PHPStorm (پشتیبانی داخلی از Xdebug)
✅ 7. نصب و استفاده از Xdebug
Xdebug یک افزونه پیشرفته برای اشکالزدایی است که امکانات زیر را فراهم میکند:
-
نمایش جزئیات کامل خطاها
-
تنظیم breakpoint در IDE
-
پروفایل عملکرد (performance profiling)
📌 برای نصب در XAMPP:
-
فایل
php.ini
را باز کنید. -
این خط را اضافه کنید (مسیر ممکن است متفاوت باشد):
ini
zend_extension = "C:xamppphpextphp_xdebug.dll"
-
سپس Apache را ریاستارت کنید.
✅ 8. استفاده از ابزارهای آنلاین مانند PHP Fiddle
اگر میخواهید سریع کدی را تست و debug کنید:
🧠 نکته پایانی
همیشه سعی کنید:
-
کد را ماژولار و قابل خواندن بنویسید.
-
از log گیری در فایلهای
.log
استفاده کنید. -
در محیط production نمایش خطا را غیرفعال کنید و فقط لاگگیری کنید.
⚠️ مدیریت خطاها و لاگها در PHP
در پروژههای واقعی، بهویژه در محیطهای production، باید خطاها را مدیریت کنیم، نه فقط نمایش دهیم. مدیریت درست خطاها و ثبت آنها در فایلهای لاگ باعث میشود بدون نمایش خطا به کاربر، بتوانیم مشکلات را بررسی و رفع کنیم.
✅ 1. سطوح خطا در PHP
PHP دارای سطوح مختلفی از خطاهاست:
نوع | توضیح |
---|---|
E_ERROR |
خطاهای بحرانی (مانند ناتوانی در اتصال به پایگاه داده) |
E_WARNING |
هشدار، ولی اجرای برنامه ادامه مییابد |
E_NOTICE |
اخطار کوچک (مانند استفاده از متغیر تعریفنشده) |
E_PARSE |
خطای نحوی (syntax error) |
E_ALL |
همه موارد بالا |
✅ 2. غیرفعال کردن نمایش خطا به کاربر (مناسب برای production)
در فایل php.ini
یا اول اسکریپت:
php
ini_set('display_errors', 0); // نمایش خطا به کاربر را غیرفعال میکند ini_set('log_errors', 1); // فعالسازی ثبت خطاها در فایل ini_set('error_log', 'errors.log'); // مسیر فایل لاگ error_reporting(E_ALL);
📁 نتیجه: خطاها در فایل errors.log
ثبت میشوند، ولی کاربر نمیبیند.
✅ 3. ثبت دستی خطا در لاگ با error_log()
میتوانید خودتان یک پیام دلخواه به لاگ اضافه کنید:
php
error_log("کاربر ناشناس سعی در دسترسی به صفحه ممنوعه داشت.");
📁 این پیام به مسیر تعریفشده در error_log
میرود.
✅ 4. ایجاد هندلر اختصاصی با set_error_handler()
میتوانید یک تابع اختصاصی برای مدیریت خطا تعریف کنید:
php
function customError($errno, $errstr, $errfile, $errline) { $log = "[$errno] $errstr در خط $errline در فایل $errfile"; error_log($log); echo "مشکلی در سیستم رخ داده است. لطفاً بعداً تلاش کنید."; } set_error_handler("customError");
✅ 5. مدیریت خطاهای بحرانی با register_shutdown_function()
برای خطاهایی مثل E_ERROR
که توسط set_error_handler
مدیریت نمیشوند:
php
register_shutdown_function(function() { $error = error_get_last(); if ($error !== NULL && $error['type'] === E_ERROR) { error_log("خطای بحرانی: " . $error['message']); } });
✅ 6. ثبت استثناها (Exception Handling)
در برنامهنویسی شیگرا، از try-catch
استفاده میشود:
php
try { throw new Exception("مشکلی پیش آمد!"); } catch (Exception $e) { error_log("استثنا: " . $e->getMessage()); }
🧪 فایل نمونه: مدیریت و لاگ خطا
php
<?php ini_set('display_errors', 0); ini_set('log_errors', 1); ini_set('error_log', 'errors.log'); error_reporting(E_ALL); function myErrorHandler($errno, $errstr, $errfile, $errline) { error_log("[$errno] $errstr در خط $errline"); } set_error_handler("myErrorHandler"); // مثال: echo $undefinedVar; // ایجاد Notice 5 / 0; // ایجاد Warning ?>
🧠 نکته امنیتی
در محیطهای production هرگز خطاها را مستقیماً به کاربر نمایش ندهید. این کار ممکن است اطلاعاتی درباره ساختار سایت شما افشا کند.
📝 استفاده از فرم HTML و ارسال اطلاعات به PHP
یکی از قابلیتهای اصلی PHP، دریافت داده از فرمهای HTML است. در این آموزش یاد میگیریم چگونه یک فرم ساده بسازیم و دادههای آن را در PHP پردازش کنیم.
✅ 1. ساخت فرم HTML
html
<form action="process.php" method="post"> <label>نام:</label> <input type="text" name="name" required><br><br> <label>ایمیل:</label> <input type="email" name="email" required><br><br> <input type="submit" value="ارسال"> </form>
📌 این فرم با متد POST
اطلاعات را به فایل process.php
ارسال میکند.
✅ 2. دریافت دادهها در PHP (process.php
)
php
<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { $name = $_POST["name"]; $email = $_POST["email"]; echo "سلام $name! ایمیل شما: $email"; } ?>
🔹 در این کد:
-
چک میکنیم که فقط در صورت
POST
بودن فرم، دادهها پردازش شوند. -
از
$_POST
برای دسترسی به دادههای فرم استفاده میکنیم.
✅ 3. تفاوت بین POST و GET
ویژگی | POST | GET |
---|---|---|
امنیت | امنتر (اطلاعات در URL نیست) | اطلاعات در URL دیده میشود |
اندازه داده | بدون محدودیت عملی | محدود (URL حداکثر 2048 کاراکتر) |
مناسب برای | فرمهای حساس (ورود، ثبتنام) | جستجو، فیلتر و لینک مستقیم |
✅ 4. نمونه فرم با متد GET
html
<form action="search.php" method="get"> <label>کلمه کلیدی:</label> <input type="text" name="q"> <input type="submit" value="جستجو"> </form>
در فایل search.php
:
php
<?php $keyword = $_GET['q']; echo "نتایج برای: " . htmlspecialchars($keyword); ?>
⚠️ 5. جلوگیری از حملات XSS
برای جلوگیری از اجرای کدهای مخرب در ورودی کاربر، همیشه از htmlspecialchars()
استفاده کنید:
php
$name = htmlspecialchars($_POST["name"]);
✅ 6. نمونه پروژه کاربردی: فرم تماس با ما
html
<form action="contact.php" method="post"> <input type="text" name="name" placeholder="نام" required> <input type="email" name="email" placeholder="ایمیل" required> <textarea name="message" placeholder="پیام شما" required></textarea> <input type="submit" value="ارسال"> </form>
php
<?php $name = htmlspecialchars($_POST['name']); $email = htmlspecialchars($_POST['email']); $message = htmlspecialchars($_POST['message']); echo "پیام شما دریافت شد، $name!";
🧠 نکته پایانی
-
همیشه فرمها را اعتبارسنجی (validation) کنید.
-
دادهها را sanitize کنید (جلوگیری از حملات XSS و SQL Injection).
-
فرمها پایهی تعامل کاربر با PHP هستند؛ آنها را امن و ساده نگه دارید.
🔄 استفاده از GET و POST در اسکریپتهای PHP
PHP از دو روش رایج برای دریافت داده از کاربران استفاده میکند:
GET و POST. این دو روش نحوه ارسال داده از فرمها یا از طریق URL را مشخص میکنند.
✅ 1. متغیرهای سوپرگلوبال GET و POST
در PHP، از دو آرایهی سراسری (Superglobal Arrays) برای دریافت اطلاعات فرمها استفاده میکنیم:
-
$_GET
→ دادههای ارسالشده با متدGET
(در URL قرار میگیرند) -
$_POST
→ دادههای ارسالشده با متدPOST
(در بدنه درخواست هستند)
✅ 2. فرم GET نمونه
html
<form action="search.php" method="get"> <label>جستجو:</label> <input type="text" name="q"> <input type="submit" value="بگرد"> </form>
در فایل search.php
:
php
<?php $query = $_GET['q']; echo "شما جستجو کردید برای: " . htmlspecialchars($query); ?>
✅ نتیجه:
makefile
URL: search.php?q=php
✅ 3. فرم POST نمونه
html
<form action="submit.php" method="post"> <label>نام:</label> <input type="text" name="name"> <input type="submit" value="ارسال"> </form>
در فایل submit.php
:
php
<?php $name = $_POST['name']; echo "سلام، " . htmlspecialchars($name); ?>
🔐 این داده در URL نمایش داده نمیشود و امنیت بالاتری دارد.
✅ 4. مقایسه GET و POST
ویژگی | GET | POST |
---|---|---|
قابل مشاهده در URL | ✅ | ❌ |
امنیت اطلاعات | ❌ پایینتر | ✅ بالاتر |
محدودیت حجم | ✅ محدود به طول URL (مثلاً 2048 کاراکتر) | ❌ ندارد |
مناسب برای | جستجو، لینکها | فرمهای ورود، تماس، ثبتنام |
✅ 5. تشخیص متد در PHP
میتوانیم با $_SERVER['REQUEST_METHOD']
متد ارسال فرم را تشخیص دهیم:
php
if ($_SERVER["REQUEST_METHOD"] == "POST") { // دریافت با $_POST } elseif ($_SERVER["REQUEST_METHOD"] == "GET") { // دریافت با $_GET }
✅ 6. بررسی وجود داده
برای جلوگیری از خطا در دسترسی به فیلدهایی که ممکن است ارسال نشده باشند:
php
if (isset($_POST['name'])) { $name = $_POST['name']; }
یا:
php
$name = $_POST['name'] ?? 'ناشناس';
✅ 7. ترکیب GET و POST در یک صفحه
ممکن است صفحهای همزمان از هر دو استفاده کند:
php
$page = $_GET['page'] ?? 1; $name = $_POST['name'] ?? 'ناشناس';
✅ 8. امنیت: Escape و Validate
برای جلوگیری از حملات XSS:
php
echo htmlspecialchars($_POST['name']);
برای جلوگیری از حملات SQL Injection، دادهها را قبل از استفاده در پایگاه داده با روشهای امن مانند PDO آماده کنید.
🔚 نتیجهگیری
زمان استفاده از GET | زمان استفاده از POST |
---|---|
ارسال داده غیرحساس، لینکپذیر | ارسال داده حساس (رمز، اطلاعات شخصی) |
نمایش نتیجه در URL | نیاز به امنیت بیشتر |
برای فیلترها و جستجو | برای فرم تماس، ورود، ثبتنام |
⏰ اجرای اسکریپت PHP با Cron Job در سرور (Linux)
اگر بخواهید یک اسکریپت PHP در فواصل زمانی مشخص بهصورت خودکار اجرا شود (مثلاً ارسال ایمیل، تهیه نسخه پشتیبان، پاکسازی فایلها و...)، میتوانید از Cron Job در لینوکس استفاده کنید.
✅ 1. Cron Job چیست؟
Cron یک سرویس در سیستمعاملهای لینوکسی/یونیکسی است که اجازه میدهد دستورها یا اسکریپتها در زمانهای مشخصی اجرا شوند.
✅ 2. نوشتن Cron Job برای اجرای فایل PHP
فرض کنیم فایل شما بهنام task.php
در مسیر زیر قرار دارد:
swift
/home/username/public_html/task.php
و میخواهید آن را هر روز ساعت 5 صبح اجرا کنید.
🛠 دستور Cron Job:
bash
0 5 * * * /usr/bin/php /home/username/public_html/task.php
📌 توضیح زمانبندی:
دقیقه ساعت روز ماه ماه روز هفته 0 5 * * * → هر روز ساعت 5:00 صبح
📌 مسیر /usr/bin/php
ممکن است در سرور شما متفاوت باشد. برای اطمینان میتوانید اجرا کنید:
bash
which php
✅ 3. ویرایش Cron Jobs با دستور crontab
برای ویرایش cron job فعلی برای کاربر:
bash
crontab -e
سپس دستور خود را به انتهای فایل اضافه کنید و ذخیره نمایید.
✅ 4. خروجی Cron Job را ذخیره کنید (برای دیباگ)
برای ذخیره خروجی در فایل لاگ:
bash
0 5 * * * /usr/bin/php /home/username/public_html/task.php >> /home/username/task.log 2>&1
🔹 >>
خروجی را به فایل اضافه میکند
🔹 2>&1
خطاها را نیز به همان فایل هدایت میکند
✅ 5. اجرای Cron از فایل URL (با curl یا wget)
اگر میخواهید اسکریپت PHP را از طریق URL اجرا کنید (مثلاً https://example.com/task.php
):
bash
0 5 * * * curl -s https://example.com/task.php > /dev/null
یا:
bash
0 5 * * * wget -q -O - https://example.com/task.php > /dev/null
✅ 6. بررسی اجرا شدن کرون جاب
اگر اسکریپت اجرا نمیشود:
-
از مسیر درست PHP استفاده کنید (
which php
) -
مجوز فایل را بررسی کنید (
chmod +x task.php
) -
مسیر اسکریپت را بهصورت مطلق بدهید
-
خروجی را در فایل لاگ بررسی کنید
🧪 نمونه فایل task.php
php
<?php file_put_contents("log.txt", "Task run at " . date("Y-m-d H:i:s") . "
", FILE_APPEND); ?>
با این کد، هر بار اجرای کرون، یک خط در فایل log.txt
ذخیره میشود.
🧠 نکات امنیتی:
-
برای اسکریپتهایی که از طریق URL اجرا میشوند، تأیید امنیتی یا توکن اضافه کنید.
-
مسیرهای حساس را مستقیماً در
public_html
نگذارید. -
اسکریپت را تست کنید قبل از تنظیم کرون.
☁️ آپلود و اجرای اسکریپت PHP در هاست اشتراکی (Shared Hosting)
در هاستهای اشتراکی (مانند ایرانسرور، نتافراز، Bluehost، HostGator و...) کاربران معمولاً از cPanel یا DirectAdmin برای مدیریت فایلها، دامنهها و اجرای اسکریپتها استفاده میکنند.
در این آموزش، یاد میگیریم چگونه یک اسکریپت PHP را روی هاست اشتراکی آپلود و اجرا کنیم.
✅ 1. آمادهسازی فایل PHP
فرض کنیم فایل شما به نام hello.php
دارای محتوای زیر است:
php
<?php echo "سلام، این اسکریپت PHP اجرا شد!"; ?>
✅ 2. ورود به پنل هاست (cPanel یا DirectAdmin)
-
به آدرس پنل مدیریت هاست خود بروید، مثلاً:
-
https://yourdomain.com:2083
(برای cPanel) -
یا از طریق لینکی که شرکت هاستینگ به شما داده
-
✅ 3. استفاده از File Manager
-
در پنل هاست، وارد File Manager شوید.
-
به مسیر
public_html/
بروید (این پوشه ریشه سایت است). -
روی Upload کلیک کنید.
-
فایل
hello.php
را انتخاب و بارگذاری کنید. -
پس از آپلود، فایل را در لیست مشاهده خواهید کرد.
✅ 4. اجرای فایل در مرورگر
پس از آپلود، با مرورگر به آدرس زیر بروید:
arduino
https://yourdomain.com/hello.php
✅ خروجی باید چیزی مانند زیر باشد:
سلام، این اسکریپت PHP اجرا شد!
✅ 5. نکات مهم درباره هاست اشتراکی
نکته | توضیح |
---|---|
📁 محل قرارگیری فایل | تمام فایلهای قابل اجرا باید داخل public_html (یا پوشههای فرعی آن) باشند |
🔐 مجوز فایل | مجوز مناسب برای فایل PHP معمولاً 644 است |
⚠️ نمایش خطا | اگر صفحه سفید است یا خطایی نمیبینید، باید نمایش خطا را فعال کنید (یا با پشتیبانی تماس بگیرید) |
🔎 مسیرهای فایل | در هاست اشتراکی ممکن است مسیرهای سیستم با لوکال فرق داشته باشد. از __DIR__ یا $_SERVER['DOCUMENT_ROOT'] استفاده کنید |
🛠 ویرایش آنلاین | میتوانید فایل را در File Manager هاست ویرایش کنید (Edit یا Code Edit) |
✅ 6. آپلود پروژه کامل با چند فایل
اگر پروژه شما چندین فایل دارد (HTML, CSS, JS, PHP):
-
تمام فایلها و پوشهها را در یک فایل ZIP قرار دهید.
-
آن را در
public_html/
آپلود کنید. -
در File Manager، روی ZIP راستکلیک کرده و Extract بزنید.
-
پروژه آماده اجرا خواهد بود.
✅ 7. اتصال به پایگاه داده MySQL در هاست
در هاست اشتراکی، باید:
-
پایگاه داده MySQL بسازید (از MySQL Databases در پنل)
-
نام پایگاه داده، یوزر و پسورد را در فایل PHP وارد کنید:
php
$conn = new mysqli("localhost", "db_user", "db_pass", "db_name");
✅ 8. خطای رایج: 500 Internal Server Error
اگر با این خطا مواجه شدید:
-
فایل
.htaccess
را بررسی کنید (ممکن است دستور ناسازگار با Apache باشد) -
مطمئن شوید کد PHP شما خطای نحوی ندارد
-
از
error_log
ها استفاده کنید یا از پشتیبانی هاست کمک بگیرید
🔍 تفاوت بین نسخههای PHP و نکاتی در اجرای اسکریپتها
PHP با گذشت زمان نسخههای متعددی منتشر کرده که هر نسخه تغییراتی در ویژگیها، توابع، امنیت و عملکرد دارد. دانستن تفاوت نسخهها و نکات مربوط به آنها برای اجرای صحیح و بهینهی اسکریپتهای PHP ضروری است.
✅ 1. نسخههای رایج PHP
نسخه | سال انتشار | وضعیت | توضیح کوتاه |
---|---|---|---|
PHP 5.6 | 2014 | منقضی شده | آخرین نسخه سری 5، هنوز در برخی هاستها موجود است |
PHP 7.0 – 7.4 | 2015–2019 | منقضی شده یا در حال انقضا | بهبود عملکرد نسبت به نسخه 5، حذف برخی توابع قدیمی |
PHP 8.0 – 8.1 | 2020–2021 | در حال پشتیبانی | معرفی ویژگیهایی مانند Union Types، Match Expressions |
PHP 8.2 – 8.3 | 2022–2023 | پایدار و توصیهشده | ویژگیهای جدید: readonly classes، fetch properties of enums |
PHP 8.4 و بالاتر | در آینده | — | ویژگیهای آیندهنگرانه و عملکرد بیشتر |
✅ 2. مهمترین تفاوتهای بین نسخهها
🔷 حذف توابع منسوخشده
مثال: تابع mysql_connect()
از PHP 7 به بعد حذف شد و باید از mysqli
یا PDO
استفاده کرد.
php
// ✅ جدیدتر: $mysqli = new mysqli("localhost", "user", "pass", "db"); // ❌ قدیمی و حذفشده: mysql_connect("localhost", "user", "pass");
🔷 ویژگیهای جدید در PHP 8+
-
Match Expression:
php
CopyEdit
echo match($value) { 1 => "یک", 2 => "دو", default => "نامشخص" };
-
Constructor Property Promotion:
php
CopyEdit
class Person { public function __construct( public string $name, public int $age ) {} }
-
Union Types, Attributes, Nullsafe Operator, Readonly Class, و بسیاری دیگر
✅ 3. چگونه نسخه PHP سایت خود را پیدا کنیم؟
✔️ با فایل phpinfo()
:
php
<?php phpinfo(); ?>
مرورگر را باز کنید و فایل را اجرا کنید، اطلاعات کامل نسخه و تنظیمات PHP نمایش داده میشود.
✅ 4. تنظیم نسخه PHP در هاست اشتراکی
در هاستهایی مثل cPanel:
-
وارد cPanel شوید.
-
بخش Select PHP Version یا MultiPHP Manager را پیدا کنید.
-
دامنه مورد نظر را انتخاب کنید.
-
نسخه PHP دلخواه (مثلاً 8.2) را انتخاب و ذخیره کنید.
✅ 5. نکات مهم هنگام اجرای اسکریپتها در نسخههای مختلف
مورد | نکته |
---|---|
توابع حذفشده | اطمینان حاصل کنید اسکریپت از توابع حذفشده استفاده نمیکند |
دستورهای جدید | برخی سینتکسها در نسخههای قدیمی اجرا نمیشوند |
پکیجها | اگر از Composer استفاده میکنید، نسخه PHP پروژه را در composer.json مشخص کنید |
لاگ خطاها | با فعال کردن نمایش خطا (error_reporting) از ناسازگاریها مطلع شوید |
✅ 6. استفاده از شرط نسخه برای سازگاری
اگر میخواهید اسکریپت شما با نسخههای مختلف سازگار باشد:
php
if (version_compare(PHP_VERSION, '8.0.0') >= 0) { // کد مخصوص PHP 8 و بالاتر } else { // کد سازگار با نسخههای قدیمیتر }
✅ 7. استفاده از ویژگیهای جدید = بهبود امنیت و سرعت
نسخههای جدید PHP معمولاً:
-
سرعت پردازش بالاتری دارند (PHP 8 تا 3 برابر سریعتر از PHP 5)
-
آسیبپذیریهای امنیتی کمتری دارند
-
ابزارهای دیباگ و مدیریت خطای بهتری ارائه میدهند
📌 نتیجهگیری
-
همیشه از نسخههای پشتیبانیشده و پایدار استفاده کنید (مثلاً PHP 8.2 یا بالاتر)
-
قبل از اجرای پروژه روی سرور، نسخه PHP را بررسی و هماهنگ کنید
-
اگر از اسکریپتهای آماده استفاده میکنید، راهنمای نسخه پیشنهادی آن را بخوانید
🔐 نکات امنیتی در اجرای اسکریپتهای PHP
اسکریپتهای PHP در معرض تهدیدات متعددی هستند که در صورت رعایت نکردن نکات امنیتی، میتوانند به افشای اطلاعات، تزریق کد، خرابکاری یا سرقت داده منجر شوند. در اینجا به مهمترین اصول امنیتی در اجرای اسکریپتهای PHP میپردازیم.
✅ 1. جلوگیری از SQL Injection (تزریق کد به پایگاه داده)
حمله رایج: هکر با وارد کردن کدهای SQL در فرمها، کوئریها را دستکاری میکند.
راهحل: استفاده از prepared statements
با mysqli یا PDO
php
// ✅ امن $stmt = $conn->prepare("SELECT * FROM users WHERE username = ?"); $stmt->bind_param("s", $username); $stmt->execute();
✅ 2. جلوگیری از XSS (Cross-Site Scripting)
حمله رایج: وارد کردن کد جاوااسکریپت در فرمها که هنگام نمایش، در مرورگر قربانی اجرا میشود.
راهحل: استفاده از htmlspecialchars()
هنگام نمایش دادهها
php
echo htmlspecialchars($_POST['name']);
✅ 3. جلوگیری از CSRF (Cross-Site Request Forgery)
حمله رایج: ارسال درخواست جعلی از سایت دیگر بدون اطلاع کاربر واردشده
راهحل: استفاده از توکن CSRF در فرمها
php
// تولید توکن $_SESSION['csrf_token'] = bin2hex(random_bytes(32)); // در فرم: <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>"> // بررسی: if ($_POST['csrf_token'] !== $_SESSION['csrf_token']) { die("درخواست نامعتبر است"); }
✅ 4. فیلتر و اعتبارسنجی ورودیها
نکته: هرگز به دادههای کاربر اعتماد نکنید؛ همه دادهها را فیلتر و اعتبارسنجی کنید.
php
$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); $age = filter_input(INPUT_POST, 'age', FILTER_VALIDATE_INT);
✅ 5. محدود کردن آپلود فایل
خطر: امکان آپلود فایلهای اجرایی یا مخرب (php, exe, js) توسط مهاجم
راهحل:
-
بررسی نوع MIME
-
تغییر نام فایلها به صورت تصادفی
-
ذخیره فایلها خارج از
public_html
php
$allowed = ['jpg', 'png', 'pdf']; $ext = pathinfo($_FILES['file']['name'], PATHINFO_EXTENSION); if (!in_array($ext, $allowed)) { die("فرمت فایل مجاز نیست."); }
✅ 6. عدم نمایش خطاها به کاربران
خطر: نمایش جزئیات خطا باعث افشای مسیر فایلها یا اطلاعات سرور میشود.
راهحل:
php
ini_set('display_errors', 0); // در محیط واقعی ini_set('log_errors', 1); ini_set('error_log', '/path/to/error.log');
✅ 7. محدود کردن دسترسی به فایلها و پوشهها
-
فایلهای حساس (مثل config.php یا .env) نباید در دسترس عموم باشند.
-
استفاده از فایل
.htaccess
برای محدودسازی:
apache
<Files config.php> Order allow,deny Deny from all </Files>
✅ 8. استفاده از رمزنگاری برای ذخیره رمز عبور
اشتباه رایج: ذخیره رمز عبور بهصورت متن ساده!
راهحل: استفاده از password_hash()
و password_verify()
php
// ذخیره رمز $hashed = password_hash($password, PASSWORD_DEFAULT); // بررسی رمز if (password_verify($input, $hashed)) { echo "ورود موفق"; }
✅ 9. بهروزرسانی مداوم نسخه PHP و کتابخانهها
نسخههای قدیمی PHP و پکیجهای ناپشتیبانیشده امنیت پایینتری دارند.
همواره از آخرین نسخههای پایدار استفاده کنید (مثلاً PHP 8.2 به بالا)
✅ 10. استفاده از HTTPS
استفاده از SSL باعث رمزنگاری دادههای ردوبدل شده میشود. بدون HTTPS، حمله «man-in-the-middle» ممکن است دادهها را رهگیری کند.
✳️ جمعبندی
تهدید امنیتی | راهکار |
---|---|
SQL Injection | prepared statements |
XSS | htmlspecialchars() |
CSRF | توکن امنیتی فرم |
افشای رمز | password_hash() |
افشای خطا | غیر فعالسازی display_errors |
آپلود فایل | فیلتر MIME و تغییر نام |
نسخه PHP | بهروزرسانی منظم |
اجرای صحیح و ایمن اسکریپتهای PHP نیازمند آگاهی و رعایت نکات مهم در مراحل مختلف توسعه است. از نصب محیط اجرای PHP گرفته تا اتصال به پایگاه داده و مدیریت خطاها، هر بخش نقش کلیدی در عملکرد و امنیت نهایی پروژه دارد. با دنبال کردن این مراحل و تمرین عملی، میتوانید به یک توسعهدهنده حرفهای PHP تبدیل شوید که هم به کارایی و هم به امنیت اهمیت میدهد.
همچنین به یاد داشته باشید که دنیای فناوری و زبان PHP همواره در حال تغییر و بهروزرسانی است. به همین دلیل، بهروزرسانی دانش خود و استفاده از نسخههای جدیدتر PHP، بهبود امنیت و بهرهوری برنامهها را تضمین میکند. ابزارهای اشکالزدایی، مدیریت خطا و امنیت در PHP نیز به شما کمک میکنند تا برنامههای پایدارتر و قابل اطمینانتری بسازید.
در نهایت، توجه به نکات امنیتی و اصول طراحی مناسب کد، راه شما را برای ساخت وبسایتها و اپلیکیشنهای مطمئن و حرفهای هموار میکند. امیدواریم این مقاله توانسته باشد به شما دیدگاهی جامع درباره اجرای اسکریپتهای PHP بدهد و شما را در مسیر تبدیل شدن به یک توسعهدهنده موفق PHP همراهی کند.