مشکل در نوشتن حرف "ی" و... .

pezhman32

Member
سلام:

راستش یه قالب فارسی کردم اما... :

مال من نمی دونم چرا در زمان نمایش موضوع پست و تاپیک حرف "ی" رو نمی تونه بنویسه و بجاش کد "ی" (یعنی ی ) رو نمایش می ده ولی در بقیه ی جاهای سایت یا در متن پست ها مشکلی نداره
اگه لطف کنین راهنمایی کنین ممنون میشم

یه سوال هم دارم: این یارو (phpbb3.0.0) کی می خواد یه طور رسمی معرفی بشه؟

ممنون
 

پیوست ها

  • DAJ_Glass.rar
    328.6 کیلوبایت · بازدیدها: 13

Hyper

Active Member
تست میکنم جواب میدم

در مورد phpBB 3.0 هم طبق گقته خود سایت phpBB حدود 1 سال دیگه ...

رضا
 

javad_hosseiny

New Member
این به دلیل تفاوت کد کاراکتر ی با ي می باشد (ی فارسی (یونی کد) با ي (عربی) (احتمال زیاد سیستم عامل شما از خانواده sp2 هست)
برای این منظور باید در فایل posting.php محتوی متغیر subject را اصلاح کنید
(والبته هر جا دیگری که این مشکل وجود دارد (چرا که تو تیتر عنوان فقط من این مشکل را دیدم ولی ممکن است جاهای دیگر نیز باشد که بنده به آن توجه نکرده باشم)
نحوه اصلاح متغیر subject در فایل posting.php:
در خط 552 بعد از دستور
PHP:
			$subject = ( !empty($HTTP_POST_VARS['subject']) ) ? trim($HTTP_POST_VARS['subject']) : '';

عبارت زیر را وارد کنید:
PHP:
			$subject = ereg_replace('ی','ي',$subject);


شیوه نوشتاری کدها اصلاح شد

رضا
 

Hyper

Active Member
javad_hosseiny گفت:
این به دلیل تفاوت کد کاراکتر ی با ي می باشد (ی فارسی (یونی کد) با ي (عربی) (احتمال زیاد سیستم عامل شما از خانواده sp2 هست)
برای این منظور باید در فایل posting.php محتوی متغیر subject را اصلاح کنید
(والبته هر جا دیگری که این مشکل وجود دارد (چرا که تو تیتر عنوان فقط من این مشکل را دیدم ولی ممکن است جاهای دیگر نیز باشد که بنده به آن توجه نکرده باشم)
نحوه اصلاح متغیر subject در فایل posting.php:
در خط 552 بعد از دستور
$subject = ( !empty($HTTP_POST_VARS['subject']) ) ? trim($HTTP_POST_VARS['subject']) : '';

عبارت زیر را وارد کنید:
$subject = ereg_replace('ی','ي',$subject);

ضمن تشکر از شما

خواهش میکنم در صورت امکان مطالب فوق رو به صورت کامل تر و مفهوم تر در بخش مقالات آموزشی phpBB بنویسید
تا من به صورت موضوع مهم درش بیارم

رضا
 

panahjoo

Member
javad_hosseiny گفت:
این به دلیل تفاوت کد کاراکتر ی با ي می باشد (ی فارسی (یونی کد) با ي (عربی) (احتمال زیاد سیستم عامل شما از خانواده sp2 هست)
برای این منظور باید در فایل posting.php محتوی متغیر subject را اصلاح کنید
(والبته هر جا دیگری که این مشکل وجود دارد (چرا که تو تیتر عنوان فقط من این مشکل را دیدم ولی ممکن است جاهای دیگر نیز باشد که بنده به آن توجه نکرده باشم)
نحوه اصلاح متغیر subject در فایل posting.php:
در خط 552 بعد از دستور
PHP:
			$subject = ( !empty($HTTP_POST_VARS['subject']) ) ? trim($HTTP_POST_VARS['subject']) : '';

عبارت زیر را وارد کنید:
PHP:
			$subject = ereg_replace('ی','ي',$subject);


شیوه نوشتاری کدها اصلاح شد

رضا
ببینید در دیتابیس BB همه کلماتی که " ی" توشونه دوبار ثبت میشن و این باعث میشه که حجم دیتا بیس در قسمت search word بسیار زیاد بشه.
آیا با این کد شما تمام "ی"های عربی به فارسی تبدیل میشن؟؟
ممکنه همونطور که هایپر عزیز گفتند مفصل توضیح بدین؟؟
با تشکر
 

irmetal

Member
من هم همین مشکل رو دارم

من هم دقیقا همین مشکل رو دارم.آیا مشکل شما حل شد؟
من هم همین کارا رو بکنم درست میشه؟اگه مشکل لز sp2 باشه چرا با سایتای دیگه این مشکل رو نداریم؟
 

panahjoo

Member
ولا من تغییرات را در posting.php دادم ولی متوجه تغییری نشده ام. یعنی نمیدونم از کجا تست کنم که درست شده!!
چون من وقتی یه تاپیک رو مینویسم برای مثال از هر دو نوع "ی" استفاده می کنم و بعد از فرستادن دقیقا به همون شکل هم نمایش داده میشن و به قول معروف Replace نمیشن!!
 

irmetal

Member
بله من هم دقیقا همین کار رو انجام دادم ولی درست نشد.
یک بار حروف ی رو بصورت معمولی وارد کردم که بعد از ذخیره و دوباره باز کردن ی ها در فایل posting.php به صورت علامت سوال در اومد و برای بار دوم هر دو ی رو به صورت اینکود نوشتم ولی باز هم درست نشد.
آیا شما فارسی ساز بهتری واسه ما سراغ ندارین؟من اون فارسی ساز رو از سایت رسمی php گرفتم.نمی دونم چه جور این همه سایت php درست کا می کنن.ما که خیلی بد شانسیم!
 
آخرین ویرایش:

panahjoo

Member
irmetal گفت:
آقای panahjoo لطفا اگه میشه آی دیه منوadd کنید.
irmetal_com
با عرض معذرت از شما به دلیل اینکه من از مسنجر استفاده نمی کنم نمی توانم آی دی شما را اد کنم ولی اگر مایل هستید در انجمنهای ما ثبت نام کنید تا اونجا در خدمتتون باشیم با تشکر
امیـــــــد
forum.irani.ch
 

javad_hosseiny

New Member
عزیزان بنده به همین روش در مورد فروم خودم استفاده می کنم و مشکلی ندارم

ببینید در دیتابیس 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 را در اینجا آپلود می کنم.
 

پیوست ها

  • posting.zip
    8.2 کیلوبایت · بازدیدها: 20

javad_hosseiny

New Member
البته بعد از پست متوجه شدم که مجددا کد 1740 (که معرف حرف ی فارسی بود) تایپ شده که همان عبارت & # 1740 ; (در اینجا بصورت فاصله به فاصله عبارت را وارد کردم) به حرف ی (فارسی) تبدیل شده (توسط خود سایت)
نهایتا دقت کنید که در دستور اصلاحیه موردنظر به جای حرف ی عبارت & # 1740 ; (البته بدون فاصله و از سمت راست به چپ تایپ کنید) را وارد نمایید (جهت مشاهده نحوه صحیح می توان به سورس فایل ضمیمه مراجعه نمایید)
 

panahjoo

Member
تست می کنم نتیجه را گزارش می کنم.
فایل آرشیو شدتون (زیپ) باز نمیشه. یه چک بکنید
 
آخرین ویرایش:

Hyper

Active Member
دوست عزیز javad_hosseiny

ضمن تشکر از شما

ممکنه آدرس انجمن شما رو داشته باشیم ؟

رضا
 

irmetal

Member
من از همه ی دوستان تشکر می کنم.من فروم رو پاک کرده بودم ولی دوباره در حال آپلود کردن اون هستم.smf رو نصب کنم ولی دیدم phpbb از هر نظر بهتر اونه دوباره.بهد از نصب کردن فایل شما رو قرار می دم.آقای panahjoo اگه در فروم شما درست جواب داد لطفا ما رو بی خبر نذارید.
من از آقای javad_hosseiny کمال تشکر رو دارم که منبع اطلاعاتی خودشون رو به روی ما باز کردن.
 

irmetal

Member
من دو باره نصب کردم و اون فایلی رو که آقای javad_hosseiny گذاشته بودن جایگزین کردم مشکل برطرف شد.
ممنون آقای پناهجو نمی دونم چه جوری ازتون تشکر کنم.
من یه مشکل دیگه هم دارم که اینجا نوشتمش اگه اینجا رو دیدید لطفا به این تاپیک هم یه سری بزنید.واقعا آقایی.
http://forum.majidonline.com/forum138/thread53742.html
 

javad_hosseiny

New Member
دوست عزیز javad_hosseiny

ضمن تشکر از شما

ممکنه آدرس انجمن شما رو داشته باشیم ؟
خواهش می کنم
انجمن موردنظر را به سفارش مؤسسه تحقیقاتی حضرت ولی عصر (عج) در آدرس forum.valiasr-aj.com قرار داده ام
 

R_Carlos

New Member
این کد مشکل به وجود میاره ! اگر از اول استفاده شه مشکلی نداره . اما این وقتی رو یه سایت که یوزر داشته باشه و یوزر های اون مثلا با ( ی مدل یونیکد ) ثبت نام کرده باشند به هیچ وجه موفق به لاگین نمیشوند .
 

جدیدترین ارسال ها

بالا