ضمیمه کردن سمت سرویس دهنده (SSI-Server Side Includes)

شما می توانید محتوای یک فایل PHP را در فایل دیگری درج کنید قبل از اینکه سرویس دهنده آنرا اجرا کند. برای این کار از توابع ()include یا ()require استفاده می کنید.

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

  • ()include تولید warning کرده ولی اجرای اسکریپت ادامه می یابد,
  • ()require خطای غیرقابل چشمپوشی تولید می کند , و اجرای اسکریپت متوقف می شود.

هر دوی این توابع برای ایجاد توابع،هدرها ، فوترها یا عناصری که در چندین صفحه استفاده مجدد دارند استفاده می شوند.

SSI ها باعث راحت شدن طراحی سایت و تغییرات بعدی و صرفه جویی در وقت می شوند. بدین معنی که می توانیم یک فایل هدر ، فوتر یا منوی استاندارد ایجاد کرده و آنرا در همه صفحات وب استفاده کنیم. هروقت نیاز به تغییر هدر بود کافی است فایل هدر را اصلاح کنیم یا هرگاه صفحه جدیدی به سایت اضافه شد کافی است فایل حاوی منو تغییر کند (به جای تغییر گزینه ها در تک تک صفحات وب سایت)


تابع ()include

تابع ()include تمام محتوای فایل تعیین شده را در فایل جاری درج می کند.

اگر خطایی اتفاق افتد، تابع ()include یک warning تولید کرده و اجرای اسکریپت قطع نخواهد شد.

مثال ۱

یک فایل header استاندارد به نام header.php در نظر بگیرید. برای ضمیمه کردن فایل header در صفحه تابع ()include را بصورت زیر استفاده می کنیم:

<html>
<body>

<?php include(“header.php”); ?>
<h1>Welcome to my home page!</h1>
<p>Some text.</p>

</body>
</html>

مثال ۲

فرض کنیدیک فایل منوی استاندارد به نام 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”>
<?php include(“menu.php”); ?>
</div>

<h1>Welcome to my home page.</h1>
<p>Some text.</p>

</body>
</html>

اگر نگاهی به کد منبع صفحه نشان داده در مرورگر بیندازید تگ های زیر را خواهید دید.

<html>
<body>

<div class=”leftmenu”>
<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>
</div>

<h1>Welcome to my home page!</h1>
<p>Some text.</p>

</body>
</html>

 


تابع ()require

تابع ()require شبیه ()include است بجز در روش برخورد با خطاها

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

مثالی از بروز خطا در تابع ()include

<html>
<body>

<?php
include(“wrongFile.php”);
echo “Hello World!”;
?>

</body>
</html>

پیغام خطا:

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]:
Failed opening ‘wrongFile.php’ for inclusion
(include_path=’.;C:\php5\pear’)
in C:\home\website\test.php on line 5

Hello World!

توجه داشته باشید که دستور echo اجرا شده است! یعنی تولید warning اجرای اسکریپت را متوقف نکرده است.

مثالی از بروز خطا در تابع ()require

اکنون اجازه دهید مثال مشابهی را با تابع ()require اجرا کنیم.

<html>
<body>

<?php
require(“wrongFile.php”);
echo “Hello World!”;
?>

</body>
</html>

پیغام خطا:

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]:
Failed opening required ‘wrongFile.php’
(include_path=’.;C:\php5\pear’)
in C:\home\website\test.php on line 5

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

توصیه می شود از همیشه از تابع ()require به جای ()include استفاده کنید تا اجرای اسکریپت پس از وقع خطا ادامه پیدا نکند.

نمایش قابل چاپ