วิธีเรียกใช้ ฟังก์ชัน Checkip() เรียกใช้ยังไง

สำหรับผู้ที่ เริ่มต้น Programming - PHP มีอะไร แนะนำ หรือข้อสงสัยต้องบอร์ด นี้ คนที่มีความรู้ แบ่งปันคนอื่นบ้างนะ ปัญหาการเขียนโปรแกรม แบบ OOP Session Cookies php network

Moderator: mindphp, ผู้ดูแลกระดาน

ภาพประจำตัวสมาชิก
Buck Kittisak
PHP VIP Members
PHP VIP Members
โพสต์: 9079
ลงทะเบียนเมื่อ: 07/05/2024 9:10 am

วิธีเรียกใช้ ฟังก์ชัน Checkip() เรียกใช้ยังไง

โพสต์ที่ยังไม่ได้อ่าน โดย Buck Kittisak »

ไฟล์ PHP ที่เรียกดึงข้อมูลมาแสดงในตาราง

โค้ด: เลือกทั้งหมด

//ดึงข้อมูลมาแสดงที่ตาราง
$start = (int) $phpbb_container->get('request')->variable('start', 0);
$limit = 10;
$sql_ary = array(
    'SELECT' => '*',
    'FROM' => array(
        'tools_land_building_tax_calculation ' => 'tax',
    ),
    'ORDER_BY' => 'id DESC',
);
$sql2 = $db->sql_build_query('SELECT', $sql_ary);
$result2 = $db->sql_query_limit($sql2, $limit, $start);
$sql_ary['SELECT'] = 'COUNT(tax.id) as num_row';
$sql_num = $db->sql_build_query('SELECT', $sql_ary);
$result_num = $db->sql_query($sql_num);
$count = (int) $db->sql_fetchfield('num_row');

$no = $count - $start;

$template_data = [];
foreach ($data as $category) {
    $template_data[$category[0]] = $category[1];
}

while ($data = $db->sql_fetchrow($result2, $result_num)) {
    $template->assign_block_vars('loop', array(
        'num' => $no, $no--,
        'id' => $data['id'],
        'tlandc_username' => $data['tlandc_username'],
        'tlandc_land_type_id' => isset($template_data[$data['tlandc_land_type_id']]) ? $template_data[$data['tlandc_land_type_id']] : '',
        'tlandc_land_value' => number_format($data['tlandc_land_value']),
        'tlandc_building_value' => number_format($data['tlandc_building_value']),
        'tlandc_tax_rate' => ($data['tlandc_tax_rate']),
        'tlandc_total_tax' => number_format($data['tlandc_total_tax']),
        'tlandc_create_date' => $user->format_date($data['tlandc_create_date']),
        'tlandc_user_ip' => checkip($data['tlandc_user_ip']),
    ));
}



$sql2 = $db->sql_build_query('SELECT', $sql_ary);
$result2 = $db->sql_query_limit($sql2, $limit, $start);
  • ผมอยากทราบวิธีการใช้งานฟังก์ชัน Checkip โดยอยากให้ข้อมูล ip มาแสดงในตารางดังรูปตัวอย่างนี้ครับ :
checkip.png
checkip.png (106.89 KiB) Viewed 1055 times
ภาพประจำตัวสมาชิก
Buck Kittisak
PHP VIP Members
PHP VIP Members
โพสต์: 9079
ลงทะเบียนเมื่อ: 07/05/2024 9:10 am

Re: วิธีเรียกใช้ ฟังก์ชัน Checkip() เรียกใช้ยังไง

โพสต์ที่ยังไม่ได้อ่าน โดย Buck Kittisak »

Buck Kittisak เขียน: 01/06/2024 3:22 pm ไฟล์ PHP ที่เรียกดึงข้อมูลมาแสดงในตาราง

โค้ด: เลือกทั้งหมด

//ดึงข้อมูลมาแสดงที่ตาราง
$start = (int) $phpbb_container->get('request')->variable('start', 0);
$limit = 10;
$sql_ary = array(
    'SELECT' => '*',
    'FROM' => array(
        'tools_land_building_tax_calculation ' => 'tax',
    ),
    'ORDER_BY' => 'id DESC',
);
$sql2 = $db->sql_build_query('SELECT', $sql_ary);
$result2 = $db->sql_query_limit($sql2, $limit, $start);
$sql_ary['SELECT'] = 'COUNT(tax.id) as num_row';
$sql_num = $db->sql_build_query('SELECT', $sql_ary);
$result_num = $db->sql_query($sql_num);
$count = (int) $db->sql_fetchfield('num_row');

$no = $count - $start;

$template_data = [];
foreach ($data as $category) {
    $template_data[$category[0]] = $category[1];
}

while ($data = $db->sql_fetchrow($result2, $result_num)) {
    $template->assign_block_vars('loop', array(
        'num' => $no, $no--,
        'id' => $data['id'],
        'tlandc_username' => $data['tlandc_username'],
        'tlandc_land_type_id' => isset($template_data[$data['tlandc_land_type_id']]) ? $template_data[$data['tlandc_land_type_id']] : '',
        'tlandc_land_value' => number_format($data['tlandc_land_value']),
        'tlandc_building_value' => number_format($data['tlandc_building_value']),
        'tlandc_tax_rate' => ($data['tlandc_tax_rate']),
        'tlandc_total_tax' => number_format($data['tlandc_total_tax']),
        'tlandc_create_date' => $user->format_date($data['tlandc_create_date']),
        'tlandc_user_ip' => checkip($data['tlandc_user_ip']),
    ));
}



$sql2 = $db->sql_build_query('SELECT', $sql_ary);
$result2 = $db->sql_query_limit($sql2, $limit, $start);
  • ผมอยากทราบวิธีการใช้งานฟังก์ชัน Checkip โดยอยากให้ข้อมูล ip มาแสดงในตารางดังรูปตัวอย่างนี้ครับ :
checkip.png
Error ที่เจออยู่ตอนนี้ : Fatal error: Uncaught Error: Call to undefined function checkip() in C:\xampp\htdocs\phpBB\tools_land_building_tax_calculation.php:183 Stack trace: #0 {main} thrown in C:\xampp\htdocs\phpBB\tools_land_building_tax_calculation.php on line 183
ภาพประจำตัวสมาชิก
Buck Kittisak
PHP VIP Members
PHP VIP Members
โพสต์: 9079
ลงทะเบียนเมื่อ: 07/05/2024 9:10 am

Re: วิธีเรียกใช้ ฟังก์ชัน Checkip() เรียกใช้ยังไง

โพสต์ที่ยังไม่ได้อ่าน โดย Buck Kittisak »

Buck Kittisak เขียน: 01/06/2024 3:22 pm ไฟล์ PHP ที่เรียกดึงข้อมูลมาแสดงในตาราง

โค้ด: เลือกทั้งหมด

//ดึงข้อมูลมาแสดงที่ตาราง
$start = (int) $phpbb_container->get('request')->variable('start', 0);
$limit = 10;
$sql_ary = array(
    'SELECT' => '*',
    'FROM' => array(
        'tools_land_building_tax_calculation ' => 'tax',
    ),
    'ORDER_BY' => 'id DESC',
);
$sql2 = $db->sql_build_query('SELECT', $sql_ary);
$result2 = $db->sql_query_limit($sql2, $limit, $start);
$sql_ary['SELECT'] = 'COUNT(tax.id) as num_row';
$sql_num = $db->sql_build_query('SELECT', $sql_ary);
$result_num = $db->sql_query($sql_num);
$count = (int) $db->sql_fetchfield('num_row');

$no = $count - $start;

$template_data = [];
foreach ($data as $category) {
    $template_data[$category[0]] = $category[1];
}

while ($data = $db->sql_fetchrow($result2, $result_num)) {
    $template->assign_block_vars('loop', array(
        'num' => $no, $no--,
        'id' => $data['id'],
        'tlandc_username' => $data['tlandc_username'],
        'tlandc_land_type_id' => isset($template_data[$data['tlandc_land_type_id']]) ? $template_data[$data['tlandc_land_type_id']] : '',
        'tlandc_land_value' => number_format($data['tlandc_land_value']),
        'tlandc_building_value' => number_format($data['tlandc_building_value']),
        'tlandc_tax_rate' => ($data['tlandc_tax_rate']),
        'tlandc_total_tax' => number_format($data['tlandc_total_tax']),
        'tlandc_create_date' => $user->format_date($data['tlandc_create_date']),
        'tlandc_user_ip' => checkip($data['tlandc_user_ip']),
    ));
}



$sql2 = $db->sql_build_query('SELECT', $sql_ary);
$result2 = $db->sql_query_limit($sql2, $limit, $start);
  • ผมอยากทราบวิธีการใช้งานฟังก์ชัน Checkip โดยอยากให้ข้อมูล ip มาแสดงในตารางดังรูปตัวอย่างนี้ครับ :
checkip.png
ได้แล้วครับ เดี่ยวจะแสดงวิธีแก้
ภาพประจำตัวสมาชิก
Buck Kittisak
PHP VIP Members
PHP VIP Members
โพสต์: 9079
ลงทะเบียนเมื่อ: 07/05/2024 9:10 am

Re: วิธีเรียกใช้ ฟังก์ชัน Checkip() เรียกใช้ยังไง

โพสต์ที่ยังไม่ได้อ่าน โดย Buck Kittisak »

วิธีแก้ไข

โค้ด: เลือกทั้งหมด

$ip = $request->server('SERVER_ADDR', '');

function checkip($ip)
{
    if (is_numeric(strpos($ip, ":"))) {
        // IPv6
        $ipv6 = explode(':', $ip);
        $str_ipv6 = '';
        foreach ($ipv6 as $key => $value) {
            if (count($ipv6) != intval($key) + 1) {
                $str_ipv6 .= $value . ':';
            } else {
                $str_ipv6 .= '***';
            }
        }
        return $str_ipv6;
    } else if (is_numeric(strpos($ip, "."))) {
        // IPv4
        $ipv4 = explode(':', $ip);
        $str_ipv4 = '';
        foreach ($ipv4 as $key => $value) {
            if (count($ipv4) != intval($key) + 1) {
                $str_ipv4 .= $value . ':';
            } else {
                $str_ipv4 .= '***';
            }
        }
        return  $str_ipv4;
    }
}


// ใช้ฟังก์ชัน checkip
$ip = checkip($request->server('SERVER_ADDR', ''));
  1. รับค่า IP จาก Request โดยดึงค่า IP Address ของเซิร์ฟเวอร์จากตัวแปร $_SERVER ถ้าไม่มีค่าให้ใช้เป็นค่าว่าง ('').
  2. เพิ่ม ฟังก์ชัน checkip เพื่อ รับค่า IP Address เป็นอาร์กิวเมนต์
  3. เพิ่มเงื่อนไข ตรวจสอบว่าเป็น IPv6 หรือ IPv4
  4. เรียกใช้ฟังก์ชัน checkip
ตอบกลับโพส
  • Similar Topics
    ตอบกลับ
    แสดง
    โพสต์ล่าสุด

ผู้ใช้งานขณะนี้

สมาชิกกำลังดูบอร์ดนี้: ไม่มีสมาชิกใหม่ และบุคลทั่วไป 6