داغ ترین ویدیو بابلز لرن : هک کلاس های مجازی توسط متین برونسی

مدیریت خطا ها در PHP

  /  PHP   /  مدیریت خطا ها در PHP
آموزش PHP

در این بخش به بررسی مدیریت خطا ها در PHP می پردازیم. مهم ترین مسئله در برنامه نویسی مدیریت خطا ها می باشد که باید آنها کاملاً مدیریت و کنترل شوند در غیر این صورت دچار مشکلات امنیتی خواهیم شد.

مدیریت خطا با تابع die() در PHP

یکی از ساده ترین روش ها برای مدیریت خطا ها در PHP استفاده از تابع die() می باشد.

مثال

در اینجا فرض کنید ما یک قطعه کد مشابه مثال زیر را در اسکریپت خود داریم که یک فایل متنی را باز می کند.

تماشا در حالت تمام صفحه

اکنون اگر فایل ما روی سرور وجود نداشته باشد یک پیغام خطا مانند زیر چاپ خواهد شد:

Warning: fopen(welcome.txt): failed to open stream: No such file or directory in C:\xampp\htdocs\test\index.php on line 2

برای جلوگیری از نمایش چنین پیغام خطایی ابتدا وجود فایل را بررسی می کنیم و در صورت عدم وجود با استفاده از تابع die() اسکریپت را متوقف کرده و پیغام خطایی نمایش می دهیم.

تماشا در حالت تمام صفحه

اکنون اگر فایل وجود نداشته باشد ، بجای نمایش پیغام طولانی ، این پیغام خطای سفارشی به کاربر نمایش داده خواهد شد:

File not found

ایجاد یک مدیریت کننده خطای سفارشی در PHP

در این بخش ما قصد داریم تا تمامی خطا ها را مدیریت و کنترل کنیم. برای انجام این کار یک تابع تعریف می کنیم که هنگام بروز هرگونه خطا فراخوانی و اجرا می شود.

تابع ما دارای 5 پارامتر است:

  • سطح خطا
  • پیغام خطا
  • فایل خطا
  • شماره خط کد خطا
  • متن خطا

دو مورد اول اجباری هستند ولی بقیه موارد اختیاری می باشند.

error_function ( error_level , error_message , error_file , error_line , error_context ) ;

در جدول زیر هر یک از پارامتر ها را برای مدیریت خطا ها توضیح داده ایم:

پارامترتوضیحات
error_levelسطح گزارش خطا برای خطایی که به وجود آمده را مشخص می کند. باید مقدار آن عددی باشد.
error_messageپیغام خطا را مشخص می کند.
error_fileنام فایلی را که در آن خطا به وجود آمده است را مشخص می کند.
error_lineشماره خطی را که خطا در آن رخ داده است را مشخص می کند.
error_contextیک آرایه از متغیر ها و مقادیر آنها را که در هنگام رخ دادن خطا استفاده می شدند مشخص می کند.

سطح گزارش خطا ها

ثابتمقدارتوضیحات
E_WARNING2خطا های دارای اهمیت متوسط هنگام اجرا را مشخص می کند. اجرای اسکریپت متوقف نمی شود.
E_NOTICE8اطلاعات در زمان اجرای اسکریپت را مشخص می کند ، چیزی را پیدا می کند که ممکن است خطا باشد.
E_USER_ERROR256خطای خطرناک تولید شده توسط کاربر را مشخص می کند و مانند E_ERROR می باشد که توسط برنامه نویس با تابع trigger_error() به وجود آمده است.
E_USER_WARNING512یک هشدار کم اهمیت تولید شده توسط کاربر را مشخص می کند و مانند E_WARNING می باشد که توسط برنامه نویس با تابع trigger_error() به وجود آمده است.
E_USER_NOTICE1024اطلاعیه تولید شده توسط کاربر را مشخص می کند و مانند E_NOTICE می باشد که توسط برنامه نویس با تابع trigger_error() به وجود آمده است.
E_RECOVERABLE_ERROR4096خطای خطرناک مانند E_ERROR می باشد.
E_ALL8191تمامی خطا ها و هشدار ها را مشخص می کند.

ایجاد تابع برای مدیریت خطا ها در PHP

اکنون قصد داریم یک تابع برای مدیریت خطا ها ایجاد کنیم:

تماشا در حالت تمام صفحه

کد بالا در صورت بروز هرگونه خطا سطح اهمیت خطا همراه با پیغام آن را چاپ می کند.

اکنون تابع مدیریت کننده خطای ما آمده است اکنون باید از آن استفاده کنیم و خروجی بگیریم.

تنظیم مدیریت کننده خطا

در این مرحله ما می خواهیم تابع بالا را به مدیریت کننده خطای پیش فرض اسکریپت خود تبدیل کنیم:

set_error_handler("customError");

با استفاده از تابع set_error_handler() تابع مدیریت کننده خطای خود را مشخص کردیم.

این تابع دو پارامتر می گیرد:

  • نام تابع مدیریت کننده خطا ( اجباری )
  • سطح خطا ( اختیاری )

مثال

اکنون می خواهیم یک فایلی که وجود ندارد را باز کنیم:

تماشا در حالت تمام صفحه

خروجی

Error: [2] fopen(welcome.txt): failed to open stream: No such file or directory
Ending Script

راه اندازی خطا با تابع trigger_error در PHP

در اینجا ما می خواهیم هنگامی که کاربر داده غیر مجازی وارد کرد یک خطا ایجاد کنیم و آن را نمایش دهیم.

مثال


| این بخش از محتوا فقط برای اعضای وب سایت قابل مشاهده می باشد، برای دسترسی اینجا را کلیک کنید.

خروجی چیزی شبیه به این هست:

Notice: مقدار باید یک یا کمتر از یک باشد in C:\xampp\htdocs\test\index.php on line 4

یک خطا را می توانیم در هرکجای اسکریپت ایجاد کنیم ، همچنین با مشخص کردن پارامتر دوم در تابع trigger_error() می توانیم سطح خطا را مشخص کنیم.

انواع خطا هایی که میتوانیم استفاده کنیم:

  • E_USER_ERROR
  • E_USER_WARNING
  • E_USER_NOTICE

مثال

در مثال زیر اگر مقدار متغیر $test بزرگتر از یک باشد E_USER_WARNING رخ خواهد داد:

تماشا در حالت تمام صفحه

خروجی

Error: [512] مقدار باید یک یا کمتر از یک باشد
Ending Script

ارسال یک پیغام خطا با ایمیل در PHP

در مثال زیر ما یک ایمیل که حاوی پیغام خطا هست سمت مدیر وب سایت ارسال می کنیم:


| این بخش از محتوا فقط برای اعضای وب سایت قابل مشاهده می باشد، برای دسترسی اینجا را کلیک کنید.

خروجی

Error: [512] مقدار باید یک یا کمتر از یک باشد
Webmaster has been notified

خروجی سمت ایمیل مدیر سایت

Error: [512] مقدار باید یک یا کمتر از یک باشد

توابع مدیریت خطا ها در PHP

در این بخش توابعی که برای مدیریت خطا ها در PHP تعریف شده است را معرفی می کنیم:

تابعتوضیحات
debug_backtrace()این تابع اطلاعات جامعی راجع به خطای رخ داده در قالب یک آرایه ارائه می دهد.
error_get_last()این تابع اطلاعات آخرین خطای رخ داده در کد اسکریپت را نمایش می دهد.
error_log()این تابع اطلاعات رخ داده را در یک فایل روی سرور ذخیره می کند و یا به ایمیل مشخصی ارسال خواهد کرد.
error_reporting()این تابع مشخص می کند که چه خطا هایی به سیستم گزارش بشوند.
set_error_handler()یک تابع را به عنوان مدیریت خطا ها در صفحه مشخص می کند.
set_exception_handler()یک تابع تعیین شده از سوی طراح را به عنوان تابع مدیریت کننده استثناها در صفحه تعیین می کند.
trigger_error()از این تابع برای ایجاد و فراخوانی یک خطا استفاده می شود.
user_error()این تابع برای شناسایی یک خطا یا فراخوانی تابع مربوط به آن به کار می رود . عملکرد آن همانند تابع trigger_error است.

 

5/5 - (8 امتیاز)

برای دسترسی به آموزش های بیشتر و ویدیو های من، کلمه کلیدی متین برونسی را داخل گوگل سرچ کنید.