تابع htmlentities در php (پیاچپی)
تابع htmlentities کاراکترهای قابل اجرا در ورودی خود را به به کاراکتر های رزرو شده html یا همان html entity ها تبدیل می کند. تبدیل کاراکترهای قابل اجرا مانع اجرای این کاراکترهای میشوند و در نتیجه موجب افزایش امنیت وب سایت یا اپلیکشن تحت وب میشود.
برای مثال اگر دادههای دریافتی از کاربر را به طور مستقیم در یک کوئری استفاده کنیم اگر دادههای ورودی از سوی کاربر حاوی رشتههای قابل اجرا در کوئری ها مثل ‘یا ” باشد موجب به وجود آمدن یک خطا می شود و عملکرد وب سایت شما را مختل میکند لذا فیلتر کردن داده های دریافتی علی الخصوص زمانی که دادهها را از کاربران دریافت میکنید و در وب سایت به عموم نمایش میدهید با تابع htmlentities در طراحی سایت شدیدا توصیه میشود.
کاراکترهای رزرو شده html یا html entities در طراحی سایت
شکل کلی کاراکتر های رزرو شده در html به صورت زیر میباشد
&entity_name; OR &#entity_number;
این کاراکترها با یک & یا همان ampersand شروع و به دنبال آن اسم یا شماره مشخص شده آنها می آید و با یک سمی کالن ; (semicolon) تمام میشود . کاراکتر هایی که اسم آنها با شماره مشخص می شود اول آنها ، یک # نیز اضافه میشود و نمایش دهنده کارکترهای خاصی هستند که برخی از آنها نیز روی کیبورد موجود نیستند.
برای نمایش علامت > در html این حرف را به صورت ;< و یا < باید تابیپ کنیم.
جهت مطالعهی بیشتر در مورد 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 را به متغیر دوم و یا همان فلگ منتسب کنیم.