มาตั้งกระทู้ใหม่ดีกว่า เห็นเพื่อนๆ หลายๆ คนเขียนโปรแกรมลักษณะแบบนี้กัน
Code (PHP)
<?php
if(isset($_FILES["file"])){
extract($_FILES);
extract($file);
echo $name."<br>";
echo $tmp_name."<br>";
echo $size."<br>";
}
?>
มันจะสับสบกับตัวแปรที่สร้างขึ้นเองน่ะครับ
Date :
2010-07-28 23:29:43
By :
ไม่ได้ login
เหมือนผมเคยถามไปแล้วเช่นกัน ก็มีเสียงตอบมาว่า การเขียนแบบ $_POST[ตรงๆ]; มันง่ายต่อการตรวจสอบดีบักโปรแกรมครับ
Date :
2010-07-28 23:33:47
By :
Manussawin
ผมว่า $_POST[""]; น่าจะสะดวกที่สุดแล้วแล้วน่ะครับ เพราะง่ายต่อการตรวจสอบค่าและชนิดของตัวแปร แต่ปกติการ Insert ผมจะไม่ใส่ $_POST[""]; เข้าไปตรง ๆ จะครอบด้วย function ไว้เสมอ อาจจะเป็น function ไว้สำหรับตรวจสอบค่า ก่อนการ Insert
Date :
2010-07-28 23:36:22
By :
webmaster
เช่น ลองยกตัวอย่างหน่อยครับพี่วิน จะได้มีความรู้ใหม่ๆครับ ขอบคุณครับ
Date :
2010-07-28 23:48:07
By :
Manussawin
$result = mysql_query("SELECT MAX(apply_id) AS max_id FROM apply");
$row = mysql_fetch_assoc($result);
$temp_year = substr($row['max_id'], 0, 2);
$nowyear = (date("y")+43);
$auto_id = ($nowyear == $temp_year) ? '' : ($nowyear) . "000001";
$copy_of_ID_registration = ($_POST['copy_of_ID_registration']) ? '1' : '0';
$copy_of_ID_card = ($_POST['copy_of_ID_card']) ? '1' : '0';
$proxy = ($_POST['proxy']) ? '1' : '0' ;
$document_other = ($_POST['document_other']) ? '1' : '0';
mysql_query("INSERT INTO `apply` (
`apply_id`,
`install_kind`,
`use_kind_id`,
`req_gender`,
`req_name`,
`req_address`,
`req_phone`,
`req_use_gender`,
`req_use_name`,
`req_use_cid`,
`req_use_address`,
`req_use_phone`,
`discount_warter_use`,
`discount_warter_use_unit`,
`copy_of_ID_registration`,
`copy_of_ID_card`,
`proxy`,
`document_other`,
`document_other_detail`,
`size_meter`,
`meter_price`,
`insurance_meter_price`,
`req_date`
)
VALUES (
'$auto_id',
'" . $_POST['install_kind'] . "',
'" . $_POST['use_kind_id'] . "',
'" . $_POST['req_gender'] . "',
'" . trim($_POST['req_name']) ."',
'" . trim($_POST['req_address']) . "',
'" . trim($_POST['req_phone']) . "',
'" . $_POST['req_use_gender'] . "',
'" . trim($_POST['req_use_name']) ."',
'" . $_POST['req_use_cid'] . "',
'" . trim($_POST['req_use_address']) . "',
'" . trim($_POST['req_use_phone']) . "',
'" . $_POST['discount_warter_use'] . "',
'" . $_POST['discount_warter_use_amount'] . "',
'" . $copy_of_ID_registration . "',
'" . $copy_of_ID_card . "',
'" . $proxy . "',
'" . $document_other . "',
'" . trim($_POST['document_other_detail']) . "',
'" . $_POST['size_meter'] . "',
'" . trim($_POST['meter_price']) . "',
'" . trim($_POST['insurance_meter_price']) . "',
NOW());"
) or die(mysql_error());
นี่่ style ฟังก์ชัน insert ของผม เผื่อใครยังไม่เจอรูปแบบที่ถูกใจก็ลองเปลี่ยนมาเขียนแบบนี้ดูนะครับ
ประวัติการแก้ไข 2010-07-28 23:53:31
Date :
2010-07-28 23:52:23
By :
DownsTream
ปกติแล้วการรับค่าทั้ง String และ Integer ทุก Application ที่เขียน ผมจะไม่โยนค่าตรง ๆ เข้าไปครับ แต่จะครอบด้วย function ที่สร้างขึ้นมาเพื่อจัดการชนิดของตัวแปรนั้น ๆ เพื่อความปลอดภัยในการตรวจสอบค่าตัวแปรที่นำไปใช้ครับ อันนี้ใครจะลองเอาไปใช้ก็ได้ครับ แนะนำเฉย ๆ
Code (PHP)
function chkString($strText)
{
return $strText;
}
function checkInt($intText)
{
return $intText;
}
$result = mysql_query("SELECT MAX(apply_id) AS max_id FROM apply");
$row = mysql_fetch_assoc($result);
$temp_year = substr($row['max_id'], 0, 2);
$nowyear = (date("y")+43);
$auto_id = ($nowyear == $temp_year) ? '' : ($nowyear) . "000001";
$copy_of_ID_registration = ($_POST['copy_of_ID_registration']) ? '1' : '0';
$copy_of_ID_card = ($_POST['copy_of_ID_card']) ? '1' : '0';
$proxy = ($_POST['proxy']) ? '1' : '0' ;
$document_other = ($_POST['document_other']) ? '1' : '0';
mysql_query("INSERT INTO `apply` (
`apply_id`,
`install_kind`,
`use_kind_id`,
`req_gender`,
`req_name`,
`req_address`,
`req_phone`,
`req_use_gender`,
`req_use_name`,
`req_use_cid`,
`req_use_address`,
`req_use_phone`,
`discount_warter_use`,
`discount_warter_use_unit`,
`copy_of_ID_registration`,
`copy_of_ID_card`,
`proxy`,
`document_other`,
`document_other_detail`,
`size_meter`,
`meter_price`,
`insurance_meter_price`,
`req_date`
)
VALUES (
'".chkString($auto_id)."',
'" . checkInt($_POST['install_kind']) . "',
'" . checkInt($_POST['use_kind_id']) . "',
'" . chkString($_POST['req_gender']) . "',
'" . chkString(trim($_POST['req_name'])) ."',
'" . trim($_POST['req_address']) . "',
'" . trim($_POST['req_phone']) . "',
'" . $_POST['req_use_gender'] . "',
'" . trim($_POST['req_use_name']) ."',
'" . $_POST['req_use_cid'] . "',
'" . trim($_POST['req_use_address']) . "',
'" . trim($_POST['req_use_phone']) . "',
'" . $_POST['discount_warter_use'] . "',
'" . $_POST['discount_warter_use_amount'] . "',
'" . $copy_of_ID_registration . "',
'" . $copy_of_ID_card . "',
'" . $proxy . "',
'" . $document_other . "',
'" . trim($_POST['document_other_detail']) . "',
'" . $_POST['size_meter'] . "',
'" . trim($_POST['meter_price']) . "',
'" . trim($_POST['insurance_meter_price']) . "',
NOW());"
) or die(mysql_error());
จะเห็นว่าเมื่อต้องการแก้ไขอะไรซะอย่างก็แก้ที่ function chkString และ checkInt ได้เลยครับ
Date :
2010-07-29 00:01:23
By :
webmaster
ผมเอาฟังก์ชั่นตามอันนี้ครับ
https://www.thaicreate.com/community/mysqlinjections-protech.html
แต่จะมาทำใหม่
function cip($input) {
GLOBAL $linkID;
if(get_magic_quotes_gpc()) {
$input = stripslashes($input);
}
#ตัด html tag
$input = strip_tags($input);
return mysql_real_escape_string($input,$linkID);
}
mysql_query("insert into table set a='".cip($_POST['a'])."',b='".cip($_POST['b'])."' ");
Date :
2010-07-29 00:10:13
By :
deawx
โอ้ว สุดยอดเลยครับ ทุกๆท่าน ความรุ้ใหม่ ขุดเลยละกันนะครับ
Date :
2010-07-29 00:15:03
By :
Manussawin
ผมเป็นคนหนึ่งนะครับที่ชอบรับค่ามาลงตัวแปรก่อนเพราะว่ามันจะช่วยเลี่่ยงปัญหาการชนของเครื่องหมาย " ได้
เช่น
mysql_query("insert into table set a='".cip($_POST['a'])."',b='".cip($_POST['b'])."' ");
ก็เป็น
mysql_query("insert into table set a='$a',b='$b'");
ผมว่าดูง่ายกว่านะ เพราะผมชอบสับสนกะเครื่องหมาย " ' เวลาเขียนเยอะๆแล้วปิดไม่ครบทุกที
Date :
2010-08-19 01:32:02
By :
iamatomix
ความรู้ดีๆ สูบๆ
่ว่าเแต่ ช่างเอก มาซ่อมอะไรแถวนี้อ่ะ
Date :
2010-08-19 10:22:21
By :
basic111
กระทู้ดีมีประโยชน์ครับ ขอบคุณมากกก
Date :
2010-12-26 20:53:15
By :
lightkung
Date :
2011-03-07 11:47:22
By :
Bangkoklimo Asia.
เปลี่ยนหลายรอบแล้วค่ะ...แต่ปัจจุบันใช้โยน post กับ get ลงตัวแปรก่อนค่อยเอาไปใช้
มันแล้วแต่สะดวกด้วยแหละค่ะ เพราะตัวแปรบางตัวโดนเรียกจากหลายโปรแกรมก็เลยยึดชื่อตัวแปรเดียวไม่ให้สับสนอ่ะค่ะ
Date :
2011-03-14 14:40:05
By :
susaya
แล้วถ้าใช้แบบ $_REQUEST ละคะ มันส่งค่าได้ทั้งแบบ POST,GET
ปกติใช้แต่แบบ $_REQUEST แล้วก็นำค่าไปใช้ต่อได้เลยเหมือกนนนะคะ
ผิดถูกประการใด น้อมรับฟังคะ =w=
Date :
2011-03-14 14:50:39
By :
mzchewiize
ขอบคุณครับ
Date :
2011-05-12 14:29:45
By :
ศุภเชษฐ์
-ชาย/หญิง ที่มีเวลาและสนใจในการทำงาน
-สามารถใช้คอมพิวเตอร์ Internet พื้นฐานได้
-อายุตั้งแต่ 15 ปี ขึ้นไป
-ไม่จำเป็นต้องมีประสบการณ์
-ไม่จำกัดวุฒิการศึกษา
PART-TIME 8,000 - 12,000 บาท / เดือน
FULL-TIME 12,000 บาท/ เดือน
สนใจดูรายละเอียดที่ (สนใจสร้างรายได้กรอกข้อมูลทิ้งไว้ในลิงค์ด้านล่างเลยน่ะ)
>>>>>> http://www.thefirst-one.com/clients/home/031668
>>>>>> http://www.thefirst-one.com/clients/home/031668
>>>>>> http://www.thefirst-one.com/clients/home/031668
เอ้า!! : อยากเป็นวัยรุ่นที่ First Class มีเงินใช้สอยอย่างไม่ขาดสาย
มัวร์รออะไรอยู่ละ' กรอกข้อมูลทิ้งไว้ในลิงค์เว็ปไซด์เลย
Date :
2012-02-12 04:05:24
By :
pop
Load balance : Server 04