การแอดข้อมูล ไม่ตรงตามเงื่อนไขรบกวนพี่ช่วยหน่อยนะค่ะ
สวัสดีค่ะ หนูมีเรื่องจะสอบถามค่ะ ว่าหนูเขียนโครงสร้างผิดอย่างไร
คือหนูต้องการเช็คค่าตอนเพิ่มข้อมูล ตามเงื่อนไขต่อไปนี้
1.ถ้าค่าที่ส่งมาแล้ว เป็นค่าว่างให้โชว์ไออะล๊อกบ๊อกแล้วกับไปหน้าแอด โดยไม่เพิ่มข้อมูล
2.ถ้าสกุลไฟล์ไม่ตรงตามที่กำหนดไว้ ก็ให้โชว์ไออะล๊อกบ๊อกแล้วกับไปหน้าแอด โดยไม่เพิ่มข้อมูล
3.แล้วถ้าขนาดไฟล์ เกินขนาดที่ตั้งไว้ ก็ให้โชว์ไออะล๊อกบ๊อกแล้วกับไปหน้าแอด โดยไม่เพิ่มข้อมูล
4.ถ้าไม่ตรงตามเงือนไขทุกให้เพิ่มข้อมูลได้
แต่ที่หนูเขียนมันดันเพิ่มข้อมมูลให้ตลอดเลยค่ะ หนูเลยงงว่าหนูเขียนผิดตรงไหน
รบกวนพี่ๆช่วยตรวจสอบให้หน่อยนะค่ะ
Code (PHP)
<?
require_once('../Connections/conn.php');
$id_room = $_POST[id_room];
$no_room = $_POST[no_room];
$name_room = $_POST[name_room];
$add_room = $_POST[add_room];
$Tel_room = $_POST[Tel_room];
if(!$name_room || !$add_room || !$Tel_room)
{
?>
<script language="javascript">
alert("กรุณากรอกข้อมูลให้ครบ");
location="add_room.php";
</script>
<?
}
print_r($_FILES[up_file]);
echo "<br>";
$parth= "../picture/room/";
$expname = explode('.',$_FILES[up_file][name]);
$img_surname =$expname[1];
if($img_surname!='gif'&&$img_surname!='GIF' &&$img_surname!='jpg'&&$img_surname!='JPG'&&$img_surname!='jpeg'&&$img_surname!='JPEG' &&$img_surname!='bmp'&&$img_surname!='BMP'&&$img_surname!='png'&&$img_surname!='PNG')
{
?>
<script language="javascript">
alert("สกุลไฟล์ไม่สนับสนุน");
location="manage_room.php";
</script>
<?
}
if($_FILES[up_file][size]>1024000)
{
?>
<script language="javascript">
alert("???");
location="manage_room.php";
</script>
<?
}
else
{
$pic_name = date('dmYHis').".".$img_surname;
copy($_FILES[up_file][tmp_name],$parth.$pic_name);
$sql_add ="INSERT INTO `ibookiwct`.`db_room` (`id_room` ,`no_room`,`name_room` ,`add_room`,`Tel_room` ,`pic`)VALUES (NULL , '$no_room', '$name_room' ,'$add_room','$Tel_room','$pic_name')";
$query_add = mysql_query($sql_add);
if ($query_add)
{
?>
<script language="javascript">
alert("บันทึกข้อมูลเรียบร้อย");
location="manage_room.php";
</script>
<?
}
else
{
?>
<script language="javascript">
alert("ไม่สามารถบันทึกข้อมูลได้!!");
location="manage_room.php";
</script>
<?
}
}
?>
Tag : - - - -
Date :
2015-02-15 21:53:25
By :
moo_810
View :
1116
Reply :
15
หลักการ
การตรวจสอบ แล้ว alert ควรทำฝั่ง client ใช้ javascript ตรวจสอบเบื้องต้นก่อนครับ
ส่วนโค๊ด php ตัวรับ แค่ตรวจสอบ ถ้าผิดเงื่อนไข ก็จบโปรแกรมไป ไม่ต้อง alert ให้วกวน
เพราะ ถ้ามันผ่าน javascript มาได้แล้วข้อมูลยังผิดอีก ก์คือโดน hack แล้วครับไม่ต่องไปสนใจการ alert
ส่วนโค๊ดที่เขียน อย่าลืมใส่ exit หลังคำสั่ง alert ทุกอัน ตามตัวอย่างครับ
เมื่อตรวจสอบแล้ว มันไม่หยุดการทำงาน
หรือจะใส่ คำสั่ง else ไปด้วย ก็จะครบรูปแบบ ไม่หลง flowcontrol
Code (PHP)
if(!$name_room || !$add_room || !$Tel_room)
{
?>
<script language="javascript">
alert("กรุณากรอกข้อมูลให้ครบ");
location="add_room.php";
</script>
<?
exit;
}
แนะนำ: <? แบบย่ออย่าใช้ครับ ใช้ <?php ให้เป็นนิสัย เวลาเปลี่ยน version ในอนาคตจะได้ไม่ต้องกลับมาแก้
ตัวแปร array ให้ใส่ quote ครอบ ชื่อ element ด้วยครับ ลด warning ใน log php error
เช่น $a['test']; ไม่ควรเขียนแค่ $a[test];
Date :
2015-02-16 07:51:12
By :
Chaidhanan
แก้อะไรตรงไหนบ้าง เอาโค๊ดที่แก้แล้วมาดูด้วยครับ
Date :
2015-02-16 19:04:50
By :
Chaidhanan
//แบบนี้ไม่เคยใช้อ่ะ ไม่ทราบว่ามีแบบนี้หรือเปล่าครับ ถ้าแบบนี้ใช้ได้ ผมก็ได้ความรู้เพิ่ม
if(!$name_room || !$add_room || !$Tel_room)
//เคยใช้แต่นี้ ไม่รู้ว่าเก่าไปหรือเปล่า
if($name_room !="" || $add_room !="" || $Tel_room !="")
//----- ลองเติม else ------
if(!$name_room || !$add_room || !$Tel_room)
{
//อยากใส่สคริปก็ว่าไป
}else{ //ลองเติม else
//บรรทัดที่ 19 ถึง 67 น่าจะอยู่ใน else นะ
}
Date :
2015-02-16 19:08:50
By :
apisitp
ตอบความคิดเห็นที่ : 3 เขียนโดย : Chaidhanan เมื่อวันที่ 2015-02-16 19:04:50
รายละเอียดของการตอบ ::
Code (PHP)
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>em1</title>
</head>
<body>
<?
require_once('../Connections/conn.php');
$id_room = $_POST['id_room'];
$no_room = $_POST['no_room'];
$name_room = $_POST['name_room'];
$add_room = $_POST['add_room'];
$Tel_room = $_POST['Tel_room'];
if(!$name_room || !$add_room || !$Tel_room)
{
?>
<script language="javascript">
alert("กรุณากรอกข้อมูลให้ครบ");
location="add_room.php";
</script>
<?
}
exit;
print_r($_FILES[up_file]);
echo "<br>";
$parth= "../picture/room/";
$expname = explode('.',$_FILES[up_file][name]);
$img_surname =$expname[1];
if($img_surname!='gif'&&$img_surname!='GIF' &&$img_surname!='jpg'&&$img_surname!='JPG'&&$img_surname!='jpeg'&&$img_surname!='JPEG'&&$img_surname!='bmp'&&$img_surname!='BMP'&&$img_surname!='png'&&$img_surname!='PNG')
{
?>
<script language="javascript">
alert("สกุลไฟล์ไม่สนับสนุน");
location="manage_room.php";
</script>
<?
exit;
}
if($_FILES[up_file][size]>1024000)
{
?>
<script language="javascript">
alert("???");
location="manage_room.php";
</script>
<?
exit;
}
else
{
$pic_name = date('dmYHis').".".$img_surname;
copy($_FILES[up_file][tmp_name],$parth.$pic_name);
$sql_add ="INSERT INTO `ibookiwct`.`db_room` (`id_room` ,`no_room`,`name_room` ,`add_room`,`Tel_room` ,`pic`)VALUES (NULL , '$no_room', '$name_room' ,'$add_room','$Tel_room','$pic_name')";
$query_add = mysql_query($sql_add);
if ($query_add)
{
?>
<script language="javascript">
alert("บันทึกข้อมูลเรียบร้อย");
location="manage_room.php";
</script>
<?
}
else
{
?>
<script language="javascript">
alert("ไม่สามารถบันทึกข้อมูลได้!!");
location="manage_room.php";
</script>
<?
}
}
?>
</body>
</html>
ประวัติการแก้ไข 2015-02-16 19:57:59
Date :
2015-02-16 19:57:32
By :
moo_810
ลองดูเป็นตัวอย่างนะครับ
Code (PHP)
<?php
/////////////////////////////////////////// ส่วนของ PHP /////////////////////////////////////
require_once('../Connections/conn.php');
/////////////////////////////// ลองดูตัวอย่างการอ้างอิง //////////////
$id_room = isset($_POST['id_room'])? intval($_POST['id_room']) : '';
///////////////////////////////////////////////////////////////////////
$no_room = $_POST['no_room'];
$name_room = $_POST['name_room'];
$add_room = $_POST['add_room'];
$Tel_room = $_POST['Tel_room'];
if(!$name_room || !$add_room || !$Tel_room){
$msg = "กรุณากรอกข้อมูลให้ครบ";
}else{
//print_r($_FILES['up_file']);
//echo "<br>";
$parth= "../picture/room/";
$expname = explode('.',$_FILES['up_file']['name']);
$img_surname =$expname[1];
if( !preg_match('/^(gif|jpg|jpeg|bmp|png)$/i', $img_surname)){
$msg="สกุลไฟล์ไม่สนับสนุน";
}elseif($_FILES[up_file][size]>1024000){
$msg="ขนาดไฟล์ใหญ่เกินไป";
}else{
$pic_name = date('dmYHis').".".$img_surname;
move_uploaded_file($_FILES['up_file']['tmp_name'], $parth.$pic_name);
$sql_add ="
INSERT INTO `ibookiwct`.`db_room`
(`id_room` ,`no_room`,`name_room` ,`add_room`,`Tel_room` ,`pic`)
VALUES (NULL , '$no_room', '$name_room' ,'$add_room','$Tel_room','$pic_name')
";
$query_add = mysql_query($sql_add);
if ($query_add){
$msg="บันทึกข้อมูลเรียบร้อย";
}else{
$msg="ไม่สามารถบันทึกข้อมูลได้!!";
}
}
}
/////////////////////////////////////////////////////////////// สิ้นสุด ส่วนของ PHP
////////////////////////////////////////////////////////////////////////////////////////////
?>
<!-- /////////////////////////////////////////// เริ่มส่วน HTML + Javascirpt //////////////////////////// -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>em1</title>
</head>
<script language="javascript">
alert("<?php echo $msg; ?>");
location.href="manage_room.php";
</script>
<body>
</body>
</html>
ประวัติการแก้ไข 2015-02-17 13:33:48
Date :
2015-02-16 21:32:33
By :
Chaidhanan
โทษทีครับ เอาจาก คห 8 มาใส่ได้เลยครับ ลืมใส่ครับ
Date :
2015-02-16 21:59:08
By :
Chaidhanan
move_uploaded_file ขอโทษครับ ตกตัว d ไปตัว แบบเขียนแล้ว ไม่ได้เทสต์ อะครับ
แต่ว่ามี internet อยู่กับตัว น่าจะลอง ก๊อปปี ไปค้นหา error จาก เฮียกู ได้นะครับ
คำค้น PHP move_uploade_file ยังไม่ทันส่งคำค้นเลย มันโชว์ คำที่ถูกต้อง ออกมา พรึดเลย
ปล. คำสั่งข้างล่างนี่อาจผิดผลาดได้
18.$expname = explode('.',$_FILES['up_file']['name']);
19.$img_surname =$expname[1];
สีแดงถูกกำหนดให้เอา เฉพาะ element 1 และถ้าชื่อไฟล์เขาเป็นแบบนี้ล่ะครับ
จะทำอย่างไร mypic.test.jpg ซึ่งชื่อแบบนี้ก็ใช้กันเกลือนไปนะครับ
ลองไปคิดดูนะครับว่าควรจะเขียนอย่างไรเป็นการบ้าน ถ้ายังไม่ได้ค่อย มาโพสใหม่
ประวัติการแก้ไข 2015-02-17 10:43:43
Date :
2015-02-17 10:37:01
By :
Chaidhanan
Load balance : Server 02