sample2.php? - คณะวิทยาศาสตร์

Download Report

Transcript sample2.php? - คณะวิทยาศาสตร์

PHP-2
การส่ งข้ อมูลด้ วย Html Form
การส่ งข้ อมูลด้ วย Querystring
การเก็บค่ าและส่ งค่ าโดยใช้ Session Object
การเก็บค่ าและส่ งค่ าโดยใช้ Cookie Object
ตัวแปร Global function
LESSON 3:
Querystring ,Session Cookie, Global function
ภาควิชาวิทยาการคอมพิวเตอร์ และเทคโนโลยีสารสนเทศ
คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร
1
การส่ งข้ อมูลด้ วย Html Form
• คำสัง่ ที่ใช้ อำ่ นค่ำจำก ค่ า ของ Form เรำสำมำรถเรี ยกใช้ จำกตัวแปร
ที่เรำตังขึ
้ ้นมำได้ เลย
• รูปแบบ
$var-name
• หากต้ องการพิมพ์ ข้อความออกมา
echo"$var-name";
2
การส่ งค่า Form (GET/POST)
การส่ งค่า Form (GET/POST)
• Method “GET” ค่ำของตัวแปรจะปรำกฏอยูท่ ี่ URL
– ไม่เหมำะสมกับข้ อมูลที่เป็ นควำมลับ
– จำกัดควำมยำวของข้ อมูลที่ 100 characters
– ผู้ใช้ สำมำรถ Bookmark ได้
• Method “POST” ค่ำของตัวแปรจะไม่ปรำกฏที่ URL
– เหมำะสำหรับข้ อมูลที่เป็ นควำมลับ เช่น Username และ Password
– ไม่จำกัดควำมยำวของข้ อมูล
การส่ งค่า Form (GET/POST)
การส่ งค่า Form (GET/POST)
รูปแบบ
<form=" [action=url]" name="ชือ
่ ฟอร์ม" method="[post/get]">
.
code
.
</form>
6
การส่ งค่า Form (GET/POST)
sample1.php
<html>
<head>
<form name="form1" method="post" action="sample2.php">
ชือ
่
<input type="text" name="name">
<br>
นามสกุล
<input type="text" name="surname">
<br>
<br>
<input type="submit" value="Submit">
<input type="reset"value="Reset">
</form>
</body>
</html>
7
การส่ งค่า Form (GET/POST)
sample2.php
<html>
<body>
ชือ
่ <? echo"$name" ?>
<br>
นามสกุล <?echo "$surname" ?>
</body>
</html>
Out Put
8
Querystring คืออะไร ?
Querystring คือข้ อมูลที่ Browser ส่งต่อท้ ำย URL ของ Page ที่ต้องกำรใช้ ไปยัง Web Server
โดยข้ อมูลจะประกอบไปด้ วยชื่อของข้ อมูลและค่ำของข้ อมูล
รู ปแบบ http://127.0.0.1/file-name.php?var-name=value
หากต้ องการส่ งค่ ามากกว่ าหนึ่งค่ า ให้ ใช้ เครื่ องหมาย & ขัน้ ระหว่ างตัวแปร
รู ปแบบ http://127.0.0.1/file-name.php?var-name1=value&var-name2=value
การอ่ านข้ อมูลจาก Querystring
สำมำรถอ่ำนได้ จำกค่ำ var-name ที่เรำตังขึ
้ ้นมำได้ เลย
เช่น
$var-name
echo"$var-name";
9
การสร้างข้อมูลให้อยูใ่ นรู ป Querystring
sample1.php
<html>
<body>
<a href="sample2.php?name=werachai numkitram&old=21">Test Querystring </a>
</body>
</html>
Out Put
10
การสร้างข้อมูลให้อยูใ่ นรู ป Query string
sample2.php
<html>
<body>
ชือ
่ <? echo"$name" ?>
<br>
อายุ<?echo "$old" ?>
</body>
</html>
Out Put
11
การสร้างข้อมูลให้อยูใ่ นรู ป Query string
2. การสร้ าง Querystring ด้ วย HTML Form
เหมือนกันกำรออกแบบ Form ธรรมดำครับ แต่แตกต่ำงตรงที่
method="get" ตัวอย่ำง
Sample1.php
<html>
<body>
<form name="form1" method="get"
action="sample2.php">
ชือ
่
<input type="text" name="name">
<br>
อายุ
<input type="text" name="old">
<br>
<br>
<input type="submit" value="Submit">
<input type="reset" value="Reset">
</form>
</body>
</html>
Out Put
12
การสร้างข้อมูลให้อยูใ่ นรู ป Query string
<html>
<body>
ชื่อ <? echo"$name" ?>
<br>
อำยุ<?echo "$old" ?>
</body>
</html>
Sample2.php
Out Put
13
การสร้างข้อมูลให้อยูใ่ นรู ป Query string
3. การนาค่ า Querystring จากค่ าของตัวแปรก็สามารถทาได้
Sample1.php
<html>
<body>
<?
$name=“สุรางค์รตั น์";
$old=22;
?>
<a
href="sample2.php?name=<?echo"$name"
; ?>&old=<? echo"$old"; ?>">Test
Querystring </a>
</body>
</html>
Sample2.php
<html>
<body>
ชือ
่ <? echo"$name" ?>
<br>
อายุ<?echo "$old" ?>
</body>
</html>
14
การเก็บค่าและส่ งค่าโดยใช้ Session Object
• session ? คืออะไร
Session เป็ นคุณสมบัติของ PHP ตั ้งแต่เวอร์ ชนั่ 4.0 ขึ ้นไปที่ช่วยในกำรติดตำมและตรวจสอบสถำนะต่ำงๆ
ของผู้ใช้ โดยเรำ จะต้ องสร้ ำงตัวแปร session เพื่อเก็บค่ำต่ำง ๆ ที่ต้องกำรไว้ ซึง่ ควำมคงอยู่ของตัวแปร
session นี ้จะขึ ้นกับวินโดว์ของเว็บบรำวเซอร์ ไม่ ขึ ้นกับไฟล์ PHP ที่สร้ ำงตัวแปรนั ้น กล่ำวคือ หลังจำกตัวแปร
session ถูกสร้ ำงขึ ้นมำโดยไฟล์ PHP ไฟล์หนึ่งแล้ ว เรำจะสำมำรถอ้ ำงอิง ถึงตัวแปรนั ้นได้ จำกไฟล์ PHP อื่นๆ
ด้ วย ตรำบใดที่ผ้ ใู ช้ ยงั คงเข้ ำถึงไฟล์ PHP ในเว็บไซท์ของเรำโดยใช้ วินโดว์เดิมอยู่
คือ กำรเก็บค่ำ จำก Web Server ลงในหน่วยควำมจำของเครื่ อง Client แต่
ละรำย server จะกำหนดเวลำและติดตำมกำรใช้ งำนของเครื่ อง Client
อำยุของ Session ถูกกำหนดด้ วยกำรทำงำนของเบรำเซอร์
15
การมีอยูข่ อง Session และ Session ID
• Session เริ่มมีอำยุตงแต่
ั ้ ถกู ประกำศ และจะยังคงมีอยูต่ รำบเท่ำที่
เบรำเซอร์ ยงั คงเปิ ดใช้ งำนอยู่
• หมำยควำมว่ำตัวแปร session จะหมดอำยุเมื่อเบรำเซอร์ ถกู ปิ ด และ
ต้ องเป็ นกำรปิ ดทุกหน้ ำต่ำงด้ วย (ทังที
้ ่เกี่ยวข้ องและไม่เกี่ยวข้ อง)
Session ID คืออะไร
Session ID คือ หมายเลขประจาตัว ที่ Web Server ส่ งมายัง Client ค่า Session
จะไม่มีทางซ้ ากัน Session ID มีประโยชน์ใรการอ้างอิงเกี่ยวกับการใช้งานของ Client
รู ปแบบการอ่ านค่ า Session ID
Session_ID();
ฟังก์ ชั่นเกีย่ วกับ session
• ฟั งก์ ช่ ัน session_start()
– session_start() เป็ นฟั งก์ชนั่ ที่สงั่ ให้ เริ่มต้ นใช้ งำน (initialize)
session
รูปแบบ:
session_start()
17
ประกาศตัวแปร session
• session_register() เป็ นฟั งก์ชนั่ ที่ใช้ ลงทะเบียนตัวแปรไว้ ใน session ปั จจุบนั (ทำให้
ตัวแปรนันกลำยเป็
้
นตัวแปร session) โดย สำมำรถลงทะเบียนได้ มำกกว่ำ 1 ตัวแปรพร้ อมกัน
กำรลงทะเบียนตัวแปรใดๆ ให้ กลำยเป็ นตัวแปร session นัน้ ก็เพื่อกำหนดให้ PHP เก็บรักษำ
ค่ำของตัวแปรนันไว้
้ ภำยหลังจำกที่ไฟล์ PHP นันสิ
้ ้นสุดกำรทำงำนในเพจใดเพจหนึง่ ไปแล้ ว
• ขณะที่เรี ยกฟั งก์ชนั่ session_register() นี ้ ถ้ ำหำก session ยังไม่เริ่ มต้ น (เรำไม่ได้ เรี ยก
ฟั งก์ชนั่ session_start() ก่อน) PHP ก็จะ เริ่ มต้ น session ให้ เองโดยปริ ยำย
• กำรประกำศตัวแปร session จะใช้ ฟังก์ชนั
session_register(ชื่อตัวแปร [, ชื่อตัวแปร ... ])
Note: ชื่อตัวแปรที่ระบุให้ กับฟั งก์ ช่ ัน session_register() นัน้ ไม่ ต้องมี $ นาหน้ า
และจะต้ องป้อนชื่อตัวแปร session ไว้
session_register(‘Mysession’)
การใช้งานตัวแปร session
• เรี ยกจำกตัวแปร PHP (PHP variable)
$HTTP_SESSION_VARS[“name”]
ตัวอย่ำง
<?
session_register(“myweb”);
$HTTP_SESSION_VARS[“myweb”] = “www.sci.nu.ac.th/csit”;
print $HTTP_SESSION_VARS[“myweb”];
?>
การสร้างและการอ่านค่า session
การสร้ าง session
Session_Start()
$session-name=value;
Session_register("session-name");
การอ่ านค่ าจาก Session
Session_Start();
$session-name;
echo"$session-name";
20
การตรวจสอบตัวแปร Session
การตรวจสอบตัวแปร Session
Session_Start();
$session-name;
if(Session_is_registered("$session-name"))
{
echo"ตัวแปรนี้มีคา่ อยู"่ ;
}
else
{
echo"ตัวแปรนี้ไม่มีคา่ อยู"่ ;
}
21
ดูตวั อย่าง Session
sample1.php เป็ นการกาหนดค่าให้กบั Session
<?
Session_Start();
$name="นายวีระชัย นุกจิ รัมย์";
$old=21;
Session_register("name");
Session_register("old")
?>
ได้กาหนดค่าให้ Session แล้ว<br>
ตรวจสอบค่า Session <a href="Sample2.php">Sample2.php</a>
22
ดูตวั อย่าง Session (ต่อ)
sample2.php เป็ นกำรแสดงค่ำใน Session
<?
session_start();
echo "ค่าใน Session Name คือ $name <br>";
echo "ค่าใน Session Old คือ $old <br>";
?>
<br>
<br>
ตรวจสอบค่า Session <a href="Sample3.php">Sample3.php</a>
23
ดูตวั อย่าง Session (ต่อ)
sample3.php เป็ นกำรแสดงค่ำใน Session อีกครัง้
<?
session_start();
echo "ค่าใน Session Name จะยังเป็ น $name <br>";
echo "ค่าใน Session Old จะยังเป็ น $old <br>";
?>
<br>
ตัง้ ค่า Session <a href="Sample1.php">Sample1.php</a>
** หากต้องการลบ Session ทาได้โดย
Session_unregister("name"); และ
Session_unregister("old");
หรือจะใช้ Session_destroy(); เพือ
่ ลบค่า
Session ทัง้ หมด
24
ฟังก์ ชั่นเกีย่ วกับ session
• ฟั งก์ ช่ นั session_unregister()
– session_unregister() เป็ นฟั งก์ชนั่ ที่ใช้ ยกเลิกกำรลงทะเบียนตัวแปร
session หรื อกล่ำวอีกนัยหนึง่ คือ บอกให้ PHP ลืมตัวแปร นันไป
้
session_unregister(ชื่อตัวแปร)
• ฟังก์ชั่น session_destroy ()
– session_destroy() เป็ นฟังก์ชนั่ ที่ใช้ทาลายข้อมูลทั้งหมดของ
session ปัจจุบนั
session_destroy()
การเก็บค่าและส่ งค่าโดยใช้ Cookie Object
• Cookie คืออะไร ?
Cookie หมำยถึง ข้ อมูลที่เรำส่งไปเก็บไว้ ในเครื่ องของผู้ใช้ เพื่อประโยชน์ในกำรตรวจสอบและติดตำมผู้ใช้ แต่ละคน โดย
หลังจำกที่เรำส่ง cookie ไปยังเครื่ องของผู้ใช้ แล้ วถ้ ำหำก cookie ยังไม่หมดอำยุ (expire) เมื่อผู้ใช้ เรี ยกดูไฟล์ PHP
อื่น ๆ ในไดเร็คทอรี เดียวกับไฟล์ PHP ที่สร้ ำง cookie ขึ ้นมำ บรำวเซอร์ ก็จะส่ง cookie นันมำยั
้ งเซิร์ฟเวอร์ ซึง่ PHP จะ
นำ cookie มำกำหนดเป็ นตัวแปรให้ เรำสำมำรถตรวจสอบค่ำได้ ต่อไป
เป็ นกำรเก็บค่ำจำก Server มำเก็บใว้ ที่เครื่ อง Client โดยเก็บใว้ ในรูปไฟล์
พูดง่ำย ๆ ก็คือ กำรเขียนลงไฟล์นนเอง
ั ้ ซึง่ จะถูกเก็บใว้ ที่
Windows\Cookies
• กำร Set Cookie จะต้ อง Set ใว้ ในส่วนบนสุด ( header )
อำยุของ Cookie ถูกกำหนดด้ วยเวลำ
26
การเก็บค่าและส่ งค่าโดยใช้ Cookie Object
27
การสร้าง Cookie
• รู ปแบบ
–setcookie(cookie-name,value,[Time]);
หรื อจะกาหนดจากตัวค่ าตัวแปร
$va-name-value = value";
setcookie(var-name, $var-name-value,[Time] );
28
เมื่อ
Cookie-name ชื่อ ของ Cookie
value,$var-name-value คือ ค่ำของ Cookie
Time กำหนดเวลำหมดอำยุของ Cookie
• ตัวอย่ าง 1
Setcookie("name",“สุรำงค์รัตน์",time()+3600); // กำหนดเวลำ 1 ชัว่ โมง
• ตัวอย่ าง 2
$name="สุรำงค์รัตน์ ";
Setcookie("name",$name,time()+60); // กำหนดเวลำ 1 นำที
29
การอ่านค่าจาก Cookie
$cookie-name
echo"$cookie-name";
กำรกำหนดวันหมดอำยุของ Cookie
รูปแบบ
Time() , Date()
•ตัวอย่ าง
Setcookie("name",$name,time()+60); // กำหนดเวลำ 1 นำที
30
การลบ Cookie
รูปแบบ
SetCookie("Cookie-name")
เช่ น
SetCookie("name") // เป็ นกำรลบ Cookie name ออก
sample1.php เป็ นกำรกำหนดและตังค่
้ ำ Cookie
Out
put
<?
$name="สุรำงค์รัตน์ ";
$old=21;
Setcookie("name",$name,time()+60);
Setcookie("old",$old,time()+60);
?>
ได้กาหนดค่าให้ Cookie แล้ว<br>
ตรวจสอบค่า Cookie <a href="Sample2.php">Sample2.php</a>
31
• sample2.php เป็ นกำรแสดงค่ำใน Cookie
• Out put
<?
echo "ค่ำใน Cookie name คือ $name <br>";
echo "ค่ำใน Cookie old คือ $old <br>";
?>
<br>
<br>
ตรวจสอบค่ำ Cookie อีกครัง้ <a href="Sample3.php">Sample3.php</a>
32
• sample3.php เป็ นกำรแสดงค่ำใน Cookie อีกครัง้
<?
echo "ค่าใน Cookie Name จะยังเป็ น $name <br>";
echo "ค่าใน Cookie Old จะยังเป็ น $old <br>";
?>
<br>
ตัง้ ค่า Cookie <a href="Sample1.php">Sample1.php</a>
Out put
33
การใช้ ob_start(); เพื่อให้สามารถกาหนด Setcookie ใว้ส่วนใดก็ได้
• ปกติกำร SetCookie เรำต้ องกำหนดใว้ สว่ นบนสุด หรื อ headder แต่ถ้ำเรำใส่ ob_start(); จะ
สำมำรถกำหนดใว้ สว่ นอื่น ๆ ได้ เช่น กำรใช้ คำสัง่ echo ใว้ ก่อน SetCookie ซึง่ ถ้ ำไม่ใส่
ob_start(); จะไม่สำมำรถใช้ คำสัง่ echo ได้ ดังตัวอย่ำง
Sample1.php
<?
ob_start();
echo "ปกติจะไม่สามารถ แทรกส่วนตรงนี้ได้
<br>";
setcookie("name", “สุรางค์รตั น์", time() + 60);
echo "แต่ตอนนี้ได้กาหนดค่าให้ Cookie name
แล้ว ";
ob_end_flush();
?>
Out
Put
34
ตัวแปร Global function
• การใช้ ตวั แปรแบบ global ภายในฟั งก์ ชัน บำงครัง้ เรำไม่ต้องกำร
ที่จะผ่ำนตัวแปรเป็ นอำร์ กิวเมนต์ของฟั งก์ชนั เพื่อนำไปใช้ ภำยในฟั งก์ชนั
เหล่ำนัน้ ก็จะทำได้ โดยกำรแจ้ งใช้ ตวั แปรที่มีชื่อเหมือนตัวแปรภำยนอก
ที่เรำต้ องกำรใช้ ให้ เป็ น global หรื อใช้ ผำ่ นตัวแปรที่เป็ นอำร์ เรย์ของ
PHP ที่มีชื่อว่ำ $GLOBALS ดังตัวอย่ำงต่อไปนี ้
35
ตัวแปร Global function
<?
$a = 10;
$b = 20;
function getMin ( ) {
global $a, $b;
if ($a < $b)
return $a;
else
return $b;
}
function getMin2 () {
if ($GLOBALS["a"] < $GLOBAL["b"])
return $GLOBALS["a"];
else
return $GLOBALS["b"];
}
echo getMin()."<BR>\n";
echo getMin2()."<BR>\n";
?>
• ในกรณีนี ้เรำต้ องกำรจะใช้ ตวั
แปร $a และ $b ซึง่ อยูน่ อก
ฟั งก์ชนั getMin() เพื่อเช็คดูวำ่
ค่ำของตัวแปรใดมีคำ่ น้ อยกว่ำ
กัน ถ้ ำเรำไม่แจ้ งใช้ global $a,
$b; ตำมตัวอย่ำงแล้ ว $a และ
$b จะกลำยเป็ นตัวแปรภำยใน
แม้ วำ่ จะชื่อเหมือนกันตัวแปร
ภำยนอกที่มีอยูแ่ ล้ วก็ตำม ทำ
ให้ ได้ ผลกำรทำงำนไม่ถกู ต้ อง
ตำมที่ต้องกำร
36
ตัวแปร Global function
• ฟั งก์ชนั getMin() อีกรูปแบบหนึง่ โดยไม่ใช้ ตวั แปรแบบ global
ภำยในฟั งก์ชนั และใช้ วิธีผำ่ นค่ำแทน
<?
$a = 10;
$b = 20;
function getMin ($a, $b) {
if ($a < $b)
return $a;
else
return $b;
}
echo getMin($a, $b)."<BR>\n";
?>
37
ตัวแปร Global function
• กำรตัวแปรแบบ static ภำยในฟั งก์ชนั
สมมุตวิ ำ่ เรำต้ องกำรจะใช้ ตวั แปรภำยในฟั งก์ชนั และสำมำรถเก็บค่ำไว้
ได้ ตลอดเวลำ โดยไม่สญ
ู หำยไปทุกครัง้ ที่มีกำรเรี ยกใช้ ฟังก์ชนั ในกรณีนี ้
เรำจะแจ้ งใช้ ตวั แปรให้ เป็ นแบบ static ตำมตัวอย่ำงต่อไปนี ้
ทุกครัง้ ที่มีกำรเรี ยกใช้ ฟังก์ชนั ดังกล่ำว ตัวแปรชื่อ $num_func_calls ซึง่ มี
ค่ำเริ่มต้ นเป็ นศูนย์ในตอนแรก จะเพิ่มค่ำที่เก็บขึ ้นทีละหนึง่
function MyFunc() {
static $num_func_calls = 0;
echo "my function\n";
return ++$num_func_calls;
}
38
ตัวแปร Global function
• กำรผ่ำนค่ำกลับคืนมำกกว่ำหนึง่ จำกฟั งก์ชนั
โดยปรกติแล้ วเรำไม่สำมำรถผ่ำนค่ำกลับคืนจำกฟั งก์ชนั ได้ มำกกว่ำหนึง่ แต่อย่ำงไรก็
ตำม ยังมีวิธีกำรหนึ่งที่ช่วยแก้ ปัญหำดังกล่ำวได้ วิธีนี ้คือ เก็บค่ำต่ำงๆที่ต้องกำรจะใช้ เป็ น
ค่ำกลับคืนไว้ ใน array แล้ วใช้ array นันเป็
้ นค่ำกลับคืน และผู้เรี ยกใช้ ฟังก์ชนั สำมำรถใช้
ฟั งก์ชนั list() อ่ำนค่ำเหล่ำนันได้
้ ตัวอย่ำงเช่น
<?
function foobar() {
return array ("foo", "bar", 0xff);
}
list ($foo, $bar, $num) = foobar();
echo "$foo $bar $num <BR>\n";
?>
จำกตัวอย่ำง ฟั งก์ชนั foobar() จะให้ ค่ำกลับคืนเป็ น array ประกอบด้ วยสำมสมำชิก ค่ำที่
ได้ จำกฟั งก์ชนั นี ้ก็จะส่งไปยังฟั งก์ชนั list() เพื่อให้ เก็บแยกลงในตัวแปรตำมชื่อที่กำหนด
คือ $foo, $bar และ $num ตำมลำดับ
39
แบบฝึ กหัด
ไฟล์ทงสิ
ั ้ ้นจำนวน 3 ไฟล์ ดังนี ้
•
•
•
ไฟล์ session_file1.php เป็ นแบบฟอร์ มให้ กรอกชื่อผู้ใช้ โดยมีช่องรับข้ อควำมชื่อ username เป็ นตัวรับค่ำ
ไฟล์ session_file2.php ทำหน้ ำที่ลงทะเบียนตัวแปร $username ไว้ ใน session ปั จจุบนั พร้ อมทังแสดงค่
้
ำของ
ตัวแปรออกมำ
ไฟล์ session_file3.php จะแสดงค่ำของตัวแปร $username ออกมำ เพื่อเป็ นกำรยืนยันว่ำตัวแปร $username
ยังคงมีตวั ตนอยู่และ เก็บรักษำค่ำเดิมไว้ ได้
session_file1.php
40
แบบฝึ กหัด
session_file2.php
session_file3.php
41