PDA

View Full Version : گزارش نقص فنی سایت



problem
یک شنبه 12 آذر 1385, 14:07 عصر
سلام
سایت دچار یک نقص فنی مهم شده: کاراکترهای نیم فاصله درست نشون داده نمیشن! به جاشون * نشون داده میشه. مثلاً «می شود» رو اگر بخوایم درست بنویسیم باید با نیم فاصله بنویسیم که سایت به صورت «می*شود» نشون میده. اما همیشه این‌طوری نیست، و من گمان می‌کنم فقط وقتی که از سیستم پاسخ سریع استفاده می‌شه این پیش می‌آد. (مثال (http://www.barnamenevis.org/forum/showpost.php?p=286593&postcount=3))
امیدوارم بتونید رفعش کنید.

Mojgan110
یک شنبه 12 آذر 1385, 18:40 عصر
هک تنکس هم حذف شده ؟ http://www.millan.net/funp/100/witchbrew.gif

problem
یک شنبه 12 آذر 1385, 19:03 عصر
هک تنکس هم حذف شده ؟ http://www.millan.net/funp/100/witchbrew.gif

من یه جای دیگه خوندم که به زودی سیستم تشکرها دوباره راه اندازی می‌شه.

problem
دوشنبه 13 آذر 1385, 16:41 عصر
در باب مشکلی که در مورد سایت مطرح کردم، لازم به یاد آوری هست که این فروم (http://forum.persiannetworks.com) هم که با VBulletin کار می*کنه، هم*چین مشکلی رو نداره، و این مساله رو من اول بار در فروم برنامه نویس دیدم.

oxygenws
دوشنبه 13 آذر 1385, 18:01 عصر
نسخه 3.6 این مشکلو داره... من جاهای دیگه این مشکلو دیدم...

problem
دوشنبه 13 آذر 1385, 18:14 عصر
به خود vB* هم گزارش دادین؟ به هر حال ادیتور vB با این کد ران می*شه:

new vB_Text_Editor('vB_Editor_QR', 0, '17', '1');
و چه بسا با اصلاح کد JS پشتش، قضیه حل شه. شاید اگر وقت کنم، یک دور JS مربوط به ارسال پیغام به طور AJAX رو چک کنم.

Hossein Bazyan
دوشنبه 13 آذر 1385, 19:49 عصر
من در پستهای دوستان این مشکل را میبینم اما در پستهایی که من میفرستم این مشکلات نیست .

problem
دوشنبه 13 آذر 1385, 21:17 عصر
لطفا به این دو سوال جواب بدهید:
شما در پست چه کسی غیر از من این مشکل را دیدید؟؟
آیا شما با «پاسخ سریع» هم که پست کنید، این مشکل را ندارید؟؟

Hossein Bazyan
سه شنبه 14 آذر 1385, 00:21 صبح
پاسخ سریع را نمیدانم این پست را با پاسخ سریع نوشتم

Hossein Bazyan
سه شنبه 14 آذر 1385, 00:22 صبح
نه همانطور که مشاهده میکنید این مشکل را در پاسخ سریع من ندارم و دوستان را نمیدانم

problem
سه شنبه 14 آذر 1385, 13:26 عصر
خوب شما در آن چیزی که با پاسخ سریع نوشتید از کاراکتر نیم فاصله استفاده نکردید. اگر کیبورد فارسی‌تان اصلاح شده باشد (یعنی از DLLی به جز DLL اصلی ویندوز استفاده کنید، یا از برنامه TrayLayout‌استفاده کنید) آن وقت، با فشردن SHIFT+SPACE می‌توانید نیم فاصله وارد کنید.
تنها این کاراکتر هست که به * تبدیل می‌شود. یعنی «می‌دانم» با نیم فاصله بین «می» و «دانم» را به می*دانم تبدیل می‌کند، اما «می دانم» با فاصله بین «می» و «دانم» مشکل ندارد.

Mohammad_Mnt
سه شنبه 14 آذر 1385, 14:01 عصر
این*یک*پست*آزمایشی*با*پاسخ*س ریع*است!

پ.ن. : درست است! فاصله مجازی رو به ستاره تبدیل می کند

problem
سه شنبه 14 آذر 1385, 14:20 عصر
من با مرورگرهای دیگر هم تست کردم، مثل IE و Firefox. همه جا یک نتیجه داشت. هنوز وقت نکردم تمام JS*ها رو مرور کنم.

problem
چهارشنبه 15 آذر 1385, 12:41 عصر
خوب نتیجه تحقیقات بنده (!) از این قراره:

کدی که مسئول فرستادن پیغام سریع به صورت AJAX هست، در فایلی به نام vbulletin_qucik_reply.js ذخیره شده. در این فایل سطر ۱۷۹ دستوری هست به شکل زیر:



submitstring += '&ajax_lastpost=' + PHP.urlencode(ajax_last_post);


که هدفش اینه که متن پیام رو وقتی برای سرور می‌فرسته، به صورت urlencoded باشه تا مشکلی پیش نیاد. اما ظاهراً متد urlencode از شیئ PHP باعث اون تغییر نامطلوب نیم‌فاصله‌ها به * هم می‌شه.

در سطر ۶۴۲ از فایل vbuklletin_global.js جایی هست که جناب PHP تعریف شده:



var PHP = new vB_PHP_Emulator();


و اون متد به خصوص هم در سطر ۵۷۸ همون فایل تعریف شده:



vB_PHP_Emulator.prototype.urlencode = function(text)
{
text = escape(text.toString()).replace(/\+/g, "%2B");

// this escapes 128 - 255, as JS uses the unicode code points for them.
// This causes problems with submitting text via AJAX with the UTF-8 charset.
var matches = text.match(/(%([0-9A-F]{2}))/gi);
if (matches)
{
for (var matchid = 0; matchid < matches.length; matchid++)
{
var code = matches[matchid].substring(1,3);
if (parseInt(code, 16) >= 128)
{
text = text.replace(matches[matchid], '%u00' + code);
}
}
}

// %25 gets translated to % by PHP, so if you have %25u1234,
// we see it as %u1234 and it gets translated. So make it %u0025u1234,
// which will print as %u1234!
text = text.replace('%25', '%u0025');

return text;
}


اما این متدی که می‌بینید رو اگر خودتون تستش کنید، می‌بینید که چیزی که return می‌کنه، نیم‌فاصله‌ها رو خراب نمی‌کنه! من حتی پا فراتر گذاشتم و با فایرفاکس، کمی JS‌ها رو روی همین صفحه دستکاری کردم، و متن «می‌دانمممممممممم» رو بهش دادم سابمیت کنه، این رو برگردوند:



%u0645%u06CC%u200C%u062F%u0627%u0646%u0645%u0645%u 0645%u0645%u0645%u0645%u0645%u0645%u0645%u0645%3Cb r%3E


که اگر شما همین رو unescape کنید، دوباره به «می‌دانمممممممممم» می‌رسید، نه به «می*دانمممممممممم»!!

نتیجه منطقی: Javascript‌ها مشکلی ندارند! مشکل از کد PHP ای هست که پیام رو به طور Encoded می‌گیره، اما موقع Decode‌ کردن خرابش می‌کنه. از اون‌جایی که من به کد vbulletin دسترسی ندارم، نمی‌تونم روی PHPاش بررسی انجام بدم. فقط خواستم پیشنهاد کنم، اگر شما vB رو خریدید، و اشتراک قانونی دارید، به Supportشون راجع به این باگ خبر بدید، شاید تا نسخه بعدی درستش کردن.

oxygenws
چهارشنبه 15 آذر 1385, 21:30 عصر
بسیار عالی.... ممنونم :)

problem
جمعه 24 آذر 1385, 12:58 عصر
ظاهراً این مشکل برطرف شده‌است. من الآن دارم این را با پاسخ سریع می‌فرستم.