ورود

View Full Version : سوال: اعتبار سنجی آدرس ها



mehdi-ghafari
دوشنبه 22 خرداد 1391, 12:43 عصر
سلام دوستان
من تو سایتم اومدم از طریق UrlRouting عنوان هر خبر رو در ادامه آدرس اضاف کردم و شده به این صورت:
http://domain.com/1234/news title
بعد اومدم یه تابع نوشتم که اون news titleیا "عنوان خبر" رو بگیره و یه سری کاراکترها رو Replace میکنم. از جمله فاصله ها و " و , و غیره
من تو تابع حدود 15 بار عمل Replace رو انجام دادم و باز هم بعضی مواقع یه کاراکترهایی میاد تو عنوان خبر که بعد از کلیک بر روی خبر از آدرس خطا میگیره و میگه از کاراکترهای نامعتبر استفاده شده که من اون کاراکتر هم به Replaceهای نوشته شده تو تابع استفاده میکنم
حالا میخوام بدونم آیا راهی هست که نیاز به این همه دردسر نباشه و خودش بیاد اون رشته ای رو که بهش میدی معتبر کنه برای استفاده در آدرس بار؟؟؟

ممنونم دوستان

yilmaz2000
دوشنبه 22 خرداد 1391, 14:17 عصر
با سلام

چون کدینگ همیشه مشکل ایجاد می کنه پیشنهاد می کنم بجای عنوان خبر در url از کد خبر یا چیز مشابهی استفاده کنی

(یعنی صورت مسئله رو پاک کن)

mehdi-ghafari
دوشنبه 22 خرداد 1391, 14:44 عصر
ممنونم از توجه شما
مسئله کدینگ معمولا تو IE مشکل ساز هست. و نمیشه به خاطر این مسئله صورت مسئله رو عوض کنی. در کل بجای تغییر صورت مسئله باید راه چاره چست. خیلی بهتره.

clover
دوشنبه 22 خرداد 1391, 15:25 عصر
از توابع موجود در کلاس HttpUtility استفاده کنید. در این مورد UrlEncode مفید هست. البته باز هم باید بعضی از کاراکتر ها رو جابه کنید

mehdi-ghafari
دوشنبه 22 خرداد 1391, 15:27 عصر
میشه لطفا بیشتر راهنمایی کنید
اگه امکانش هست یه نمونه بدید
ممنونم

clover
دوشنبه 22 خرداد 1391, 16:02 عصر
Url = HttpUtility.UrlEncode(Title.Replace(".", "-").Replace(" ", "-"));

البته نیازی به جا به جا کردن dot و space با dash نیست اما بهتر و زیباتره و امکان اشتباه گرفته شدن با مسیر یک فایل پایین میاد. همچنین می تونید از تابع Replace در کلاس Regex برای جا به جایی استفاده کنید.

موفق باشید

mehdi-ghafari
دوشنبه 22 خرداد 1391, 17:51 عصر
ممنونم از شما دوست من
من الان از همین روش استفاده میکنم. البته من تعداد کاراکترهای بیشتری رو ریپلس میکنم. از جمله []{}*)(.:*&^%$ و غیره.
ولی الان میخوام بدونم راه اصولیتر، راحتتر و حرفه ای تری هست که اونو پیاده کنم. چون استفاده از تابع Replace به صورت پی در پی اونم به تعداد، روی سرعت برنامه هم قطعا تاثیر منفی داره.

clover
دوشنبه 22 خرداد 1391, 20:06 عصر
دوست عزیز
اون تابعی که عرض کردم همین کار رو انجام میده
در ضمن عرض کردم می تونید که با Regex کار کنید