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