تابع htmlentities در php (پی‌اچ‌پی)

تابع htmlentities کاراکترهای قابل اجرا در ورودی خود را به به کاراکتر های رزرو شده html یا همان html entity ها تبدیل می کند. تبدیل کاراکترهای قابل اجرا مانع اجرای این کاراکترهای ‌‌می‌شوند و در نتیجه موجب افزایش امنیت وب سایت یا اپلیکشن تحت وب می‌شود.
برای مثال اگر داده‌های دریافتی از کاربر را به طور مستقیم در یک کوئری استفاده کنیم اگر داده‌های ورودی از سوی کاربر حاوی رشته‌های قابل اجرا در کوئری ها مثل ‘یا ” باشد موجب به وجود آمدن یک خطا می ‌شود و عملکرد وب سایت شما را مختل می‌کند لذا فیلتر کردن داده های دریافتی علی الخصوص زمانی که داده‌ها را از کاربران دریافت می‌کنید و در وب سایت به عموم نمایش می‌دهید با  ‌تابع ‌htmlentities در طراحی سایت شدیدا توصیه می‌شود.

کاراکترهای رزرو شده html یا html entities در طراحی سایت

شکل کلی کاراکتر های رزرو شده در html به صورت زیر می‌باشد

&entity_name; OR &#entity_number;

این کاراکترها با یک & یا همان ampersand شروع و به دنبال آن اسم یا شماره مشخص شده آنها می آید و با یک سمی کالن ;  (semicolon) تمام می‌شود .  کاراکتر هایی که اسم آنها با شماره مشخص می شود اول آنها ، یک #  نیز اضافه می‌شود و نمایش دهنده کارکتر‌های خاصی هستند که برخی از آنها نیز روی کیبورد موجود نیستند.

برای نمایش علامت > در html این حرف را به صورت ;&lt و یا < باید تابیپ کنیم.

جهت مطالعه‌ی بیشتر در مورد html entities کلیک کنید

اما نحوی عملکرد و استفاده از تابع htmlentities در طراحی وب سایت  و نقش آن در تامین امنیت اپلیکشن یا وب سایت شما

این تابع در پی‌اچ‌پی به صورت زیر تعریف شده است و چهار آرگومان دارد

string htmlentities(string,flags,character-set,double_encode)

آرگومان اول رشته‌ای می‌باشد که قرار است کارکترهای مخصوص و آسیب زننده به ‌موجودیت ‌html تبدیل شوند

آرگومان دوم اختیاری می‌باشد و  یک یا چند ثابت تعریف شده در ‌پی‌اچ‌پی می‌باشد که نحوه‌ی رفتار این تابع با کاراکتر نقل قول(‘,”) را مشخص می‌کند.

جدول ثابتهای موجود برای آرگومان دوم تابع
نامتوضیح
ENT_COMPATاگر این ثابت به عنوان آرگومان دوم این تابع مورد استفاده قرارگیرد این تابع کارکتر دابل کتشن(“) را به موجودیت html تبدیل می‌کند ولی تک کتشن (‘) را به موجودیت html تبدیل نمی‌کند.
ENT_QUOTESهر دو نوع کتشن(‘,”) را به موجودیت html تبدیل می‌کند
ENT_NOQUOTESاجازه می‌دهد دابل و تک کتشن به موجودیت ‌html تبدیل نشوند.
ENT_IGNOREکاراکتر‌ها یا کدهای ناشناس را حذف می‌کند به جای این که رشته خالی برگرداند.
ENT_SUBSTITUTEکدهای ناشناس را با یونی کدها U+FFFD (UTF-8)   , &#FFFD;جایگزین می‌کند در صورتی که موفق به جایگزین کردن نشود رشته‌ی خالی بر‌می‌گرداند.
ENT_DISALLOWEDکد پوینت‌های ناشناس از منبع در یافتی با U+FFFD(UTF-8) یا &#FFD جایزین می‌کند.به طور مثال برای این که مطمئن شوید از سند دریافتی ‌ XML اده های اضافی جاسازی نشده است  می‌توانید از این ورودی استفاده کنید.
ENT_HTML401رشته ورودی را به عنوان HTML4.01. در نظر می‌گیرد و رشته‌ی ورودی را برحسب HTML4.01 کد می‌کند. برای استفاده‌ی این تابع در سندهای HTML4.01 می‌باشد.
ENT_XML1رشته ورودی را به عنوان XML1.  در نظر می‌گیرد و رشته‌ی ورودی را برحسب  استانداردهای XML1 کد می‌کند. برای استفاده‌ی این تابع در سندهای XML1 می‌باشد.
ENT_XHTMLرشته ورودی را به عنوان XHTML.  در نظر می‌گیرد و رشته‌ی ورودی را برحسب  استانداردهای XHTML کد می‌کند. برای استفاده‌ی این تابع در سندهای XHTML می‌باشد.
ENT_HTML5رشته ورودی را به عنوان HTML5  در نظر می‌گیرد و رشته‌ی ورودی را برحسب  استانداردهای HTML5 کد می‌کند. برای استفاده‌ی این تابع در سندهای HTML5 می‌باشد.

آرگومان چهارم از نوع بولین یا منطقی بوده و به صورت پیش فرض صحیح می‌باشد.وقتی این آرگومان TRUE می‌باشد این تابع همه‌ی کاراکترهای دریافتی را به موجودی ‌اچ‌تی‌ام تبدیل می‌کند و در صورتی که ‌false باشد این تابع از تبدیل یا کد کردن موجودیت‌های در یافتی در آرگومان اول را به موجودیت html دریافت نمی‌کند.

مقدرا برگشتی تابع ‌ٰhtmlentities: رشته‌ی کد شده را باز می‌گرداند.

در صورتی که رشته‌ی ورودی به صورت متوالی شامل کدهای ناشناخته باشد این تابع یک رشته‌ی خالی بر‌می‌گرداند مگر این که یکی از مقادیر ENT_IGNORE یا ENT_SUBSTITUTE را به متغیر دوم و یا همان فلگ منتسب کنیم.

 

 

دیدگاه خود را بنویسید