|
|
|
สอบถามเรื่อง ip address javascript validation เช็คค่า ip ที่ไม่ซ้ำกันก่อนบันทึกข้อมูลลงฐานข้อมูล |
|
|
|
|
|
|
|
มันคงจะมีวิธีที่ดีกว่านี้นะ ลองดู
Code (PHP)
$ip = "ssd";
$arr = explode(".",$ip);
if(count($arr) == 4)
{
//select โดย where ตาม $ip
}
else
{
//insert
}
หรือไม่ก็ ไม่ต้องตัด explode แค่ไป
Code (PHP)
$xx = select ipaddress_a from sourcedestination where ipaddress_a = '$ip'
ถ้า row ออกมา มากกว่า 0 แสดงว่ามันมีข้อมูลอยู่แล้ว
|
|
|
|
|
Date :
2013-10-03 08:17:56 |
By :
anotherdie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
อ้างอิงจาก No.1
Code (PHP)
$continue = true;
$ip = "????";
$arr = explode(".",$ip);
if(isset($arr[3]) )
{
$sql = "select ipaddress_a from sourcedestination where ipaddress_a = '$ip' "
$qry = mysql_query($sql) or die(mysql_error());
if(mysql_num_rows($qry) > 0)
{
$continue = false;
}
}
if($continue == true)
{
//Insert
}else{
//Duplicate IP
}
|
|
|
|
|
Date :
2013-10-03 09:20:39 |
By :
{Cyberman} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
เราไม่สามารถตรวจสอบว่าข้อมูลเป็น IP จริงๆ หรือเปล่าด้วย explode() และการตรวจสอบจำนวนสมาชิกใน array
ลองคิดดูว่าหากกรอก 'xxx.xxx.xxx.xxx' หรือแม้แต่ '...' โปรแกรมก็จะมองว่าเป็น IP อยู่ดี
การ validate ต้องทำด้วย regular expression หรือฟังก์ชั่นที่ออกแบบมาเพื่อตรวจสอบเช่น filter_var()
ตัวอย่าง
<?php
$ip = '127.0.0.1';
// ถ้ามีการกรอก IP
if (!empty($ip)) {
// ถ้าเป็น IP
if (preg_match('/^\s*\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\s*$/', $ip)) {
// ตรวจว่ามีแถวที่มีค่า IP นั้นๆ อยู่หรือไม่
if (!mysql_fetch_row(mysql_query("SELECT * FROM `sourcedestination` WHERE `ipaddress_a` = '$ip' LIMIT 1"))) {
// ถ้าไม่ซ้ำก็ INSERT
mysql_query("INSERT INTO `sourcedestination` (`ipaddress_a`) VALUES ('$ip')");
} else {
// ทำการบอกผู้ใช้ว่า IP ซ้ำ
}
} else {
// ทำการบอกผู้ใช้ว่า IP ที่กรอกมามีรูปแบบไม่ถูกต้อง
}
}
|
|
|
|
|
Date :
2013-10-03 09:47:03 |
By :
phpinfo() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ตรวจสอบความถูกต้องของ IP ด้วย filter_var()
<?php
$ip = '127.0.0.1';
// ถ้ามีการกรอก IP
if (!empty($ip)) {
// ถ้าเป็น IP
if (filter_var($ip, FILTER_VALIDATE_IP)) {
// ตรวจว่ามีแถวที่มีค่า IP นั้นๆ อยู่หรือไม่
if (!mysql_fetch_row(mysql_query("SELECT * FROM `sourcedestination` WHERE `ipaddress_a` = '$ip' LIMIT 1"))) {
// ถ้าไม่ซ้ำก็ INSERT
mysql_query("INSERT INTO `sourcedestination` (`ipaddress_a`) VALUES ('$ip')");
} else {
// ทำการบอกผู้ใช้ว่า IP ซ้ำ
}
} else {
// ทำการบอกผู้ใช้ว่า IP ที่กรอกมามีรูปแบบไม่ถูกต้อง
}
}
หรือตรวจสอบความถูกต้องของ IP ด้วย ip2long()
<?php
$ip = '127.0.0.1';
// ถ้ามีการกรอก IP
if (!empty($ip)) {
// ถ้าเป็น IP $n จะเป็นตัวเลข นอกนั้นจะเป็น false
// ใช้ @ ไว้ด้วยเพราะ ip2long() จะสร้าง warning หากรูปแบบ IP ไม่สามารถแปลงเป็นตัวเลขได้
if (is_int(@ip2long($ip))) {
// ตรวจว่ามีแถวที่มีค่า IP นั้นๆ อยู่หรือไม่
if (!mysql_fetch_row(mysql_query("SELECT * FROM `sourcedestination` WHERE `ipaddress_a` = '$ip' LIMIT 1"))) {
// ถ้าไม่ซ้ำก็ INSERT
mysql_query("INSERT INTO `sourcedestination` (`ipaddress_a`) VALUES ('$ip')");
} else {
// ทำการบอกผู้ใช้ว่า IP ซ้ำ
}
} else {
// ทำการบอกผู้ใช้ว่า IP ที่กรอกมามีรูปแบบไม่ถูกต้อง
}
}
ลองประยุกต์ใช้ดูนะครับ
|
|
|
|
|
Date :
2013-10-03 09:51:51 |
By :
phpinfo() |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
สุดยอดครับ อิอิ พอดีผมมองว่ามันเป็น string ตัวนึง
|
|
|
|
|
Date :
2013-10-03 10:40:48 |
By :
anotherdie |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Load balance : Server 05
|