การใช้งาน Html Form กับ PHP

Download Report

Transcript การใช้งาน Html Form กับ PHP

PHP-2
การส่ งข้ อมูลด้ วย Html Form
การส่ งข้ อมูลด้ วย Querystring
การเก็บค่ าและส่ งค่ าโดยใช้ Session Object
การเก็บค่ าและส่ งค่ าโดยใช้ Cookie Object
ตัวแปร Global function
LESSON 2:
Form , Querystring ,Session,Cookie
http://www.sci.nu.ac.th/csitnew/files_download/user_1225241516.ppt
ภาควิชาวิทยาการคอมพิวเตอร์ และเทคโนโลยีสารสนเทศ
คณะวิทยาศาสตร์ มหาวิทยาลัยนเรศวร
1
Outline
•
•
•
•
•
•
การใช้ งาน Html Form กับ PHP
การส่ งข้ อมูลด้ วย Html Form
การส่ งข้ อมูลด้ วย Querystring
การเก็บค่ าและส่ งค่ าโดยใช้ Session Object
การเก็บค่ าและส่ งค่ าโดยใช้ Cookie Object
ตัวแปร Global function
2
การใช้ งาน Html Form กับ PHP
วิธีการทางานของฟอร์ ม
จากรู ปด้านบน แสดงวิธีการทางานของฟอร์มดังนี้
1. เริ่ มต้นเมื่อผูใ้ ช้กรอกแบบฟอร์มบนเว็บเพจและคลิกปุ่ มส่ งข้อมูลมาที่เว็บเซิร์ฟเวอร์
2. ข้อมูลจากฟอร์มจะถูกประมวลผลที่ไฟล์ PHP, ASP หรื อไฟล์ CGI อื่นๆบนเว็บเซิร์ฟเวอร์
3. เมื่อประมวลผลเสร็จแล้ว ผลลัพธ์จะถูกส่ งกลับไปให้ผใู ้ ช้ในรู ปแบบเอกสาร HTML เพื่อให้เว็บเบรา
เซอร์แสดงผล
3
การใช้ งาน Html Form กับ PHP
ขั้นตอนการสร้ างฟอร์ ม:
1. เปิ ดโปรแกรม Dreamweaver คลิกเมนู File > New จะปรากฏไดอะล็อก New Document ขึ้นมา ให้คลิกแท็บ
General เลือก Dynamic Page > PHP หลังจากนั้นคลิกปุ่ ม Create บันทึกเป็ นไฟล์ form.php
2. ที่หน้าจอของเว็บเพจ ให้คลิกเพื่อวางเคอร์เซอร์ในตาแหน่งที่ตอ้ งการสร้างฟอร์ม หลังจากนั้นคลิกที่เมนู Insert > Form >
Form ฟอร์มจะถูกแทรกลงในเว็บเพจ หากอยูใ่ น Design View จะเห็นขอบเขตของฟอร์มแสดงเป็ น เส้นประสี แดง (หากไม่มี
เส้นประสี แสดงขึ้นมา ให้คลิกที่เมนู View > Visual Aids > Invisible Elements)
4
การใช้ งาน Html Form กับ PHP
คลิกวางตาแหน่งเคอร์เซอร์ลงภายในขอบเขตของฟอร์ม หลังจากนั้นให้คลิกเลือกแท็ก <form> จาก Tag Selector บริ เวณ
ขอบล่างซ้ายของเว็บเพจ เมื่อปรากฏไดอะล็อก Properties ช่อง Form Name ให้กาหนดชื่อของฟอร์ม เท่ากับ
fmProcess ชื่อของฟอร์มนี้จะถูกใช้เพื่ออ้างอิงในสคริ ปต์ PHP
ไดอะล็อก Properties ช่อง Action ให้กาหนดชื่อไฟล์ หรื อ URL ของสคริ ปต์ที่จะใช้ในการประมวลผลฟอร์ม เท่ากับ
formprocess.php (หากต้ องการระบุเป็ น URL ให้ พมิ พ์เป็ น
http://localhost/phpweb/formprocess.php)
5
การใช้ งาน Html Form กับ PHP
ไดอะล็อก Properties ช่อง Method ให้เลือกรู ปแบบการส่ งข้อมูลจากฟอร์มไปที่เว็บ
เซิร์ฟเวอร์ ซึ่งมีให้เลือก 3 รู ปแบบ คือ
การทางานของ METHOD:
1.
2.
3.
POST ส่ งข้อมูลโดยส่ งข้อมูลส่ งไปกับ HTTP Request
GET ส่ งข้อมูลโดยการแปะค่าเป็ น URL Parameter (Query String)
ไปกับ URL (ข้อมูลที่ส่งจะแสดงอยู่ บน URL ของเว็บเบราเซอร์)
DEFAULT ส่ งข้อมูลโดยขึ้นอยูก่ บั ค่า default ของเว็บเบราเซอร์ โดยปกติจะเป็ น
แบบ GET
6
การใช้ งาน Html Form กับ PHP
ไดอะล็อก Properties ช่อง Enctype ให้ระบุชนิดของการเข้ารหัสข้อมูล โดยค่า default ของ
Enctype จะเป็ น application/x-www-form-urlencode ซึ่งจะถูกใช้ร่วมกับ method แบบ POST หาก
ใช้ฟอร์มในการอัปโหลดไฟล์ ให้เลือก Enctype เป็ นแบบ multipart/form-data
ไดอะล็อก Properties ช่อง Target ให้พิมพ์ชื่อหน้าจอของเว็บเบราเซอร์ที่ตอ้ งการแสดงผลลัพธ์ของฟอร์มหรื อ
เลือกจาก รายการที่กาหนดไว้ให้ หากเว็บเบราเซอร์ยงั ไม่มีชื่อหน้าจอที่ระบุ เว็บเบราเซอร์จะสร้างหน้าจอชื่อที่ระบุข้ ึนมาใหม่ ตัวเลือกที่
กาหนดไว้ให้ในช่อง Target
การทางานของ TARGET:
_blank ผลลัพธ์ของฟอร์มจะแสดงที่หน้าจอเว็บเบราเซอร์ที่สร้างขึ้นมาใหม่
_parent ผลลัพธ์ของฟอร์มจะแสดงที่หน้าจอหลัก (parent) ของหน้าจอเว็บเบราเซอร์ขณะนั้น
_self ผลลัพธ์จะแสดงที่หน้าจอเว็บเบราเซอร์เดียวกับฟอร์ม
_top ผลลัพธ์ของฟอร์มจะแสดงที่หน้าจอหลัก ในกรณี ที่หน้าจอเว็บเบราเซอร์แบ่งเป็ นหลายเฟรม
7
การใช้ งาน Html Form กับ PHP
คลิกปุ่ ม Code View
เพื่อเขียนโค้ด HTML ดังรู ปด้านล่าง หลังจากนั้นบันทึกไฟล์ form.php
<html>
<body>
<form action="formprocess.php" method="POST" name="fmProcess">
ชื่อ: <input name="firstname" type="text" size="32" maxlength="30"> <br>
นามสกุล: <input name="lastname" type="text" size="32" maxlength="30">
<br>
<input name="btnSubmit" type="submit" value="บันทึก">
<input name="btnReset" type="reset" value="ยกเลิก">
</form>
</body>
</html>
8
การใช้ งาน Html Form กับ PHP
เปิ ดโปรแกรม Dreamweaver คลิกเมนู File > New จะปรากฏไดอะล็อก New Document
ขึ้นมา ให้คลิกแท็บ General เลือก Dynamic Page > PHP คลิกปุ่ ม Create หลังจากนั้นให้เพื่อ
เขียนโค้ด PHP ดังรู ปด้านล่าง บันทึกเป็ นไฟล์ formprocess.php
<html>
<body>
<?php
echo "ชื่อ: " . $_POST['firstname'] . "<br>";
echo "นามสกุล: " . $_POST['lastname'] . "<br>";
?>
</body>
</html>
9
การใช้ งาน Html Form กับ PHP
ทดสอบการทางานของฟอร์ม โดยเปิ ด Dreamweaver ไปที่หน้าจอไฟล์ form.php หลังจากนั้นกดปุ่ ม F12 จะ
ปรากฏ หน้าจอ Internet Explorer เป็ นแบบฟอร์มกรอกข้อมูล ให้กรอกข้อมูล แล้วคลิกปุ่ ม "บันทึก" ให้ สังเกต
ผลลัพธ์ การทางาน ของเว็บเพจ
10
การใช้ งาน Html Form กับ PHP
11. เปลี่ยน METHOD ของฟอร์มในไฟล์ form.php จาก METHOD="POST" เป็ น
METHOD="GET"
12. เปลี่ยนชื่อตัวแปรในไฟล์ formprocess.php จาก $_POST['firstname’] เป็ น
$_GET['firstname'] และ $_POST['lastname'] เป็ น $_GET['lastname']
13. ทดสอบการทางานของฟอร์มใหม่อีกครั้ง ให้สังเกตผลลัพธ์การทางานของเว็บเพจ
11
การใช้ งาน Html Form กับ PHP
การใช้ งานอ็อบเจ็คต์ ของฟอร์ มชนิดต่ างๆ
อ็อบเจ็คต์ คือส่ วนของฟอร์มที่ใช้ในการรับข้อมูลจากผูใ้ ช้ ก่อนที่จะแทรกอ็อบเจ็คต์ลงบนเว็บเพจ ต้องมีการสร้าง หรื อ
แทรกฟอร์มลงในเว็บเพจก่อนเสมอ หากมีการแทรกอ็อบเจ็คต์ลงในส่ วนที่ไม่มีฟอร์ม Dreamweaver จะถามโดย
ปรากฏไดอะล็อก “Add form tags?” ให้เลือก Yes เพื่อให้ Dreamweaver สร้างแท็กฟอร์มสาหรับ
อ็อบเจ็คต์น้ นั
12
การใช้ งาน Html Form กับ PHP
13
การใช้ งาน Html Form กับ PHP
14
การใช้ งาน Html Form กับ PHP
15
การใช้ งาน Html Form กับ PHP
16
การส่ งข้ อมูลด้ วย Html Form
• คำสัง่ ที่ใช้ อำ่ นค่ำจำก ค่ า ของ Form เรำสำมำรถเรี ยกใช้ จำกตัวแปร
ที่เรำตังขึ
้ ้นมำได้ เลย
• รูปแบบ
$var-name
• หากต้ องการพิมพ์ ข้อความออกมา
echo"$var-name";
24
การส่ งค่า Form (GET/POST)
• Method “GET” ค่ำของตัวแปรจะปรำกฏอยูท่ ี่ URL
– ไม่เหมำะสมกับข้ อมูลที่เป็ นควำมลับ
– จำกัดควำมยำวของข้ อมูลที่ 100 characters
– ผู้ใช้ สำมำรถ Bookmark ได้
• Method “POST” ค่ำของตัวแปรจะไม่ปรำกฏที่ URL
– เหมำะสำหรับข้ อมูลที่เป็ นควำมลับ เช่น Username และ Password
– ไม่จำกัดควำมยำวของข้ อมูล
การส่ งค่า Form (GET/POST)
การส่ งข้ อมูลด้ วย Html Form
รูปแบบ
<form=" [action=url]" name="ชือ
่ ฟอร์ม" method="[post/get]">
.
code
.
</form>
28
การส่ งข้ อมูลด้ วย Html Form
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>
29
การส่ งข้ อมูลด้ วย Html Form
sample2.php
<html>
<body>
ชือ
่ <? echo"$name" ?>
<br>
นามสกุล <?echo "$surname" ?>
</body>
</html>
Out Put
30
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";
31
การสร้างข้อมูลให้อยูใ่ นรู ป Querystring
สามารถ สร้ างได้ 3 รูปแบบคือ
1. สร้ างจาก Tag <a>... </a>
กำหนดในส่วนคุณสมบัติของ HREF ของ TAG <a> </a> ตัวอย่ำง
sample1.php
<html>
<body>
<a href="sample2.php?name=werachai numkitram&old=21">Test Querystring </a>
</body>
</html>
Out Put
32
sample2.php
<html>
<body>
ชือ
่ <? echo"$name" ?>
<br>
อายุ<?echo "$old" ?>
</body>
</html>
Out Put
33
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
34
sample2.php
<html>
<body>
ชื่อ <? echo"$name" ?>
<br>
อายุ<?echo "$old" ?>
</body>
</html>
Out Put
35
3. การนาค่ า Querystring จากค่ าของตัวแปรก็สามารถทาได้
sample1.php
<html>
<body>
<?
$name="วีระชัย นุกจิ รัมย์";
$old=21;
?>
<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>
36
การเก็บค่าและส่ งค่าโดยใช้ Session Object
• session ? คืออะไร
คือ กำรเก็บค่ำ จำก Web Server ลงในหน่วยควำมจำของเครื่ อง Client
แต่ละรำย server จะกำหนดเวลำและติดตำมกำรใช้ งำนของเครื่ อง
Client
อำยุของ Session ถูกกำหนดด้ วยกำรทำงำนของเบรำเซอร์
37
การมีอยูข่ อง Session และ Session ID
• Session เริ่มมีอำยุตงแต่
ั ้ ถกู ประกำศ และจะยังคงมีอยูต่ รำบเท่ำที่เบ
รำเซอร์ ยงั คงเปิ ดใช้ งำนอยู่
• หมำยควำมว่ำตัวแปร session จะหมดอำยุเมื่อเบรำเซอร์ ถกู ปิ ด และ
ต้ องเป็ นกำรปิ ดทุกหน้ ำต่ำงด้ วย (ทังที
้ ่เกี่ยวข้ องและไม่เกี่ยวข้ อง)
Session ID คืออะไร
Session ID คือ หมายเลขประจาตัว ที่ Web Server ส่ งมายัง Client ค่า Session
จะไม่มีทางซ้ ากัน Session ID มีประโยชน์ใรการอ้างอิงเกี่ยวกับการใช้งานของ Client
รู ปแบบการอ่ านค่ า Session ID
Session_ID();
ประกาศตัวแปร session
• กำรประกำศตัวแปร session จะใช้ ฟังก์ชนั
session_register(‘name’)
name เป็ นชื่อตัวแปร session ที่เรำต้ องประกำศ
ส่วนค่ำที่คืนออกมำจำกฟั งก์ชนั เป็ น boolean เพื่อบอกว่ำสำเร็จหรื อไม่
*ฟั งก์ชนั นี ้ใช้ สำหรับประกำศตัวแปร session เพียงหนึ่งตัวเท่ำนัน้
ตัวอย่ำง
session_register(‘Mysession’)
รู ปแบบการใช้งาน Session อื่น ๆ
•Session_Type("Session-name") เมื่อ Type คือ ชนิดของ Session เช่น
name,register,unset,unregister
•สำมำรถศึกษำเพิ่มติมได้ จำก PHP manual ( Download ได้ ที่
http://www.php.net )
40
การใช้งานตัวแปร session
• หลังจำกประกำศตัวแปร session แล้ วสำมำรถเรี ยกใช้ ตวั แปร
session ได้ ทนั ทีภำยในสคริปต์ที่มีกำรประกำศตัวแปร session
• แต่ถ้ำต้ องกำรเรี ยกใช้ งำนตัวแปร session ในสคริปต์อื่นๆ ต้ องมีกำร
ประกำศฟั งก์ชนั session_start() ไว้ ก่อนที่จะใช้ ตวั แปร
session เพื่อบอกให้ ตวั แปร PHP ทรำบว่ำเรำกำลังจะเรี ยกใช้ ตวั
แปร session แล้ ว
การใช้งานตัวแปร session
• เรี ยกจำกตัวแปร PHP (PHP variable)
$HTTP_SESSION_VARS[“name”]
ตัวอย่ำง
<?
session_register(“myweb”);
$HTTP_SESSION_VARS[“myweb”] = “www.cs.su.ac.th”;
print $HTTP_SESSION_VARS[“myweb”];
?>
การสร้างและการอ่านค่า session
การสร้ าง session
Session_Start()
$session-name=value;
Session_register("session-name");
การอ่านค่ าจาก Session
Session_Start();
$session-name;
echo"$session-name";
43
การตรวจสอบและการลบตัวแปร Session
การตรวจสอบตัวแปร Session
Session_Start();
$session-name;
if(Session_is_registered("$session-name"))
{
echo"ตัวแปรนี้มีคา่ อยู"่ ;
}
else
{
echo"ตัวแปรนี้ไม่มีคา่ อยู"่ ;
การลบค่าใน Session
}
-การลบ Session เฉพาะตัวแปร
Session_unregister("session-name ");
- การลบ Session ทัง้ หมด
Session_destroy();
44
ดูตวั อย่าง 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>
45
ดูตวั อย่าง 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>
46
ดูตวั อย่าง 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 ทัง้ หมด
47
การเก็บค่าและส่ งค่าโดยใช้ Cookie Object
• Cookie คืออะไร ?
เป็ นกำรเก็บค่ำจำก Server มำเก็บใว้ ที่เครื่ อง Client โดยเก็บใว้ ในรูปไฟล์
พูดง่ำย ๆ ก็คือ กำรเขียนลงไฟล์นนเอง
ั ้ ซึง่ จะถูกเก็บใว้ ที่
Windows\Cookies
• กำร Set Cookie จะต้ อง Set ใว้ ในส่วนบนสุดครับ ( header )
อำยุของ Cookie ถูกกำหนดด้ วยเวลำ
48
การสร้าง Cookie
• รู ปแบบ
–setcookie(cookie-name,value,[Time]);
หรื อจะกาหนดจากตัวค่ าตัวแปร
$va-name-value = value";
setcookie(var-name, $var-name-value,[Time] );
49
เมื่อ
Cookie-name ชื่อ ของ Cookie
value,$var-name-value คือ ค่ำของ Cookie
Time กำหนดเวลำหมดอำยุของ Cookie
• ตัวอย่ าง 1
Setcookie("name","วีระชัย นุกิจรัมย์",time()+3600); // กำหนดเวลำ 1 ชัว่ โมง
• ตัวอย่ าง 2
$name="นำยวีระชัย นุกิจรัมย์";
Setcookie("name",$name,time()+60); // กำหนดเวลำ 1 นำที
50
การอ่านค่าจาก Cookie
$cookie-name
echo"$cookie-name";
กำรกำหนดวันหมดอำยุของ Cookie
รูปแบบ
Time() , Date()
•ตัวอย่ าง
Setcookie("name",$name,time()+60); // กำหนดเวลำ 1 นำที
51
การลบ Cookie
รูปแบบ
SetCookie("Cookie-name")
เช่ น
SetCookie("name") // เป็ นกำรลบ Cookie name ออก
หากยังไม่ เข้ าใจลองมาดูตัวอย่ างกันหน่ อยครับ
Out
put
sample1.php เป็ นกำรกำหนดและตังค่
้ ำ Cookie
<?
$name="วีระชัย นุกจิ รัมย์";
$old=21;
Setcookie("name",$name,time()+60);
Setcookie("old",$old,time()+60);
?>
ได้กาหนดค่าให้ Cookie แล้ว<br>
ตรวจสอบค่า Cookie <a href="Sample2.php">Sample2.php</a>
52
• 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>
53
• sample3.php เป็ นกำรแสดงค่ำใน Cookie อีกครัง้
<?
echo "ค่าใน Cookie Name จะยังเป็ น $name <br>";
echo "ค่าใน Cookie Old จะยังเป็ น $old <br>";
?>
<br>
ตัง้ ค่า Cookie <a href="Sample1.php">Sample1.php</a>
Out put
54
การใช้ 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
55
ตัวแปร Global function
• การใช้ ตวั แปรแบบ global ภายในฟั งก์ ชัน บำงครัง้ เรำไม่ต้องกำร
ที่จะผ่ำนตัวแปรเป็ นอำร์ กิวเมนต์ของฟั งก์ชนั เพื่อนำไปใช้ ภำยในฟั งก์ชนั
เหล่ำนัน้ ก็จะทำได้ โดยกำรแจ้ งใช้ ตวั แปรที่มีชื่อเหมือนตัวแปรภำยนอก
ที่เรำต้ องกำรใช้ ให้ เป็ น global หรื อใช้ ผำ่ นตัวแปรที่เป็ นอำร์ เรย์ของ
PHP ที่มีชื่อว่ำ $GLOBALS ดังตัวอย่ำงต่อไปนี ้
56
ตัวแปร 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 จะกลำยเป็ นตัวแปรภำยใน
แม้ วำ่ จะชื่อเหมือนกันตัวแปร
ภำยนอกที่มีอยูแ่ ล้ วก็ตำม ทำ
ให้ ได้ ผลกำรทำงำนไม่ถกู ต้ อง
ตำมที่ต้องกำร
57
ตัวแปร 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";
?>
58
ตัวแปร Global function
• กำรตัวแปรแบบ static ภำยในฟั งก์ชนั
สมมุตวิ ำ่ เรำต้ องกำรจะใช้ ตวั แปรภำยในฟั งก์ชนั และสำมำรถเก็บค่ำไว้
ได้ ตลอดเวลำ โดยไม่สญ
ู หำยไปทุกครัง้ ที่มีกำรเรี ยกใช้ ฟังก์ชนั ในกรณีนี ้
เรำจะแจ้ งใช้ ตวั แปรให้ เป็ นแบบ static ตำมตัวอย่ำงต่อไปนี ้
ทุกครัง้ ที่มีกำรเรี ยกใช้ ฟังก์ชนั ดังกล่ำว ตัวแปรชื่อ $num_func_calls ซึง่ มี
ค่ำเริ่มต้ นเป็ นศูนย์ในตอนแรก จะเพิ่มค่ำที่เก็บขึ ้นทีละหนึง่
function MyFunc() {
static $num_func_calls = 0;
echo "my function\n";
return ++$num_func_calls;
}
59
ตัวแปร 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 ตำมลำดับ
60