آژانس هواپیمایی
pop up

درخواست کمک برای Login به یک Webpage از طریق Winform

شروع موضوع توسط cyber boy ‏10 ژانویه 2008 در انجمن Visual C#.Net

  1. cyber boy

    cyber boy Registered User

    تاریخ عضویت:
    ‏6 ژانویه 2005
    نوشته ها:
    1,372
    تشکر شده:
    7
    محل سکونت:
    US
    سلام

    من میخوام از طریق یک Winform به عنوان مثال به سایت زیر لاگین کنم:
    http://EXAMPLESITE.com/vendors/login.php

    منتها به نتیجه نمیرسم.
    این کد C# :

    کد:
    private void GetData()
            {
    
                Uri uri = new Uri("http://EXAMPLESITE.com/vendors/login.php");
                WebClient client = new WebClient();
                
    
                // Create a series of name-value pairs to send
                NameValueCollection collection = new NameValueCollection();
                
    
                // Add necessary parameter-value pairs to the name-value container
                collection.Add("username", "ali_moosavi15");
                collection.Add("password", "astala");
                        
    
                // Upload the NameValueCollection
                byte[] response;
                response = client.UploadValues(uri.AbsoluteUri, "POST", collection);
                UTF8Encoding objUTF8 = new UTF8Encoding();
    
                // Display the response
                richTextBox1.Text(objUTF8.GetString(response));
    اینم کد HTML صفحه لاگین:

    کد:
    <html dir="rtl">
    <head>
    <link rel="stylesheet" href="style.css" type="text/css">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <meta http-equiv="Content-Language" content="fa">
    <title>Admin Login - Iran Market Center</title>
    </head>
    <body>
    <div align="center">
    <table border="0" width="800" cellspacing="0" cellpadding="0" height="100%">
    	<tr>
    		<td height="150" background="http://www.30ds.com/images/header.jpg">&nbsp;</td>
    	</tr>
    
    	<tr>
    		<td><div align="center">
    		<table border="0" width="300" cellspacing="0" cellpadding="0">
    			<tr>
    				<td>
    				<form method="POST" action="login.php" name="f1">
    					<fieldset style="padding: 2">
    					<legend>ورود فروشنده</legend><p align="center" style="margin-top: 0; margin-bottom: 0">
    
    					<font color="#FF0000"><br>
    					</font></p>
    
    					<table border="0" width="100%" cellspacing="0" cellpadding="0">
    						<tr>
    							<td align="center">نام کاربری</td>
    							<td><input type="text" name="username"></td>
    						</tr>
    						<tr>
    
    							<td align="center">کلمه عبور</td>
    							<td><input type="password" name="password"></td>
    						</tr>
    						<tr>
    							<td>&nbsp;</td>
    							<td>&nbsp;</td>
    						</tr>
    						<tr>
    
    							<td colspan="2" align="center">
    							<input type="submit" value=" ورود " name="B1">
    							<input type="reset" value="مجدد" name="B2"></td>
    						</tr>
    					</table>
    					</fieldset></p>
    				</form>
    				</td>
    			</tr>
    
    			</table></div>
    		</td>
    	</tr>
    	<tr>
    		<td height="20" dir="ltr" align="center"><font size="1" color="#000080">Powered By N.E.T E-commerce group © 2007</font></td>
    	</tr>
    </table>
    </div>
    <script lang="javascript" type="text/javascript">
    document.f1.username.focus();	
    </script>
    
    </body>
    </html>
    
    کسی میدونه مشکل از کحاست؟
     
  2. cyber boy

    cyber boy Registered User

    تاریخ عضویت:
    ‏6 ژانویه 2005
    نوشته ها:
    1,372
    تشکر شده:
    7
    محل سکونت:
    US
  3. amin_lili

    amin_lili کاربر تازه وارد

    تاریخ عضویت:
    ‏24 آپریل 2007
    نوشته ها:
    528
    تشکر شده:
    2
    محل سکونت:
    ای کاش آنجا ...
    والا من تا حالا این کد رو استفاده نکردم ولی خیلی بعید می دونم راهی باشه که بتونی پارامترهای درون صفحه وب رو از دورن win form ست کنی و بفرستی بهش. در واقع چطور می شه به صفحه login مقادیر user و pass رو فرستاد ؟
    قاعدتا صفحه login باید بوسیله query string مقادیر رو دریافت کنه یعنی مثلا شما از توی win form آدرس http://EXAMPLESITE.com/vendors/login.php?user='***'&pass='***' رو فراخوانی کنید و به این وسیله پارامترها رو پاس بدید به صفحه (که تا اینجاش کار ساده ای هست). حالا مساله اینجاست که چطور باید نتیجه رو از صفحه login بگیرید ؟!
    اینجاست که من توصیه میکنم اگر صرفا می خواید از درون win form به یک سایت login کنید خب یه web server ساده بنویسید که از درون web server بتونید به متدهای login دیتابیس دسترسی داشته باشید و نتیجه رو هم بگیرید و سپس از درون win form متصل بشید به web server و user و pass رو پاس بدید بهش و نتیجه رو بگیرید .
    اگه نامفهوم بود بگو بیشتر توضیح بدم
     
  4. cyber boy

    cyber boy Registered User

    تاریخ عضویت:
    ‏6 ژانویه 2005
    نوشته ها:
    1,372
    تشکر شده:
    7
    محل سکونت:
    US
    میشه در مورد webserver بیشتر توضیح بدید؟
    به نکته ای که هست اون صفحه لاگین رو من سورسشو ندارم و نتها چیزی که دارم همون کد html هست.

    سرچ که کردم با WebResponse و WebRequest هم گویا میشه یه کارایی کرد. درسته؟
     
  5. amin_lili

    amin_lili کاربر تازه وارد

    تاریخ عضویت:
    ‏24 آپریل 2007
    نوشته ها:
    528
    تشکر شده:
    2
    محل سکونت:
    ای کاش آنجا ...
    با این ها می تونی صفحه login رو درون win app نمایش بدی . و البته فایده ای هم نداره چون نمی تونی از صفحه login استفاده کنی .
    اما همونطور که گفتم اگه هدفت اینه که از درون win app وارد یک وب سایت بشی باید اولا یک وب سرویس روی اون وب سایت نوشته شده باشه درونش متدی برای ورود تعریف شده باشه . یعنی یوزر و پسورد رو بگیره و لاگین کنه . بعد از اون شما می تونید در win app به web service یه reference ایجاد کنید و همون متد رو فراخوانی کنید .

    در واقع web service پلی هست میان web app و win app . البته فقط این نیست ها !
    یه مثال می زنم . چطوریه که هر وب سایتی از راه می رسه یه بخش توی خودش داره که آب و هوای همه نقاط دنیا رو نشون می ده . اطلاعات رو از کجا میاره ؟ سایت weather.com یه وب سرویس طراحی کرده که اطلاعات آب و هوا رو ارائه می ده . این وب سرویس شامل چندتا متد هست که دسترسی محدود به دیتابیس آب و هوا دارن . شما با استفاده از این وب سرویس اطلاعات آب و هوا رو از اون سایت می گیری و درون سایت خودت نشون می دی .اکی ؟

    بنابراین لازمه در مورد web service ها مطالعه ای داشته باشی . اصلا سخت نیست . می تونی با دو سه روز وقت گذاشتن مشکلت رو برطرف کنی


    و در نهایت شما می گی به سورس صفحه لاگین دسترسی نداری . پس عملا امکان نوشتن یک وب سرویس و یا دسترسی به وب سرویس نوشته از قبل رو هم نداری . پس عملا بی خیال ماجرا شو . چون به نظر میاد می خوای به ربوت بنویسی که مدام یوزر و پسورد های مختلفی رو روی یک سایت چک کنه . که اصلا اینطوری ممکن نیست .
     
  6. cyber boy

    cyber boy Registered User

    تاریخ عضویت:
    ‏6 ژانویه 2005
    نوشته ها:
    1,372
    تشکر شده:
    7
    محل سکونت:
    US
    حدس میزدم که نشه با web service این کارو کرد.
    پس چطوریه که یه سری برنامه ها به ایمیل یاهم یا جیمیل لاگین میکنه؟ یه راهی داره حتما.
    روبات نمیخوام بنویسم... میخوام یه برنامه بنویسم که توی یه سری از page های توی اکانتم دنبال یه سری string بگرده و اونارو جمع کنه یه جا. منتها باید حتما لاگین کنم که بتونم برم تو اون صفحه ها.
    توی نت که سرچ کردم خیلیا همین سوال رو داشتنو به نتیجه رسیدن بعضی ها هم نرسیدن . همه اون کدهارو انتحان کردم که یا با webclient و uploadvalues بوده یا با WebResponse و WebRequest .
     
  7. boxilink
  8. H_R

    H_R مدیر بازنشسته

    تاریخ عضویت:
    ‏30 مارس 2005
    نوشته ها:
    3,285
    تشکر شده:
    15
    محل سکونت:
    North Pole
    به نظر من باید درست باشه کدت ! دوتا احتمال میدم !
    1- ممکنه آدرس صفحه ات کوئری استرینگ داشته باشه ، چون webclient کوئری استرینگ رو ساپرت نمیکنه ، البته باید یه خورده برنامه بنویسی تاکوئری استرینگ ها رو هم بهش بفهمونی !

    2- ممکنه بخاطر فیلد پسورد باشه ، من میگن یه کاری کن یه فرم خودت بساز ببین اوضاعش چطوریه ! ممکنه فیلد پسورد مشکل ایجاد کنه ( همینطوری دارم احتمال میدم تا حالابا وب کلاینت لاگین نکردم !

    ارورت چیه ؟! از کجا میفهی لاگین نشدی ؟
    اصلا ممکنه که لاگین شده باشی و توی مرحله بعد که میخوای از امکانات لاگین شدگی استفاده کنی نمیتونی چون کوکی رو نگه نمیداری ! میدونی که باید رو بروزرت کوکی نوشته بشه !
     
  9. cyber boy

    cyber boy Registered User

    تاریخ عضویت:
    ‏6 ژانویه 2005
    نوشته ها:
    1,372
    تشکر شده:
    7
    محل سکونت:
    US
    اون قسمت آخر هست که response رو بر میگردونه، که میریزمش توی richTextbox اونجا باز کد html صفحه لاگین رو بر میگردونه. کوکی هم یه سرچی باید بکنم ببینم چه جوریه. منم خودم تاحالا با این کلاس ها کار نکردم.
     
  10. H_R

    H_R مدیر بازنشسته

    تاریخ عضویت:
    ‏30 مارس 2005
    نوشته ها:
    3,285
    تشکر شده:
    15
    محل سکونت:
    North Pole
    من اتفاقا با webclient خیلی کار کردم ، کار های باحالی هم کردم :D متنها تاحالا لاگین نکرده بودم ! من احتمال خیلی زیادی میدیم که قضیه از کوکی اه باشه ! این بابا که کوئری استرینگ رو نمیفهمه کوکی رو بفهمه ؟! :D برو دنبال کوکی نتیجشم اینجا بذار .
     
  11. cyber boy

    cyber boy Registered User

    تاریخ عضویت:
    ‏6 ژانویه 2005
    نوشته ها:
    1,372
    تشکر شده:
    7
    محل سکونت:
    US
    لول ! با منی کوئری استرینگ نمیفهمه؟:D
    سریع شفاف سازی کن تا له نشدی:D:f34r:

    طبق تنایجی که فعلا بدست اومده استفاده از webclient واسه لاگین مجاز نمیباشد :d چون کار با کوکی و این کلاس دهن آدم صاف میشه. باید با WebResponse و WebRequest کار کرد تا کوکی هارو بشه راحت تر هندل کرد.
     
  12. H_R

    H_R مدیر بازنشسته

    تاریخ عضویت:
    ‏30 مارس 2005
    نوشته ها:
    3,285
    تشکر شده:
    15
    محل سکونت:
    North Pole
    تو مگه وب کلاینتی !

    دیدی گفتم !
     
  13. cyber boy

    cyber boy Registered User

    تاریخ عضویت:
    ‏6 ژانویه 2005
    نوشته ها:
    1,372
    تشکر شده:
    7
    محل سکونت:
    US
    یه چیزی!
    این سایته وقتی توی browser میخوام با کوئری برم توی اکانت نمیشه. اینطوری یعنی:
    کد:
    http://ExampleSite.com/vendors/login.php?username=xeeber&password=xeeber
    چی میشه یعنی؟!
     
  14. avajang.com .leftavajang.com.right
  15. H_R

    H_R مدیر بازنشسته

    تاریخ عضویت:
    ‏30 مارس 2005
    نوشته ها:
    3,285
    تشکر شده:
    15
    محل سکونت:
    North Pole
    خوب متد دریافت اطلاعاتش Post اه دیگه ! مگه بیقه سایتها رو اینطوری میتونی لاگین شی اصلا ؟!
     
  16. amin_lili

    amin_lili کاربر تازه وارد

    تاریخ عضویت:
    ‏24 آپریل 2007
    نوشته ها:
    528
    تشکر شده:
    2
    محل سکونت:
    ای کاش آنجا ...
    دوست عزیز این آدرس رو مطالعه فرمایید . شاید بتونه کمکتون کنه
     
  17. cyber boy

    cyber boy Registered User

    تاریخ عضویت:
    ‏6 ژانویه 2005
    نوشته ها:
    1,372
    تشکر شده:
    7
    محل سکونت:
    US
    دستت درد نکنه عزیز:)
    مطالعش میکنم ... فک کنم این روش هم یه جایی دیدم ولی زیاد کار نکردم روش... باید ببینم این جواب میده با نه.
    مرسی:happy: