Register System by WIFI

ระบบลงทะเบียน ระบบ check-in ระบบลงเวลา ระบบกรอกแบบสอบถาม หรืออื่น ๆ ผ่านระบบ wifi

ทำไมต้องใช้ระบบนี้? เหตุผลที่จัดทำระบบนี้ก็คือการลงทะเบียนออนไลน์ ที่ต้องการให้ผู้ลงทะเบียนอยู่ในพื้นที่หรือสถานที่ ที่กำหนดเท่านั้นที่จะสามารถกรอกข้อมูลได้ เพราะจุดอ่อนของระบบออนไลน์ทั่วไปผู้ใช้งานสามารถเชื่อมต่อเข้า Internet ก็จะสามารถเข้าถึงระบบจากที่ไหนก็ได้ จึงเป็นข้อกังวลของการตรวจสอบได้ ทางออกของการแก้ไขปัญหานี้สามารถทำได้หลายวิธี เช่น การตรวจสอบตำแหน่งผ่านระบบ GPS หรือ Geo-location ซึ่งเราสามารถเขียน web application เพื่อตรวจสอบตำแหน่งของผู้ใช้ ว่าอยู่ในพื้นที่ ที่เรากำหนดไว้หรือไม่ แต่การใช้วิธีดังกล่าวก็ต้องเขียน software เพิ่มเติมซึ่งก็มีความยุ่งยากในการทำพอสมควร อีกวิธีที่ง่ายกว่าก็คือการทำระบบให้สามารถเข้าถึงได้ผ่าน wifi ที่กำหนด ซึ่งด้วยรัศมีของ wifi ที่ไม่ไกลมากนัก ระยะใช้งานได้อยู่ที่ประมาณ 50-70 เมตร ซึ่งก็จะสามารถใช้จำกัดพื้นที่ ว่าผู้ที่จะใช้งานระบบลงทะเบียนจะต้องอยู่ในพื้นที่รัศมีของสัญญาณ wifi ที่กำหนด ซึ่งก็จะเป็นการแก้ปัญหาการตรวจสอบตำแหน่งได้แบบหนึ่ง ในวิธีแบบนี้จำเป็นต้องใช้ hardware เข้ามาช่วย (ถ้าไม่ใช้ harware ก็ต้องใช้การเขียน software แบบวิธีแรก) ซึ่ง hardware นี้เราสามารถใช้อุปกรณ์เช่น raspberry pi มาทำได้ด้วยต้นทุนประมาณ สองพันบาทนิดนิดก็สามารถทำได้แล้ว หรือถ้าเป็นระบบที่ไม่ต้องการความยืดหยุ่นมาก เป็นระบบที่จำเพาะเจาะจงก็สามารถใช้อุปกรณ์ micro controller อื่นมาใช้งานก็ได้เหมือนกันเช่น บอร์ด ESP32, ESP8266 เป็นต้น แต่อาจจะมีความยุ่งยากมากกว่าเพราะระบบนี้ต้องการการเชื่อมต่อกับเครือข่ายอินเทอร์เน็ตด้วย

ระบบนี้ทำงานอย่างไร

ให้เรากำหนดชื่อสำหรับการเชื่อมต่อ wifi (SSID) เพื่อแจ้งให้ผู้ใช้งานทราบว่าจะต้องเชื่อมต่อกับ wifi ไหน เช่น Register-Wifi เป็นต้น

สำหรับตัวระบบ เราสามารถใช้หลักการดักจับได้หลายแบบ เช่น การใช้หลักการของ captive portal หรือ DNS อย่างใดอย่างหนึ่งหรือทั้งสองก็ได้ ในกรณีที่ใช้ DNS เราสามารถระบุชื่อ Host หรือ domain ที่เราตั้งขึ้นมาเอง และแจ้งผู้ใช้ทราบว่าจะต้องเข้า url อะไรในการลงทะเบียน เช่น http://register.event เป็นต้น

เมื่อผู้ใช้ระบุ url ดังกล่าวใน browser ระบบก็จะ redirect ไปยัง web server ที่สร้างขึ้นไว้ในตัวระบบเองหรือไปยัง web server ตัวอื่นก็ได้ โดยที่ web server ดังกล่าว ก็จะทำหน้าสำหรับกรอกข้อมูลหรือใส่เงื่อนไขต่าง ๆ ตามที่เราต้องการได้ เช่น การกำหนดเวลาให้ลงทะเบียนได้เฉพาะช่วงเวลาใดเวลาหนึ่ง เป็นต้น ทั้งนี้ระบบที่อยู่ที่ web server ก็สามารถเขียนโปรแกรมเพื่อทำงานตามเงื่อนไขการใช้งานได้อย่างอิสระด้วยภาษาคอมพิวเตอร์ หรือ ไม่ว่าจะเป็นการเชื่อมต่อกับระบบฐานข้อมูล หรือเชื่อมกับระบบงานอื่นที่จำเป็น อาจจะมีประเด็นเพิ่มเติมว่าถ้าผู้ใช้งานทราบ url สุดท้ายหลังจากที่ มีการ redirect จากระบบลงทะเบียนไปแล้ว เช่น ถ้าเราใช้ google form ในการเก็บข้อมูล ผู้ใช้จะเห็น url ของ form ดังกล่าว และสามารถผ่านเข้าไปใช้งานได้โดยตรงโดยไม่ผ่านระบบลงทะเบียนนั้น การแก้ไขก็สามารถทำได้ด้วยการทำระบบกรอกข้อมูลขึ้นเองและทำอยู่ภายในระบบ Register นี้หรือทำบนระบบ Server ที่จะต้องต้องอาศัยการทำ VPN เข้าไปเท่านั้น โดยกำหนดให้มีการทำ VPN ระหว่าง ระบบ register นี้กับ Server ก็จะสามารถป้องกันไม่ใช้ผู้ใช้งานเข้าถึงระบบกรอกข้อมูลได้โดยตรง

ดูตัวอย่างแผนภาพการทำงาน

register_system

ตัวอย่างการเขียน code ด้วย php เพื่อตรวจสอบช่วงเวลาและส่งค่า url ตามที่กำหนด

<?php
$local_time = date(‘YmdHis’);
$start_morning_time = ‘20170520080000’;
$end_morning_time = ‘20170520081500’;
$start_afternoon_time = ‘20170520130000’;
$end_afternoon_time = ‘20170520131500’;

if ($local_time >= $start_morning_time && $local_time <= end_morning_time) {
header(“Location: https://goo.gl/forms/OWD7oeb8Uh7oYa9m2&#8221;);
}
else if ($local_time >= $start_afternoon_time && $local_time <= end_afternoon_time) {
header(“Location: https://goo.gl/forms/D9eTTUpHIXbTGpKp1&#8221;);
}
else {
header(“Location: https://catevent.dyndns.info/event/seminar-finance2017&#8221;);
}
?>

ตัวอย่างของการใช้ nginx และให้มีการ redirect ไปยัง url ที่กำหนด

# Default server configuration
#
server {
listen 80 default_server;
listen [::]:80 default_server;

server_name register;
rewrite ^/$ http://register.event/index.php redirect;

.

.

}

ตัวอย่างการใช้ dnsmasq ในการกำหนดชื่อ dns หรือ host ที่ให้ผู้ใช้ระบุเพื่อเข้าระบบลงทะเบียนโดยมีการส่งต่อไปยังเครื่องที่กำหนด (เช่น web server) – /etc/dnsmasq.conf

interface=eth0 # Use interface eth0 wlan0
listen-address=172.24.1.1 # Explicitly specify the address to listen on
bind-interfaces # Bind to the interface to make sure we aren’t sending things elsewhere
server=8.8.8.8 # Forward DNS requests to Google DNS
domain-needed # Don’t forward short names
bogus-priv # Never forward addresses in the non-routed address spaces.
dhcp-range=172.24.1.10,172.24.1.250,1h # Assign IP addresses between 172.24.1.10 and 172.24.1.250 with a 12 hour lease time

address=/register.event/www.finance.register/finance.register/register/172.24.1.1

 

 

Advertisements

ใส่ความเห็น

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / เปลี่ยนแปลง )

Twitter picture

You are commenting using your Twitter account. Log Out / เปลี่ยนแปลง )

Facebook photo

You are commenting using your Facebook account. Log Out / เปลี่ยนแปลง )

Google+ photo

You are commenting using your Google+ account. Log Out / เปลี่ยนแปลง )

Connecting to %s