|
|
|
ความปลอดภัย Post และ Get ด้วยเครื่องหมาย (") และ (')., รวมไปถึงเรื่องของ mysql_db_query แบบถูกวิธี |
|
|
|
|
|
|
|
ขอถามหน่อยครับ
จำเป็นด้วยหรือครับที่ต้องใช้นำตัวแปลไปใสไว้ใน $_POST["aaaa"]; หรือ $_GET["aaaa"];ด้วยหรือครับ
เพราะตอนที่ใข้ <form method="get" action="xxx.php"> หรือ <form method="post" action="xxx.php"> เพื่อส่งค่าไปอีกไฟล์
มันค่าปุ๊บ ก็ใช้ค่าในตัวแปลที่ส่งมาได้อยู่แล้ว
ปล.ผมมือใหม่ php อ่ะครับ
|
|
|
|
|
Date :
2010-10-05 14:35:17 |
By :
zoberranger |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
คือเรื่องของเรื่องคือ ถ้ามันเป็น register global มันจะทับค่าอัตโนมัติครับ เช่น
index.php?abc=1
ดังนั้น ถ้าเขาส่งค่า มาผ่านพารามิเตอร์ หรือ โพสมา ก็ตาม มันจะเอาใส่ค่าตัวแปรปรกติให้อัตโนมัติ เช่นกรณีนี้ มีตัวแปร $abc อัตโนมัติถ้าเราไม่ได้ประกาสหรือ คิดว่าจะใช้ค่า default แต่มันดันมีค่าเป็น 1 ดังนั้น แนะนำว่าควรปิดตัวนี้ครับ
ส่วน
$_POST[aaaa];
$_POST['aaa'];
$_POST["aaaa"];
แนะนำให้ทำแบบที่สองและสามครับ แบบแรกนั้น ค่า aaaa อาจไปตรงกับค่าคงที่ เช่น
define('aaaa', '555'); ก็จะได้เป็นค่า '555' แทน 'aaaa'
|
|
|
|
|
Date :
2010-10-05 19:11:47 |
By :
pjgunner.com |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เอาเรื่องเครื่องหมาย ' , " ต่างกันยังไง ตามหลักนะครับถ้าเป็นเครื่องหมาย ' จะใช้กับตัวอักษรตัวเดียว อย่างเช่น 'a' ส่วน " จะใช้กับข้อความอย่างเช่น "aaa" แต่สำหรับ php แล้วใช้อันไหนก็ได้เหมือนกันครับ รู้สึกมีคนเคยบอกว่า ' จะประมวลเร็วกว่า " ด้วยนะ แต่ผมก็ไม่รับประกันนะเพราะไม่ได้พิสูจด้วยตนเองในกรณีที่รับตัวแปลมานั้นแนะนำให้ใช้ แบบ 2 กับ 3 ดีกว่าแบบ แรกไม่แนะนำครับ
ส่วน mysql_query กับ mysql_db_query ต่างกัยังไง คือ
mysql_query ใช้ประมวลผลคำสัง sql ได้เลย แต่เราต้องทำการ select ฐานข้อมูลมาก่อนนะครับ
อย่างเช่น mysql_select_db("ชื่อฐานข้อมูล"); แล้วจึงใช้ mysql_query("คำสั่ง sql");
ส่วน mysql_db_query(); จะต้องมีชื่อฐานข้อมูลและคำสั่ง sql ครับ แต่เราไม่ต้อง select ฐานข้อมูลขึ้นมาก่อน
อย่างเช่น mysql_db_query("ชื่อฐานข้อมูล","คำสั่ง sql");
ต่อไป
$sql="SELECT.................";
$result=mysql_db_query($dbname,$sql);
ถือว่าไม่ผิดครับ จะใส่ในตัวแปรก่อนหรือไม่ก็ได้ครับ แต่ผมว่าถ้าใส่ในตัวแปรก่อนมันก็จะทำให้เปลืองความจำไปอีกแนะนำให้ใส่ คำสั่ง sql ไปใน function เลยครับ เช่น
$result=mysql_db_query("test","SELECT.................");
ต่อไป
if (result) { }
ตกเครื่องหมาย $ รึป่าวครับ
ต้องเป็น if ($result) { }
แต่อันนี้ไม่มีปัญหาครับเป็นการเซ็คว่า code sql query ได้หรือไม่ครับ
สุดท้าย
while ($rs=mysql_fetch_array($result)) { }
แนะนำให้เปลี่ยนมาใช้
mysql_fetch_row();
หรือ
mysql_fetch_assoc();
ดีกว่าครับเพราะการประมวลผลจะน้อยกว่าและเร็วกว่าด้วยเหตุผลคือ
mysql_fetch_array(); จะ return ค่ากลับมา เป็นทั้ง array และ associative array ซึ้งมันเกินความจำเป็นตอนเอามาใช้
ส่วน
mysql_fetch_row(); จะ return ค่ากลับมา เป็น array เริ่มตั้งแต่ index ที่ 0 ไปเรื่อย ตามจำนวนที่ select มา
และ
mysql_fetch_assoc(); จะ return ค่ากลับมา เป็น associative array ตามชื่อฟิวล์ใน table ที่ select มา
อธิบายจบแล้วครับตามความรู้ที่ผมมีและเข้าอยู่อาจช่วยได้บ้างไม่มากก็น้อย ควรศึกษาเพิ่มเติมด้วยนะครับ อย่าเชื่อจนกว่าคุณจะได้ลอง
ผิดพลาดประการใดขออภัยมานะที่นี้ด้วยครับ
|
ประวัติการแก้ไข 2010-10-05 22:39:55
|
|
|
|
Date :
2010-10-05 22:36:37 |
By :
nueng9489 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 04
|