چطوزی می‌شه تو آدرس بار قسمت query string را مخفی کرد؟

esf-kh

Member
با درود . چندی پیش تو یکی از فروم‌ها که متاسفانه یادم نیست کدوم بود ( الیته این فروم را هم سرچ کردم ولی مطلب را پیدا نکردم ) یکی سوال کرده بود که چطوری می‌شه تو آدرس بار کاربر در آدرس بار فقط url را ببیند و query string مخفی باشد . مثلا www.mydomain.com/doc/test.asp?id=5 به صورت www.mydomain.com/doc نمایش داده شود ولی در عمل بخش الحاقی به url عملا موجود باشد و سایت با آن کارکند . مثل سایت‌هایی که با ajax طراحی شده‌اند . جواب‌هایی که داده شد بیشتر در مورد ajax بود . اما یکی روشی را به اسم روش فولدر معرفی کرده بود که چند تا اسکریپت java scrtip هم داده بودند . سوال من اینجاست که آیا کسی در مورد این روش اطلاعی دارد ؟ یا اگر نه روشی هست که بشه اینکار را کرد ؟ من نمی‌خواهم سایتم را که با asp هست با ajax بسازم . بلکه فقط همین مورد نظر من هست . لطفا راهنمایی کنید . سپاسگزارم
 

yasak

Member
سلام،
1- مقدار هات رو بریز توی session و و توی صفحه دوم از مقدار های ذخیره شده توی session استفاده کن
و یا
2- اگه از net. استفاده می کنی بریز توی Context و با Server.Transfer برو به صفحه بعد و اونجا مقدار ها رو از Context بخون
و یا (که اینون خیلی پیشنهام نمی کنم)
3- مفدار ها رو بریز توی یه html form و با javascript و با دستور document.myform.submit فرمت رو submit کن به صفحه دوم و اونجا مقدار هات رو بخون.

کلا هرچی روش هات بدون javascript باشه بهتره، چون کاربر ممکنه javascript رو disable کرده باشه (که خیلی احتمال داره) و اون وقت برنامه درست کار نخواهد کرد
 

esf-kh

Member
دوست گرامی yasak سپاسگزارم . فکر کنم بهترین راه همان session بود که فرمودید . فقط سوال من این است که اگر تعداد کاربرهای سایت بالا بره استفاده از session تاثیر منفی نمی‌زاره ؟ در ضمن از امیر هم بسیار سپاسگزارم . ببینید در اصل هدف من مخفی کردن فایل asp هست که در آدرس بار خودشو نشون می‌ده . www.test.com/doc/?q=1 روش فولدر را من بلد نیستم . اگر ممکن است در مورد آن توضیح دهید .
 

esf-kh

Member
دوست گرامی yasak در آدرس فرضی زیر www.test.com/doc/test.asp?q=1 با استفاده از session من فقط می‌تونم بخش q=1 را ذخیره و انتقال بدم . ولی فکر نمی‌کنم بتونم test.asp را مخفی کنم . آیا راه حلی برای این موضوع سراغ دارید . لطفا راهنمایی فرمایید .
 

yasak

Member
سلام،
استفاده از Session مسلما تاثیر منفی خواهد گذاشت، و این شما هستی که باید بین تاثیر منفی روی Performance و نمایش داده شون QueryString ها یکی رو انتخاب کنی.

در مورد نشون داده نشدن test.asp تا راه وجود داره :
1- صفحه test.asp رو به عنوان default content page توی IIS تنظیم کن و آدرس صفحه رو به این صورت استفاده کن :
www.test.com/doc/?q=1

2- اسم صفحه test.asp رو به default.asp تغییر بده و آدرس رو به صورت زیر استفاده کن :
www.test.com/doc/?q=1

3- با استفاده از ISAPI هم می شه این کار رو انجام داد. که متاسفانه من تاحالا باهاش کار نکردم. سایت هایی مثل یاهو از ISAPI برای parse کردن query string هاشون استفاده می کنن.

نکته مهم اینه که در دو تا روش اول، باز هم اسم صفحه قابل تشخیص هست. به هر حال اسم صفحه و بسته با تنظیمات وب سرور مثلا یکی از مورد های default.asp, index.asp, default.aspx, index.aspx و ... خواهد بود. حتی اگه default content page روی چیزی به غیر از اینها تنظیم شده باشه، باز هم با monitor کردن packet هایی که بین web browser و وب سرور رد و بدل می شه باز هم اسم صفحه رو می شه فهمید. اما با استفاده از روش ISAPI.dll فکر نمی کنم اسم صفحه که داره اجرا می شه رو فهمید. چون ISAPI مقادیر query string رو می گیره و متناسب با اون یه صفحه (یا بهتره بگم ماژول) رو پشت صفحه اجرا می کنه و تنایج رو بر می گردونه. (البته باز هم گم، چون با ISAPI حرفه ای کار نکردم، نمی دونم که واقعا این اتفاق می افته یا نه)
 

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

بالا