یادآوری اینکه در فیلتر محتویات همه ورودی های سایت من این ۳ تابع را قرار دادم:
PHP:
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
حالا خودم اومدم در فایل str_replace از علامت های بزرگتر و کوچکتر استفاده کردم. یعنی در پستهایی که قبلا فیلتر شده اند با این تابع دوباره کاراکترهای مزاحم اضافه کرده ام.
برای درمان و علاجش اومدم الان این خط را انتهای فایل str_replace ام اضافه کردم:
PHP:
$post = htmlspecialchars($post);
ولی کدها ناخوانا شد در فروم و محتوای پستها ریخت به هم. چون احتمالا علامتهای کوچکتر و بزرگتر ، ادوات پست من بودند و با این تابع نابود شدند. پس نباید وقتی ادوات اضافه کردی آخر کار بیای با این تابع نابودشان کنی. مثل مثلا کادر دور کدها ، از بین رفته بود ، چون یک div بود و دو طرفش علامتهای بزرگتر و کوچکتر داشت.
پس فعلا اون یک خط کد را از انتهای فایل str_replace برداشتم تا بعدا بفهمم راه حل چیه.
فایل str_replace موقع نمایش اکلادها را تبدیل به کوچکتر و بزرگتر می کنه تا عملکرد html ئی داشته باشه و به پستها شکل و حالت بدهد.
کدهایی هم که کاربران در پستها می زنند ، قبلا با تابع htmlspecialchars خنثی سازی شده. ولی چرا وقتی دوباره خنثی سازی می کنیم از شکل درمیاد؟
چرا در مجیدآنلاین وقتی سورس را می بینیم در کدهای کاربران علامت کوچکتر بزرگتر نیست ولی در نمایش انتهایی علامتهای کوچکتر و بزرگتر هست؟
سورس تاپیک فروم خودم را هم دیدم، این لینکشه:
view-source:
http://saalek110.is-great.net/forum/topic.php?number=62
مثل مجیدانلاین است ، داخل کدها ، علامت کوچکتر و بزرگتر خنثی سازی شدس ولی موقع نمایش درست نمایش داده میشه ، پس احتمالا در اثر استفاده از همون تابع htmlspecialchars که من ورودی ها را ازش رد می کنم است. پس فروم من و فروم مجیدآنلاین در سورس کدهای کاربران در سورس و در نمایش یکسان هستیم. به خاطر کار همین تابع.
و شاید علامت کوچکتر و بزرگتر که فایل str_replace من اضافه می کنه ، لازم است و نمیشه خنثی سازی بشه.
موردهایی بوده باعث دردسر شده ، شاید باید بروم اون مورد های خاص را بررسی کنم. و نباید کلا بگم علامت کوچکتر و بزرگتر نباید در ساماندهی پستها استفاده بشه.