◆劉子杰
商場(chǎng)環(huán)境下WiFi認(rèn)證服務(wù)器設(shè)計(jì)與實(shí)現(xiàn)
◆劉子杰
(四川大學(xué) 錦江學(xué)院 四川 620860)
針對(duì)當(dāng)前商場(chǎng)環(huán)境下無(wú)法有效積累客戶群體的問題,本文基于ThinkPHP框架、Mysql數(shù)據(jù)庫(kù)、微信公眾號(hào)等技術(shù)設(shè)計(jì)并實(shí)現(xiàn)了一套商場(chǎng)環(huán)境下WiFi認(rèn)證系統(tǒng)。著重論述了用戶從微信認(rèn)證,到正常上網(wǎng),最終實(shí)現(xiàn)數(shù)據(jù)推送的整個(gè)過程。本系統(tǒng)具有功能完善、數(shù)據(jù)安全、操作便捷等優(yōu)勢(shì)。通過本次設(shè)計(jì),商家可有效地積累微信粉絲用戶,定期向粉絲群進(jìn)行商鋪活動(dòng)的消息推送,使顧客可以在第一時(shí)間內(nèi)了解商場(chǎng)內(nèi)各商鋪的最新活動(dòng)信息,有效地維護(hù)商場(chǎng)的客戶群,提高用戶購(gòu)買力。
WiFi認(rèn)證;微信公眾平臺(tái);ThinkPHP;Mysql
WiFi是基于ieee802.11標(biāo)準(zhǔn)的無(wú)線局域網(wǎng)[1],它在網(wǎng)絡(luò)上具有覆蓋面廣、高速率、低功耗等技術(shù)優(yōu)勢(shì)。伴隨著網(wǎng)絡(luò)的普及,WiFi無(wú)論是在核心技術(shù)還是影響范圍方面,都進(jìn)入飛速發(fā)展的時(shí)代。在各類公共場(chǎng)所,如商場(chǎng)、車站,WiFi的部署為人們的生活都帶來(lái)了極大的便利。
WiFi的普及為其商業(yè)化帶來(lái)了極大的機(jī)遇,國(guó)內(nèi)眾多城市提出“無(wú)線城市”的發(fā)展戰(zhàn)略。與此同時(shí),越來(lái)越多的企業(yè)逐漸意識(shí)到商業(yè)WiFi的重要性。商業(yè)WiFi是指由商業(yè)運(yùn)營(yíng)商為企業(yè)用戶提供包括軟件、硬件、管理、維護(hù)等全方位解決方案。如何將流動(dòng)顧客轉(zhuǎn)化為具有購(gòu)買力的客戶,這一問題受到越來(lái)越多商家的重視。針對(duì)當(dāng)前合理的需求,本次設(shè)計(jì)并實(shí)現(xiàn)了一套商城環(huán)境下WiFi認(rèn)證系統(tǒng),通過微信認(rèn)證的方式,幫助商家積累粉絲群體,通過微信公眾號(hào)向粉絲群進(jìn)行消息推送,使顧客在第一時(shí)間了解商場(chǎng)內(nèi)各商鋪的最新活動(dòng)信息,有效地維護(hù)商場(chǎng)的客戶群,提高用戶購(gòu)買力。
針對(duì)商場(chǎng)環(huán)境下有使用免費(fèi)WiFi需求的顧客,提供開放WiFi供其免費(fèi)上網(wǎng),通過微信認(rèn)證,強(qiáng)制顧客關(guān)注商場(chǎng)微信公眾號(hào)后免費(fèi)上網(wǎng)。對(duì)于已認(rèn)證的顧客,管理員在后臺(tái)查看每個(gè)用戶的上網(wǎng)統(tǒng)計(jì)情況,包括上網(wǎng)時(shí)長(zhǎng)、使用流量、訪問歷史記錄等信息。針對(duì)已關(guān)注公眾號(hào)的顧客,管理員可通過公眾號(hào)每日向粉絲用戶進(jìn)行商場(chǎng)各店鋪?zhàn)钚禄顒?dòng)的推送,提升用戶消費(fèi)力度。
WiFi認(rèn)證系統(tǒng)由WiFi認(rèn)證路由器和WiFi認(rèn)證服務(wù)器兩部分組成。本文主要闡述WiFi認(rèn)證服務(wù)器設(shè)計(jì)與實(shí)現(xiàn),WiFi認(rèn)證路由器作為配合使用。
WiFi認(rèn)證路由器基于OpenWrt操作系統(tǒng)運(yùn)行,基于WiFidog協(xié)議實(shí)現(xiàn),OpenWrt系統(tǒng)對(duì)WiFiDog協(xié)議具有良好的支持。
WiFi認(rèn)證服務(wù)器基于LNMP架構(gòu)設(shè)計(jì),基于ThinkPHP框架開發(fā)。LNMP即Linux+Nginx + MySQL + PHP,LNMP是Linux系統(tǒng)中開發(fā)網(wǎng)站的經(jīng)典組合[2],對(duì)于不熟悉環(huán)境部署的開發(fā)人員來(lái)說(shuō),可以通過一鍵安裝的方式快速部署服務(wù)。
2.3.1 Openwrt系統(tǒng)
OpenWrt是開源的Linux操作系統(tǒng)。國(guó)內(nèi)的OpenWrt版本包括DreamBox、PandoraBox等。OpenWrt支持ARM,X86等多種處理器,并且含有數(shù)千種軟件包。開發(fā)者通過Make命令即可實(shí)現(xiàn)編譯屬于自己的固件,固件格式為.bin文件。
2.3.2 WiFiDog協(xié)議
WiFiDog是一個(gè)強(qiáng)制門戶熱點(diǎn)管理系統(tǒng),主要用于實(shí)現(xiàn)WiFi認(rèn)證功能,由網(wǎng)關(guān)和認(rèn)證服務(wù)器兩部分組成。OpenWrt系統(tǒng)對(duì)WiFiDog具有良好的支持。在路由器端基于C語(yǔ)言實(shí)現(xiàn)認(rèn)證邏輯,在服務(wù)端基于PHP語(yǔ)言完成認(rèn)證的交互操作。
2.3.3 ThinkPHP框架
ThinkPHP是一個(gè)輕量級(jí)PHP開發(fā)框架,采用MVC模式和面向?qū)ο蟮慕Y(jié)構(gòu),具有豐富的查詢機(jī)制,以及簡(jiǎn)單的CURD操作。支持MySQL等多種數(shù)據(jù)庫(kù)。包含了底層架構(gòu)、數(shù)據(jù)庫(kù)訪問層、模板引擎、緩存機(jī)制、角色認(rèn)證、表單處理等組件。
2.3.4 Nginx服務(wù)器
Nginx是一款開源的、高性能的反向代理服務(wù)器。Windows平臺(tái)下的傳統(tǒng)Web服務(wù)器包括:Apache、IIS;Linux下的常用Web服務(wù)器包含Apache、Nginx等。但是隨著Nginx的不斷發(fā)展,它可自動(dòng)選擇高效的epoll,event作為網(wǎng)絡(luò)I/O模型,支持高達(dá)上萬(wàn)的并發(fā)連接數(shù),快速地解析靜態(tài)文件,而內(nèi)存以及CPU在穩(wěn)定運(yùn)行的狀態(tài)下,僅消耗較少的系統(tǒng)資源,因此被國(guó)內(nèi)外大多數(shù)互聯(lián)網(wǎng)公司采用,如國(guó)內(nèi)的新浪、搜狐、網(wǎng)易等。從一定程度上來(lái)講,Nginx在未來(lái)大有取代Apache的趨勢(shì)。
2.3.5微信公眾平臺(tái)
微信公眾平臺(tái)是騰訊于面向企業(yè)、媒體等用戶推出的訂閱服務(wù)。在此平臺(tái)下,開發(fā)人員可接入個(gè)人的服務(wù)器URL以及Token令牌,開發(fā)屬于自己的微信公眾號(hào),可通過微信公眾平臺(tái)申請(qǐng)訂閱號(hào)、企業(yè)號(hào)及服務(wù)號(hào),還可通過調(diào)用接口實(shí)現(xiàn)自定義菜單,群發(fā)消息、主動(dòng)推送、被動(dòng)回復(fù)等。
本節(jié)將詳細(xì)介紹WiFi認(rèn)證服務(wù)器各模塊實(shí)現(xiàn)過程,包括WiFi認(rèn)證API設(shè)計(jì)(對(duì)接路由端)、WiFi認(rèn)證管理平臺(tái)、微信公眾號(hào)、數(shù)據(jù)庫(kù)設(shè)計(jì)。
管理平臺(tái)前端由開源框架BootStrap實(shí)現(xiàn),后端基于ThinkPHP框架實(shí)現(xiàn)業(yè)務(wù)邏輯。管理平臺(tái)包含管理員和商家兩種權(quán)限。
管理員權(quán)限主要針對(duì)平臺(tái)內(nèi)商家進(jìn)行統(tǒng)一管理,主要操作模塊包括:商家管理模塊、路由器管理模塊、活動(dòng)管理模塊、認(rèn)證模板管理模塊、公告管理模塊。
管理員在登錄頁(yè)面輸入個(gè)人的賬號(hào)密碼后,前臺(tái)Jquery程序請(qǐng)求后端Login接口,進(jìn)行數(shù)據(jù)校驗(yàn),在數(shù)據(jù)無(wú)效的情況下提示賬號(hào)密碼錯(cuò)誤,有效則存Session,便于后期對(duì)商家操作行為進(jìn)行統(tǒng)一跟蹤。
活動(dòng)模塊主要用于管理員對(duì)所有商家上傳的每日活動(dòng)進(jìn)行統(tǒng)計(jì),并且通過公眾號(hào)進(jìn)行推送。管理員在篩選具體日期后,即可查看當(dāng)日所有店鋪上傳的活動(dòng)信息,進(jìn)行統(tǒng)計(jì)后,進(jìn)入微信公眾平臺(tái),將當(dāng)日所有店鋪的活動(dòng)內(nèi)容信息復(fù)制到微信公眾號(hào)群發(fā)功能的對(duì)應(yīng)位置,選擇群發(fā)功能,即可將所有活動(dòng)信息推送給微信粉絲用戶。
路由器按管理模塊主要實(shí)現(xiàn)對(duì)路由器的使用情況及在線用戶數(shù)量進(jìn)行統(tǒng)計(jì)和管理,此模塊顯示當(dāng)前在線用戶數(shù)量,路由器的負(fù)載狀況、啟動(dòng)時(shí)間、WiFiDog啟動(dòng)時(shí)間等信息,統(tǒng)計(jì)數(shù)據(jù)通過圖表的方式進(jìn)行展示。
商家權(quán)限主要通過平臺(tái)發(fā)布店鋪?zhàn)钚禄顒?dòng),如周年慶活動(dòng),開業(yè)酬賓活動(dòng)等,由管理員進(jìn)行統(tǒng)計(jì)后通過微信公眾號(hào)推送給用戶粉絲。
WiFi認(rèn)證服務(wù)端API主要包含login、Auth、Portal、Ping幾個(gè)模塊。
(1)login登錄模塊
Login模塊主要接收路由器網(wǎng)關(guān)上傳的Http請(qǐng)求,以及向未認(rèn)證用戶展示登錄頁(yè),協(xié)助用戶實(shí)現(xiàn)認(rèn)證功能。在用戶輸入憑證的前提下,在后臺(tái)驗(yàn)證用戶憑證的有效性,在憑證有效的情況下,返回auth以及加密的Token至網(wǎng)關(guān)。
(2)Aurh驗(yàn)證模塊
Auth模塊主要實(shí)現(xiàn)服務(wù)器對(duì)網(wǎng)關(guān)上傳Token的驗(yàn)證操作,此模塊不會(huì)返回頁(yè)面給用戶。
(3)Portal放行模塊
網(wǎng)關(guān)在得到Auth:1的標(biāo)識(shí)后,對(duì)用戶進(jìn)行放行操作,用戶被重定向到Portal模塊。此模塊返回一個(gè)Portal頁(yè)面給用戶,表示用戶認(rèn)證成功,用戶在Portal頁(yè)面停留幾秒后,自動(dòng)跳轉(zhuǎn)到百度首頁(yè),此時(shí)用戶即可正常上網(wǎng)。
(4)Ping心跳模塊
Ping模塊主要實(shí)現(xiàn)WiFiDog心跳數(shù)據(jù)的接收,WiFiDog服務(wù)在啟動(dòng)后,每分鐘向認(rèn)證服務(wù)器的ping模塊發(fā)送一條心跳信息。
本次設(shè)計(jì)采用的數(shù)據(jù)庫(kù)為MySQL.它是目前主流的數(shù)據(jù)庫(kù)管理系統(tǒng)之一[3],憑借其強(qiáng)大的功能,較快的響應(yīng)速度和開放源代碼等特點(diǎn),得到廣泛的應(yīng)用。
3.3.1商家管理平臺(tái)數(shù)據(jù)表設(shè)計(jì)
(1)staff_info
該表存儲(chǔ)登錄管理平臺(tái)用戶的賬戶密碼等數(shù)據(jù)。
(2)busin_info
該表存儲(chǔ)商鋪的名稱,聯(lián)系電話,所在樓層及位置,類型,詳細(xì)描述等。
(3)busin_active
該表存儲(chǔ)各商鋪在平臺(tái)發(fā)布的商鋪活動(dòng)信息。
3.3.2認(rèn)證API數(shù)據(jù)表設(shè)計(jì)
(1)api_login
此表用于接收認(rèn)證API中Login模塊寫入的數(shù)據(jù),包含用戶設(shè)備的mac,ip地址等。
(2)api_auth
此表用于接收認(rèn)證API中Auth模塊寫入的數(shù)據(jù),即網(wǎng)關(guān)向認(rèn)證服務(wù)器驗(yàn)證Token的有效性。
(3)api_portal
此表用于接收認(rèn)證API中Portal模塊寫入的數(shù)據(jù),即用戶在通過驗(yàn)證后,重定向到的Portal頁(yè)面。
(4)api_status
此表用于接收認(rèn)證API中Ping模塊寫入的數(shù)據(jù),即網(wǎng)關(guān)定時(shí)向認(rèn)證服務(wù)器匯報(bào)路由器的狀態(tài)信息。
首先在微信公眾平臺(tái)進(jìn)行注冊(cè),綁定服務(wù)器入口地址及token令牌,用戶通過微信認(rèn)證的方式,在關(guān)注公眾號(hào)后讓其免費(fèi)使用無(wú)線WiFi,便于后期進(jìn)行活動(dòng)推送。
3.4.1關(guān)注/取消關(guān)注事件
用戶在觸發(fā)該事件的同時(shí),官方服務(wù)器將此消息推送到開發(fā)者的URL中。如Event=Subscribe表示用戶關(guān)注,Event=UnSubscribe表示用戶取消關(guān)注。
3.4.2被動(dòng)回復(fù)事件
用戶向公眾號(hào)主動(dòng)發(fā)送消息后,公眾號(hào)根據(jù)用戶發(fā)送的消息內(nèi)容進(jìn)行被動(dòng)回復(fù)。
3.4.3主動(dòng)推送事件
對(duì)于普通訂閱號(hào),每天只能群發(fā)一條信息給粉絲用戶。管理員對(duì)管理平臺(tái)內(nèi)商家上傳的店鋪?zhàn)钚禄顒?dòng)信息進(jìn)行統(tǒng)計(jì),將其添加到素材,并配好對(duì)應(yīng)的圖片,點(diǎn)擊群發(fā)按鈕,即可將素材信息發(fā)送給已關(guān)注公眾號(hào)的所有用戶粉絲。
用戶連接公共WiFi,即可彈出認(rèn)證頁(yè)面,選擇微信認(rèn)證的方式,即可彈出商場(chǎng)官方二維碼,如圖1所示。
圖1 微信認(rèn)證
用戶認(rèn)證成功后,將自動(dòng)被重定向至百度首頁(yè),用戶即可正常上網(wǎng),用戶WiFi認(rèn)證測(cè)試功能通過。
管理員/商家首先登錄商家管理平臺(tái),登錄頁(yè)面如圖2所示。
圖2 商家管理平臺(tái)登錄頁(yè)
管理員發(fā)布商場(chǎng)活動(dòng)功能如圖3所示。
圖3 管理員發(fā)布活動(dòng)
管理員可通過微信公眾號(hào)每日推送商場(chǎng)最新活動(dòng)信息,如圖4所示。
圖4 商場(chǎng)活動(dòng)推送
本文提出了一種針對(duì)商場(chǎng)環(huán)境下如何積累有效客戶群的解決方案,詳細(xì)闡述了通過ThinkPHP框架及微信公眾號(hào),Mysql數(shù)據(jù)庫(kù)等技術(shù),實(shí)現(xiàn)用戶從微信認(rèn)證到免費(fèi)WiFi使用,最終通過公眾號(hào)獲取各店鋪?zhàn)钚禄顒?dòng)的整個(gè)流程,今后將對(duì)系統(tǒng)的功能進(jìn)一步優(yōu)化與擴(kuò)展.
[1]張曉.基于網(wǎng)絡(luò)安全的WiFi系統(tǒng)身份認(rèn)證設(shè)計(jì)研究[J].電子設(shè)計(jì)工程,2019,27(12):80-83+88.
[2]肖劍偉.基于LNMP平臺(tái)Moodle課程學(xué)習(xí)管理系統(tǒng)部署[J].信息與電腦(理論版),2019(08):72-75.
[3]劉恒祥.基于PHP&MySQL的高校招生管理信息系統(tǒng)的開發(fā)與設(shè)計(jì)[J].自動(dòng)化技術(shù)與應(yīng)用,2021,40(03):176-179.
網(wǎng)絡(luò)安全技術(shù)與應(yīng)用2021年11期