PDA

View Full Version : سوال: yahoo چگونه اين كار را انجام ميدهد؟



rockpigeon
دوشنبه 08 تیر 1388, 12:40 عصر
سلام دوستان
اگر دقت كرده باشيد ‌، زماني كه در browser آدرسي مثل زير رو تايپ ميكنيد.
http://www.yahoo.com/your_yahoo_id
سايت yahoo پروفايل مربوط به id مورد نظر را نمايش ميده. سئوال من اين هستش كه چطور اين كار انجام ميشه؟آيا webservice اين كار رو انجام ميده؟

ممنون ميشم اگر راهنماييم كنين.

milade
دوشنبه 08 تیر 1388, 13:27 عصر
واضح نیست سوال ..

اومده UrlRewrite کرده و مثلاً ادرس اصلی این بوده :

Http://Yahoo.com/Check.aspx?user=Yahoo_ID
و اطلاعات میگیره .
موفق باشید

rockpigeon
دوشنبه 08 تیر 1388, 14:06 عصر
سئوالم رو واضح تر مي پرسم.
تصور كنيد شما دو تا id در سايت yahoo داريد ، اولين id شما به اين صورت هستش
milad@yahoo.com و ديگري مثلا milad88@yahoo.com و با هر دو id ميتوانيد در سايت yahoo وارد شويد. اگر شما در address bar مورد زير را تايپ كنيد.
http://profiles.yahoo.com/milad
يا
http://profiles.yahoo.com/milad88
پروفايل مربوط به id مورد نظر را نمايش ميده. حالا سئوال اينه كه چطوري اين اتفاق مي افته yahoo
به طور حتم براي هر id يك page ايجاد نكرده. ولي براي هر id يك پروفايل خاص داره.

موفق باشيد.

milade
دوشنبه 08 تیر 1388, 14:08 عصر
سلام

خوب همون طور که گفتم اومده این ایدی رو پاس داده و اطلاعات رو از بانک خونده !
الان کجای این کار برای شما گنگ هست ؟ کدوم قسمت ؟

موفق باشید

rockpigeon
دوشنبه 08 تیر 1388, 15:37 عصر
ممنون من مقاله اي با موضوع URL Rewriting in ASP.NET پيدا كردم كه ميتونه بهم كمك كنه.
موفق باشيد.

kamrannazari
دوشنبه 08 تیر 1388, 18:44 عصر
کار UrlRewriting تبدیل یک آدرس اینترنتی واضح و با معنا به یک آدرس واقعی دارای Query String جهت تفسیر موتور Asp.net است. دو آدرس زیر را در نظر بگیرید :
http://aspcode.ir/article.aspx?id=4&type=print
http://aspcode.ir/article-4-print.html
یقینا" آدرس دوم با معنی تر از آدرس اول است.در ضمن تا حدودی امکان هک شدن سایت از طریق تزریق عبارات Sql را کاهش می دهد. اجازه دهید ابزار های موجود برای UrlRewriting را بررسی کنیم.
بعد از ظهور Asp.net 2.0 خبر پشتیبانی استاندارد این تکنولوژی از UrlRewriting بسیار جالب توجه بود. برای این منظور در Asp.net 2.0 تنها کافیست مقداری تغییر در Web.Config دهید :
<urlMappings enabled="true">
<add url="~/show-5.htm"
mappedUrl="~/show.aspx?id=5" />
</urlMappings>
دقت فرمایید تنظیمات فوق متعلق به شاخه <system.web> می باشد و باید در این بخش از Web.Config تعریف شود. در مثال بالا url آدرسی است که کاربر مشاهده می کند و mappedUrl آدرس حقیقی ماست. اما همانطور که از ظواهر امر پیداست این روال کاری، تنها برای مواقعی مفید خواهد بود که تعداد دفعات استفاده محدود باشد و در صورتی که تعداد آدرس ها بالا باشد ، مدیریت آنها بسیار کار مشکل و زمانبری خواهد بود.
برای حل این مشکل ابزار های دیگری در دسترس برنامه نویسان قرار گرفته است. یکی از بهترین ابزار ها را می توان در سایت www.UrlRewriting.net (http://www.UrlRewriting.net) یافت. جهت استفاده از این ابزار که Open Source هم می باشد ، می توانید مستندات آن و تمام آنچه که نیاز دارید از آدرس فوق دانلود کنید.
هر چند که مستندات و مطالب ارائه شده در سایت فوق کاملا" جامع است ، ولی در ادامه این مقاله، توجه شما را به مثال هایی از UrlRewriting در Asp.net جلب می کنم.
ابتدا فایل ضمیمه مقاله را دریافت کنید و Intelligencia.UrlRewriter.dll را به پوشه Bin پروژه خود انتقال دهید. حال مراحل زیر را جهت بازخوانی یک آدرس ثابت دنبال کنید :
فایل Global.asax را باز و رویداد Application_BeginRequest را بصورت زیر کد نویسی می کنیم. همانطور که از نام این رویداد پیداست زمانی کد اجرا می شود که درخواستی به سمت موتور Asp.net ارسال شود.
if (Request.Url.ToString().Contains("show.htm"))
{
Context.RewritePath("show.aspx");
}
در این مثال محتوای صفحه ای با نام show.htm که بصورت مجازی ایجاد شده است و وجود خارجی ندارد از صفحه ای دیگر با نام show.aspx خوانده می شود.
سپس فایل web.config را باز و محتوای آن را به صورت زیر تنظیم نمایید :
<configSections>
<section name="rewriter" type="Intelligencia.UrlRewriter.Configuration. RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter"/>
</configSections>
<httpModules>
<add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
</httpModules>
<rewriter>
<rewrite url="show.htm" to="show.aspx"/>
</rewriter>

لطفا" به محل قرار گرفتن تغییرات دقت ویژه ای داشته باشید :
<configSections> : داخل تگ <configuration> قرار گیرد.
<httpModules> : داخل تگ <system.web> قرار گیرد.
<rewriter> : داخل تگ <configuration> و خارج و بعد از تگ<system.web> قرار گیرد.
توجه فرمایید کد کامل برنامه را نیز می توانید در انتهای برنامه دانلود نمایید.
مخفی کردن Query String :
شاید به ذهن شما رسیده باشد که چگونه می توان آدرس های مجازی دارای Query String را نیز بازنویسی کنیم. این کار نیز بسیار ساده است و تفاوتهای جزئی با مثال بالا دارد.
برای اینکار دوباره فایل Global.asax را باز و رویداد Application_BeginRequest را بصورت زیر کد نویسی می کنیم :
if (Request.Url.ToString().Contains("show-(.+).htm"))
{
Context.RewritePath("show.aspx?id=$1");
}
علامت (.+) نماینده یک متغیر است که مقدار Query String را می گیرد و $1 در خط بعدی همان مقدار (.+) و نماینده مقدار Query String در آدرس حقیقی است. همچنین تگ rewrite را بصورت زیر تغییر دهید :
<rewrite url="show-(.+).htm" to="show.aspx?id=$1"/>
در صورتی که آدرس شما دارای بیش از یک پارامتر Query String است (برای مثال سه پارامتر) بصورت زیر عمل کنید :
show-(.+)-(.+)-(.+).htm
Show.aspx?Page=$1&amp;Id=$2&amp;state=$3
همچینین تگ rewrite را مانند مثالها قبلی تغییر دهید.
فکر می کنم با مثال های متعدد در این مقاله، شما این مهارت را پیدا کرده باشید تا آدرس ها را بصورت مجازی ایجاد کنید.
نکته :
دقت کنید که در بازخوانی آدرسهای با چندین پارامتر Query String در قسمت آدرس حقیقی قبل از & ، amp; را قرار دهید. در ضمن برای بازخوانی مقدار Query String نیاز به کد نویسی خاصی نیست و با در نظر گرفتن مثال فوق بعد از UrlRewriting با دستور زیر در صفحه show.aspx می توانیم مقدار Query String را بخوانیم :
Response.Write((string)Request.QueryString["id"]);

milade
دوشنبه 08 تیر 1388, 18:51 عصر
سلام

با تشکر از مطالب اموزندتون ، اما UrlMapping و UrlRewriting با هم فرق دارند و اصلاً ربطی به هم ندارند ...

مطلب مخلوطی از هر دو بود که بایست تفکیک بشه .

موفق باشید