PDA

View Full Version : مقاله: فرستادن مقادیر به سایت (کامل)



r0ot$harp
جمعه 05 مهر 1387, 16:47 عصر
سلام دوستان


در این انجمن تا به امروز بحث های زیادی شده غیر از بحث در مورد رد وبدل کردن اطلاعات در اینترنت .


منظورم استفاده از دو کنترل سبک و فوق قدرتمند Microsoft Internet Transfer Protcol و Microsoft Winsock Control .


خوب از نظر سادگی و انجام کارهای کوچک از Internet Transfer Protcol یا همان Inet می شه استفاده کرد ولی در پروژه های بزرگ و سنگین باید از Winsock استفاده کرد .


خوب من در این مقاله فقط به آموزش استفاده از Winsock می پردازم .

دوستان تاحالا Pdf و مقاله های زیادی در مورد Winsock نوشته شده و شما هم تمام آنها را خوانده اید و الان از حفظ هستید . ولی تنها نکته ای که در تمام این مقالات جاش خالی بوده و ذکر نشده (انتقال اطلاعات بین سایت و رابط کاربری ) بوده .


من هم در این مقاله می خوام این مبحث رو آموزش بدم .


ببینید دوستان در زبان برنامه نویسی وب برای فرستادن مقادیری به سرور از دو متد POST و GET استفاده می شود .


در زبان وب ما وقتی مثلا می خوایم به سرور نام و نام خانوادگی و سن رو اعلام کنیم باید مقادیری به سرور ارسال شود .


اول از همه باید ببینیم سرور اطلاعات را با استفاده از کدام متد دریافت می کند ؟

اگر POST بود باید اطلاعات POST بشه و اکر GET بود باید اطلاعات GET شود .

خوب تا این جا فهمیدیم POST و GET چیست !!!


حالا من آموزش رو با یه کار عملی شروع می کنم .


می خواهیم از طریق برنامه یه کلمه رو در Google.Com جستجو کنیم و نتایج رو در برنامه به صورت کد یا Html ببینیم .

خوب برای این کار اول باید Header کار رو پیدا کنیم .

قبل از آموزش من یه اشاره ای به Header بکنم .

وقتی ما در Google.Com رو Google Search کلیک می کنیم خود مرورگر اطلاعات رو به صورت اتوماتیک به سرور می فرستد و Response را دریافت می کند ولی ما می خواهیم کار Mozilla رو خودمون پیاده سازی کنیم .


ما دونوع Header داریم . Header مربوط به Get و Header مربوط به POST .


در Header مربوط به POST اطلاعاتی که معروف به Post DATA هستند در آخر Header قرار می گیرند ولی در Header مربوط به GET تمام Post DATA در اول Header قرار می گیرد .


فکر می کنم اگر یه خورده عملی توضیح بدم متوجه می شوید .


تمام Header هایی که برای جستجو کلمه در Google باید به سمت سرور Google فرستاده بشه از قرار زیر می باشد .





GET /search?hl=en&q=barnamenevis.org&btnG=Google+Search&aq=f&oq= HTTP/1.1
Host: www.google.com
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.google.com/
Cookie: SS=Q0=c2VnbWVudCBkb3dubG9hZGVyIHNvdXJjZQ; PREF=ID=5423368ccb5ab45f:LR=lang_fa:LD=en:NR=10:TM =1218468543:LM=1218475754:S=-8GJSzTzgisnVY6r; NID=15=feGH12ZSr2VMbbnlPIyimMa6QI9EpUj6G52EvgP06z8 fUSX2OCHpbFB-1wfx1H6y_f-6vVL7Tg1WPnLo0NQYmvzCXNibnWAIBUlJhqyhFx3Yzep8IKzJM bZHtl4p8TYa; SID=DQAAAHkAAAABldZeos4Gn0BVzccI-Vxeoe1JuixF3-cZp37sVcDiPh39-JvXtv6FV5cc5kRBGpngXdX44AJ7BKM3TJOI-CksGA5V-S6i5ia6sqdzsIjvmVgKoVv1TJ_BKlhzcuCWTctzwO42uKuOMPO 8jhgp75jMkMo4a3_5EhL5Z8L4vIK-aQ


خوب حالا اول به معرفی اجزای ساختار Header بالا می پردازم .



GET /search?hl=en&q=barnamenevis.org&btnG=Google+Search&aq=f&oq= HTTP/1.1



قسمت بالا با متد GET شروع شده است و اگر توجه کنید بعد از اون یه (/) قرار داده است . این به معنی این هست که باید بعد از (/) اطلاعات Post Data را قرار دهیم .

دوستان وقتی مقادیر 10 تکست باکس می خواهد به سرور فرستاده شود باید بین اسم و مقدار هر تکست باکس یه & قرار گیرد : مانند :


Text1=Ali
Text2=Hosien
Text3=Mina


برای فرستادن این مقادیر باید رشته ی زیر رو به وجود بیاریم :



Text1=Ali&Text2=Hosien&Text3=Mina


در بالا هم مقادیر رو مشاهده می کنید که تولید رشته ی Post Data رو کرده اند .

حالا مقادیر و کارشون رو توضیح می دم . :



search?
این مقدار نشان دهنده نام صفحه ای هست که باید اطلاعات به آن فرستاده شود .


hl=en
این مقدار نشان دهنده زبان هست که En هست .


q=barnamenevis.org
عبارتی که ما می خواهیم جستجو کنیم .


btnG=Google+Search
عبارت بالا یکی از مهم ترین عبارت ها هست که به سرور اعلام کی کند کاربر برروی Button جستجو کلیک کرده است .


aq=f&oq=

این قسمت هم به هیمن گونه می زاریم باشه . دست نمی زنیم .


و در آخر هم HTTP/1.1 نوع پروتکل دسترسی رو مشخص می کند .



Host: www.google.com
مقدار بالا نام میزبان رو مشخص می کند که در اینجا باید Google.Com باشد .

این نکته رو یاد آور بشم که نام Host باید همیشه با Www باشد و به هیچ عنوان Http:// نداشته باشد .



User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1

مقدار بالا برای خر کردن سرور به کار می رود که ما به سرور اعلام می کنیم ما داریم از مرورگر Mozilla با این مشخصات و پروتکل استفاده می کنیم .


در بالا مقادیر مهم رم معرفی کردم و مقادیر زیر در متد GET ثابت هستند .



Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://www.google.com/
و آخرین مقدار مقدار زیر می باشد .


Cookie: SS=Q0=c2VnbWVudCBkb3dubG9hZGVyIHNvdXJjZQ; PREF=ID=5423368ccb5ab45f:LR=lang_fa:LD=en:NR=10:TM =1218468543:LM=1218475754:S=-8GJSzTzgisnVY6r; NID=15=feGH12ZSr2VMbbnlPIyimMa6QI9EpUj6G52EvgP06z8 fUSX2OCHpbFB-1wfx1H6y_f-6vVL7Tg1WPnLo0NQYmvzCXNibnWAIBUlJhqyhFx3Yzep8IKzJM bZHtl4p8TYa; SID=DQAAAHkAAAABldZeos4Gn0BVzccI-Vxeoe1JuixF3-cZp37sVcDiPh39-JvXtv6FV5cc5kRBGpngXdX44AJ7BKM3TJOI-CksGA5V-S6i5ia6sqdzsIjvmVgKoVv1TJ_BKlhzcuCWTctzwO42uKuOMPO 8jhgp75jMkMo4a3_5EhL5Z8L4vIK-aQ

این مقدار رو باید با استفاده از علم Http پیدا کنید . کاره سختی نیست ولی منم نمی تونم برنامه Priv8 این کار رو اینجا معرفی کنم . برای پیدا کردن مقدار بالا باید سورس اصلی اون صفحه رو بخونید .


خوب تا اینجا توضیحات کاملی در این مورد دادم .


حالا می ریم سراغ کار عملی :

یه پروژه ایجاد کنید .
1) یک تکست باکس قرار دهید .
TxtHtml . که مشخه های این تکست باکس رو باید با این مقدار ها برابر کنید . MultiLine = True و ScrolBars = Vertical .

2)‌ یه Button هم به فرم اضافه کنید .
3) کنترل Winsock رو از قسمت Componet به فورم اضافه کنید .


برای اتصال به سرور Google اینگونه عمل می کنیم .




Private Sub Command1_Click()
If Winsock1.State <> sckConnected Then Winsock1.Close
Winsock1.Connect "google.com", 80

End Sub

اگر اتصال به درستی برقرار شود Event مربوط به Winsock1_Connect اجرا می شود که در این زمان باید اطلاعات زیر رو به سرور بفرستیم با استفاده از متد Winscok1.SendData .


زمانی که اطلاعات به صورت صحیح به سرور فرستاده شده باشد سرور جواب درخواست ما را ارسال می کند که این جواب را ما از طریق Winsock1_DataArrival دریافت می کنیم .


سورس کامل این برنامه به شرح زیر می باشد .




Dim Buffer As String

Private Sub Command1_Click()

If Winsock1.State <> sckConnected Then Winsock1.Close
Winsock1.Connect "google.com", 80

End Sub

Private Sub Winsock1_Connect()

Dim Data As String

Data = "GET /search?hl=en&q=barnamenevis.org&btnG=Google+Search&aq=f&oq= HTTP/1.1" & vbCrLf
Data = Data & "Host: www.google.com" & vbCrLf
Data = Data & "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.0.1) Gecko/2008070208 Firefox/3.0.1" & vbCrLf
Data = Data & "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8" & vbCrLf
Data = Data & "Accept-Language: en-US" & vbCrLf
Data = Data & "Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7" & vbCrLf
Data = Data & "Keep-Alive: 300" & vbCrLf
Data = Data & "Connection: keep-alive" & vbCrLf
Data = Data & "Referer: http://www.google.com/" & vbCrLf
Data = Data & "Cookie: SS=Q0=c2VnbWVudCBkb3dubG9hZGVyIHNvdXJjZQ; PREF=ID=5423368ccb5ab45f:LR=lang_fa:LD=en:NR=10:TM =1218468543:LM=1218475754:S=-8GJSzTzgisnVY6r; NID=15=feGH12ZSr2VMbbnlPIyimMa6QI9EpUj6G52EvgP06z8 fUSX2OCHpbFB-1wfx1H6y_f-6vVL7Tg1WPnLo0NQYmvzCXNibnWAIBUlJhqyhFx3Yzep8IKzJM bZHtl4p8TYa; SID=DQAAAHkAAAABldZeos4Gn0BVzccI-Vxeoe1JuixF3-cZp37sVcDiPh39-JvXtv6FV5cc5kRBGpngXdX44AJ7BKM3TJOI-CksGA5V-S6i5ia6sqdzsIjvmVgKoVv1TJ_BKlhzcuCWTctzwO42uKuOMPO 8jhgp75jMkMo4a3_5EhL5Z8L4vIK-aQ" & vbCrLf & vbCrLf

Winsock1.SendData Data

End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

Dim GetData As String

Winsock1.GetData GetData, vbString, bytesTotal

Buffer = Buffer & GetData & vbCrLf

TxtHtml.Text = Buffer

If InStr(1, Buffer, "</script></div>") <> 0 Then MsgBox "OK"

End Sub



امید وارم مطالب بالا مورد قبول شما دوستان واقع شده باشد .



باتشکر احسان

مهران رسا
پنج شنبه 25 تیر 1388, 08:47 صبح
سلام.

لطفاً اگه واستون زحمتی نیست منابعی که ازش استفاده می کنید هم معرفی کنید .

mmssoft
پنج شنبه 25 تیر 1388, 21:32 عصر
همچنین نمونه کاملی از این مقاله همراه با توضیحات بیشتر تو وبلاگ من وجود داره.
کافیه به وبلاگم برید و در پست اول همه توضیحات رو می بینید.
وبلاگ من (http://www.vbassistant.blogfa.com/)

007rap
چهارشنبه 21 خرداد 1393, 02:43 صبح
kar nkrd fk konam vbm moshkel dare damet gardm dadash mc bi payan bashi