عزیزان بنده به همین روش در مورد فروم خودم استفاده می کنم و مشکلی ندارم
ببینید در دیتابیس BB همه کلماتی که " ی" توشونه دوبار ثبت میشن و این باعث میشه که حجم دیتا بیس در قسمت search word بسیار زیاد بشه
منظورتون رو متوجه نمیشم؟ یعنی چه دو بار ثبت می شه؟
کلا بحث کدپیچ یونی کد به علت چند بایتی بودن کاراکترهایش دارای حجمی مصرفی بیشتری نسبت به سایر کدپیچ ها هست و در این بحث ما اشاره به کدپیچ عربیک ویندوز داریم به خاطر همین کدپیچ هست که تفاوت بین دو نوع ی بوجود می آید والا در یونی کد که دیگر این مشکل نیست
ضمن تشکر از شما
خواهش میکنم در صورت امکان مطالب فوق رو به صورت کامل تر و مفهوم تر در بخش مقالات آموزشی phpBB بنویسید
تا من به صورت موضوع مهم درش بیارم
خواهش می کنم در کل این مطلب فکر نمی کنم زیاد بحث طولانی داشته باش که بتوان آن را مقاله کرد ولی در کل هرجور که شما صلاح می دانید ولی نسبت به توضیحات مفصلتر باید عرض کنم که:
به طور کلی به علت تفاوت در برخی از کاراکترهای در ویندوزهای متفاوت (در 98 با XP و بسیار بیشتر بین سرویس پک 1 و 2) که البته بیشتر به دو کاراکتر (ی و ک) ختم می شود در بخش ورود اطلاعات در تمامی برنامه های تحت ویندوز (چه webbase یا windowsApplication ) مشکلاتی به وجود می آید که در صورت عدم کنترل برنامه نویس در این بخش ها (ورود اطلاعات) سبب می شود که باعث ایجاد مشکلاتی (من جمله عدم نمایش صحیح عبارت و یا عدم موفقیت عملیات جستجو و یا عدم موفقیت عملیات لوگین اکانت ورود به برنامه) می گردد که به طور مثال تصور کنید که کاربری نام کاربری خود را علی قرار داده و زمانی که این اکانت را ساخت در ویندوز xp از خانواده sp2 بوده و به طور پیش فرض کاراکتر ی موجود در انتهای کلمه علی به صورت کد 1740 (ی فارسی) می باشد.
و هنگامی که از سیستم دیگر و یا بعد از تغییر ویندوز به خانواده sp1 دیگر نمی توان به این اکانت وارد شود (چرا که به هنگام تایپ کلمه علی (ی انتهای کلمه) از نوع ی عربی (ی زیردونقطه) می باشد.
و درنظر بگیرید این بحث به هنگام جستجو در برنامه یا سایت نیز وجود دارد و بالطبع در صورت عدم کنترل این کاراکتر در ورودهای کاربر می بایستی جملاتی را که دارای کاراکتر ی هست را دو بار (یکبار با ی فارسی و یکبار با ی عربی) تایپ کرده و جستجو کنند ..... نهایتا دردسر بسیار برای ادمین و کاربران برنامه یا سایت بوجود می آید.
راه حل این مشکل کنترل ورودی ها راجع به کاراکترهای تغییرپذیر هست
اگر دقت کنید در اکثریت برنامه های تحت وب که دارای قابلیت cms (مدیریت محتوی) هستند برنامه نویس یکسری تمهیدات و شروطی را برای عبارات تایپی در بخش ورود اطلاعات سایت قرار می دهد که برنامه (یا سایت) را نسبت به حملات هکرها و یا اینجکشن ها محافظت نماید (بحث sqlinjection ) که در حقیقت کنترل می شود در صورت وجود تگ های html (از نوع غیرمجاز) و یا کدهای جاوا و یا دستورات sql و یا .... برنامه نویس این کاراکترها (عبارات) را از متن ورودی حذف می کند
مشابه این بحث (حفاظت در برابر sqlinjection) را نیز ما باید نسبت به این کاراکترها داشته باشیم یعنی در صورت وجود کاراکتر مثلا ی (فارسی) آن را به ی (عربی) تبدیل کنیم
که به طور مثال در این تایپیک که فقط مشکل حرف ی در تیتر پست ها مطرح شده بنده به عنوان پاسخ عرض کردم که فایل posting.php را باید اصلاح کنید (والا جهت کنترل بهتر می بایستی تمامی قسمتهای ورودی (ورود اطلاعات) برنامه را نسبت به این کاراکتر کنترل نمایید (من جمله بخش تایپ ورودی در جستجو, ثبت نام کاربری, لوگین کاربر و ....) (ویا حتی بخش مرکز کنترل سایت (بخش های همچون سانسور کلمات و یا نام کاربرهای غیرمجاز) و ....
و دستور موردنظر جهت انجام این تبدیل (از ی فارسی به ی عربی) را نیز در همان پست قبلی ارائه کردم (در حقیقت یک کاراکتر ترانس (جابجایی حرف) می باشد که در بحث زبان های برنامه نویس تحت ویندوز (مخصوصا مشابه cms در سایت بخش های بانک اطلاعاتی ) این بحث متداول هست.
دستور موردنظر که البته به صورت هوشمند توسط خود فروم این سایت جابجا شده (یعنی در پست قبلی نیز حرف ی اول را بنده به صورت کد وارد کرده بودم ولی احتمالا توسط کدهای تعریف شده در قسمت پست سایت به کاراکتر متناظر آن که همان حرف ی باشد تبدیل شده است ) لذا به این دلیل است که فکر می کنم دوستان موفق به انجام این کار نشدند.
کد بصورت متن:
$subject = ereg_replace('ی',ي',$subject);
این دستور در حقیقت حرف ی (فارسی) البته به کد یعنی همان 1740 که عبارتش به صورت ی را گرفته و به ی (عربی) (یا همان ی زیردونقطه) تبدیل می کند .
و همانطور که در پست قبلی توضیح دادم این دستور را بعد از خط 552 (جایی که عبارت subject از ورودی با شرط حذف کاراکترهای اضافی از طرفین دریافت می شود) باید وارد شود.
البته جهت اطمینان می توان آن را در سایر موارد مرتبط در سورس کد همان فایل posting.php را نیز وارد کرد (هرجایی که متغیر subject مقداردهی می شود)
جهت اطمینان بیشتر بنده فایل اصلاح شده posting را در اینجا آپلود می کنم.