Get-Post-Session
Download
Report
Transcript Get-Post-Session
การรั บส่ งข้ อมูลระหว่ างเว็บเพจโดยใช้
GET/POST Method และ Session
มี 2 กรณี คือ
Request
เว็บบราวเซอร์ จะส่งคาสัง่ หรื อข้ อมูลไปยังเว็บเซิฟเวอร์ ซึง่ จะทา
หน้ าที่ประมวลผลคาสัง่ ในส่วนของ server side script
Response
เว็บเซิฟเวอร์ จะส่งผลลัพธ์ในรูปแบบของแท็ก HTML ไปแสดงที่
เว็บบราวเซอร์
2
เว็บบราวเซอร์ จะนาข้ อมูลในฟอร์ มมาจัดรูปแบบเป็ น Query String
แล้ วระบุตอ่ ท้ าย URL ของเพจปลายทางที่จะส่งข้ อมูลไปให้
ข้ อดี
◦ ผู้ใช้ สามารถตรวจสอบ query string ได้ ในช่อง address
◦ สามารถบันทึก url เก็บไว้ โดยไม่ต้องเสียเวลาป้อนข้ อมูลซ ้า
ข้ อเสีย
◦ ไม่มีความปลอดภัย
◦ ปริมาณข้ อมูลที่สง่ ถูกจากัดที่ 2048 ตัวอักษร (256 byte)
◦ ไม่สามารถส่งไฟล์ได้
3
ต้ องกาหนดวิธีการส่งข้ อมูลในแท็กให้ เป็ นแบบ get
<form method=“get” id=“form1” runat=“server”>
4
ค่าของตัวแปรจะถูกส่งมาโดยใช้ query string ผ่าน url
รู ปแบบ
Request.QueryString[“ชื่อตัวแปร”]
ตัวอย่าง url
catalog.aspx?name=somchai&id=012&color=blue
การแสดงข้ อมูล
Request.QueryString[“name”]
Request.QueryString[“id”]
Request.QueryString[“color”]
5
กาหนดให้ สร้ างเว็บเพจ team.aspx ดังรูป
tbName
tbTeam
btnSubmit
เพิ่ม element method ลงในแท็ก form
<form id="form1" method="get" runat="server"> …….. </form>
6
เพิ่มคาสัง่ ต่อไปนี ้ให้ กบั ปุ่ ม OK เพื่อใช้ ในการส่งค่าไปยังเว็บเพจถัดไป
Response.Redirect(……คำสัง่ ทีล่ ิ้ งค์ไปเพจถัดไป พร้อมกับส่งค่ำตัวแปร…);
7
สร้ าง label ไว้ แสดงข้ อมูลในหน้ า Default2.aspx
lbName
lbTeam
เขียนคาสัง่ ให้ แสดงผลตัวแปรที่ถกู ส่งค่ามา ภายในเมธอด Page_Load
ผลลัพธ์หน้ า Default2
8
ข้ อมูลไม่ได้ ถกู ระบุเป็ น query string ต่อท้ าย URL
ถูกกาหนดเป็ น default สาหรับฟอร์ ม
ข้ อดี
◦ ข้ อมูลที่สง่ ไปจะเป็ นความลับ เนื่องจากบราวเซอร์ จะไม่แสดงข้ อมูล
ในช่อง address
◦ ส่งข้ อมูลได้ มากกว่าวิธี Get โดยส่งข้ อมูลได้ ครัง้ ละ 64 KByte
ข้ อเสีย
◦ การส่งข้ อมูลต้ องทาผ่านฟอร์ มเท่านัน้
◦ ผู้ใช้ ไม่สามารถบันทึก url เก็บไว้ สาหรับการใช้ งานภายหลัง
9
ผู้ใช้ จะมองไม่เห็นข้ อมูลที่สง่ ไปให้ กบั เซิฟเวอร์ ผา่ นทาง URL
<form method=“post” id=“form1” runat=“server”>
แสดงค่าข้ อมูลที่รับมา ใช้ คาสัง่
◦ Request.Form[“ชื่อคอนโทรล”]
เช่น
Request.Form[“tbName”]
◦ PreviousPage.FindControl(“ชื่อคอนโทรล");
เช่น TextBox TB1 = (TextBox)PreviousPage.FindControl(“tbName");
lbDisplay.Text = TB1.Text ;
10
กาหนดให้ สร้ างเว็บเพจ team.aspx ดังรูป
tbName
tbTeam
btnSubmit
เพิ่ม element method ลงในแท็ก form
<form id="form1" method=“post" runat="server"> …….. </form>
เพิ่ม property PostBackURL ให้ กบั ปุ่ ม btnSubmit
<asp:Button ID="btnSubmit" runat="server" Text="Submit"
PostBackUrl="~/Default2.aspx" />
11
ไม่ต้องเพิ่มคาสัง่ ลิ ้งค์ใน event click ของปุ่ ม btnSubmit เพราะได้ ใช้ คาสัง่
PostBackURL ให้ กบั ปุ่ ม btnSubmit แล้ ว
12
สร้ าง label ไว้ แสดงข้ อมูลในหน้ า Default2.aspx
lbName
lbTeam
เขียนคาสัง่ ให้ แสดงผลตัวแปรที่ถกู ส่งค่ามา ภายในเมธอด Page_Load
ผลลัพธ์หน้ า Default2
13
เป็ น Object ที่ถกู สร้ างขึ ้นจากฝั่ ง server และใช้ ทรัพยากรที่ฝั่ง server
(จัดเก็บที่ฝั่ง server)
แต่ละครัง้ ที่ client ติดต่อมายัง server จะถือว่ามี 1 session เกิดขึ ้น
เช่น ผู้ใช้ 2 คนติดต่อมายัง server ถือว่ามี 2 session
หรื อ ผู้ใช้ คนเดียวกันเปิ ด web browser 2 หน้ าต่างก็ถือว่ามี 2 session
เช่นกัน
แต่ละ session จะมี session id เฉพาะไม่ซ ้ากัน
14
Session จัดเก็บข้ อมูลมี datatype เป็ น object ใช้ คาสัง่ ในการสร้ างดังนี ้
◦ Session[“ชื่อsession”] = ค่าที่จะกาหนดให้ ; หรื อ
◦ Session[เลขindex] = ค่าที่จะกาหนดให้ ;
เช่น
◦ Session[“fname”] = “Tomy White”;
◦ Session[“lname”] = textbox1.text;
◦ Session[“age”] = 18;
◦ Session[0] = 25.5;
◦ Session[1] = true;
15
เมื่อใช้ object session จะมีการสร้ างหมายเลข session id ให้ อตั โนมัติ
ซึง่ เป็ นค่าที่ได้ จากการสุม่
ใช้ คาสัง่ Session.SessionID
16
ลบเฉพาะ session key ที่ต้องการ
Session.Remove(“ชื่อตัวแปรที่ต้องการลบ”)
Session.RemoveAt(indexของตัวแปร);
ลบทัง้ session
Session.RemoveAll()
Session.Clear()
17
กาหนดให้ สร้ างเว็บเพจ team.aspx ดังรูป
tbName
tbTeam
btnSubmit
ไม่ต้องระบุ element method ลงในแท็ก form
<form id="form1" runat="server"> …….. </form>
18
เพิ่มคาสัง่ ในเมธอด click ของปุ่ ม btnSubmit โดยสร้ าง session และใช้ คาสัง่
transfer ไปหน้ าถัดไป
19
สร้ าง label ไว้ แสดงข้ อมูลในหน้ า Default2.aspx
lbName
lbTeam
เขียนคาสัง่ ให้ แสดงผลตัวแปรที่ถกู ส่งค่ามา ภายในเมธอด Page_Load
ผลลัพธ์หน้ า Default2
20
สร้ าง DropdownList ให้ ผ้ ใู ช้ เลือกอาหารหรื อเครื่ องดื่ม แล้ วกาหนด AutoPostback
เป็ น true
สร้ าง MultiView โดยกาหนดให้ ภายในประกอบด้ วย 2 View ย่อย
21
ภายใน View1 ใส่ข้อมูลดังภาพล่าง
◦ ใส่ Checkbox แสดงรายการอาหาร และกาหนด AutoPostback=true
◦ ใส่ TextBox เพื่อเก็บจานวนอาหาร กาหนด AutoPostback=true และ
Visible=false (ตังชื
้ ่อเป็ น tbFQ1 และ tbFQ2)
◦ ใส่ TextBox เพื่อแสดงราคาอาหาร กาหนด Visible=false และ ReadOnly=true
(ตังชื
้ ่อเป็ น tbFT1 และ tbFT2)
tbFQ1
tbFQ2
tbFT1
tbFT2
22
เขียนโค้ ดของ DropdownList เมื่อคลิก๊ เลือกรายการตัวเลือกที่เปลี่ยนแปลงไป ให้
แสดง View ตามที่กาหนด ใช้ คาสัง่ MultiView1.SetActiveView(View1); โดยเขียน
ในเมธอด SelectedIndexChanged ของ DropdownList
23
เมื่อผู้ใช้ เลือก CheckBox รายการอาหารใดๆ ให้ แสดง tbFQ1 และ tbFT1 ออกมา
และเมื่อผู้ใช้ ไม่เลือก CheckBox รายการอาหารใดๆ ให้ ปิดการแสดงผลของ tbFQ1
และ tbFT1 โดยเขียนในเมธอด CheckedChanged ของ CheckBox
24
สร้ างตัวแปร (price1, price2) เพื่อเก็บราคาอาหารแต่ละรายการ ภายในคลาส
เมื่อผู้ใช้ พิมพ์จานวนสัง่ ซื ้อใน tbFQ1 ให้ คานวนราคาอาหารแต่ละรายการทันที แล้ ว
แสดงผลผ่าน tbFT1.Text โดยเขียนโค้ ดในเมธอด TextChanged ของ tbFQ1 นัน้
25
สร้ าง button1 เพื่อส่งข้ อมูล โดยวางไว้ นอก MultiView กาหนด visible=false
เมื่อผู้ใช้ เลือก DropDownlist เพื่อแสดงรายการอาหารหรื อเครื่ องดื่ม ให้ เปิ ดการ
แสดงผล visible ของ button1 ให้ เหมาะสม โดยใช้ คาสัง่ button1.visible = true
26
สร้ าง Session[“f1”] และ Session[“f2”] เพื่อเก็บราคารวมของแต่ละรายการอาหาร
พร้ อมกาหนดค่าเริ่ มต้ นมีคา่ เป็ น 0
27
เพิ่มโค้ ดในแต่ละ CheckBox เมื่อผู้ใช้ คลิก๊ เลือกรายการอาหารนัน้ ให้ เก็บค่าจาก
tbFT1 ลงใน Session[“f1”] และหากผู้ใช้ ไม่เลือกรายการอาหารนัน้ ให้ เก็บค่า
Session[“f1”] เป็ น 0
28
ก่อนจะทาการส่งข้ อมูล ลิ ้งค์ไปยังหน้ าถัดไป ให้ ตรวจสอบก่อนว่า ต้ องมีการเก็บ
Session เฉพาะที่ผ้ ใู ช้ เลือก Checkbox นันเท่
้ านัน้
คาสัง่ ที่ใช้ ในการลิ ้งค์คือ Server.Transfer(“ชื่อไฟล์ที่ต้องการลิ ้งค์ไป”);
29
สร้ าง label เพื่อแสดงข้ อมูลราคารวมทังหมดทุ
้
กรายการ
สร้ าง LinkButton เพื่อลิ ้งค์ไปสูห่ น้ าแรก
30
ในเมธอด Page_Load ให้ แสดงราคารวมทังหมดผ่
้
าน label โดยคานวนค่ามาจาก
Session
ในเมธอด LinkButton1_Click ให้ เขียนคาสัง่ ลิ ้งค์กลับไปหน้ าแรก
31
32