ضمیمه کردن سمت سرویس دهنده (SSI-Server Side Includes)
شما می توانید محتوای یک فایل PHP را در فایل دیگری درج کنید قبل از اینکه سرویس دهنده آنرا اجرا کند. برای این کار از توابع ()include یا ()require استفاده می کنید.
دو تابع از هر نظر بجز دستکاری خطا با هم یکسان هستند.
- ()include تولید warning کرده ولی اجرای اسکریپت ادامه می یابد,
- ()require خطای غیرقابل چشمپوشی تولید می کند , و اجرای اسکریپت متوقف می شود.
هر دوی این توابع برای ایجاد توابع،هدرها ، فوترها یا عناصری که در چندین صفحه استفاده مجدد دارند استفاده می شوند.
SSI ها باعث راحت شدن طراحی سایت و تغییرات بعدی و صرفه جویی در وقت می شوند. بدین معنی که می توانیم یک فایل هدر ، فوتر یا منوی استاندارد ایجاد کرده و آنرا در همه صفحات وب استفاده کنیم. هروقت نیاز به تغییر هدر بود کافی است فایل هدر را اصلاح کنیم یا هرگاه صفحه جدیدی به سایت اضافه شد کافی است فایل حاوی منو تغییر کند (به جای تغییر گزینه ها در تک تک صفحات وب سایت)
تابع ()include
تابع ()include تمام محتوای فایل تعیین شده را در فایل جاری درج می کند.
اگر خطایی اتفاق افتد، تابع ()include یک warning تولید کرده و اجرای اسکریپت قطع نخواهد شد.
مثال 1
یک فایل header استاندارد به نام header.php در نظر بگیرید. برای ضمیمه کردن فایل header در صفحه تابع ()include را بصورت زیر استفاده می کنیم:
<html> <body> <?php include(“header.php”); ?> </body> |
مثال 2
فرض کنیدیک فایل منوی استاندارد به نام menu.php داریم، که باید در همه صفحات استفاده شود:
<a href=”/default.php”>Home</a> <a href=”/tutorials.php”>Tutorials</a> <a href=”/references.php”>References</a> <a href=”/examples.php”>Examples</a> <a href=”/about.php”>About Us</a> <a href=”/contact.php”>Contact Us</a> |
همه صفحات موجود در وب سایت باید فایل منو را ضمیمه کنند بصورت زیر:
<html> <body> <div class=”leftmenu”> <h1>Welcome to my home page.</h1> </body> |
اگر نگاهی به کد منبع صفحه نشان داده در مرورگر بیندازید تگ های زیر را خواهید دید.
<html> <body> <div class=”leftmenu”> <h1>Welcome to my home page!</h1> </body> |
تابع ()require
تابع ()require شبیه ()include است بجز در روش برخورد با خطاها
اگر خطایی اتفاق بیفتد تابع ()include تولید warning کرده و اجرا ادامه پیدا می کند ولی تابع require تولید خطای غیرقابل چشمپوشی کرده و اجرای اسکریپت متوقف می شود.
مثالی از بروز خطا در تابع ()include
<html> <body> <?php </body> |
پیغام خطا:
Warning: include(wrongFile.php) [function.include]: failed to open stream: No such file or directory in C:\home\website\test.php on line 5 Warning: include() [function.include]: Hello World! |
توجه داشته باشید که دستور echo اجرا شده است! یعنی تولید warning اجرای اسکریپت را متوقف نکرده است.
مثالی از بروز خطا در تابع ()require
اکنون اجازه دهید مثال مشابهی را با تابع ()require اجرا کنیم.
<html> <body> <?php </body> |
پیغام خطا:
Warning: require(wrongFile.php) [function.require]: failed to open stream: No such file or directory in C:\home\website\test.php on line 5 Fatal error: require() [function.require]: |
دستور echo اجرا نشده استو زیرا اجرای اسکریپت پس از وقع خطا متوقف شده است.
توصیه می شود از همیشه از تابع ()require به جای ()include استفاده کنید تا اجرای اسکریپت پس از وقع خطا ادامه پیدا نکند.