文/安一飛 陳峰 鄭企森 徐鑫
隨著互聯(lián)網(wǎng)時(shí)代的到來(lái),移動(dòng)端APP的發(fā)展十分迅猛,校園服務(wù)類APP也是不計(jì)其數(shù)。但大多功能單一,只能滿足學(xué)生們的部分需求,無(wú)法實(shí)現(xiàn)真正的一站式服務(wù),導(dǎo)致學(xué)生往往需要安裝大量的手機(jī)軟件,頻繁的進(jìn)行注冊(cè)、登錄,非常不方便,同時(shí)也容易造成手機(jī)內(nèi)存不足、個(gè)人信息泄露等問(wèn)題。
為了給廣大學(xué)生的學(xué)習(xí)生活帶來(lái)便利,保護(hù)其個(gè)人信息安全,項(xiàng)目組成員進(jìn)行了深入的調(diào)研,發(fā)現(xiàn)了微信小程序具有方便快捷、即用即走、安全穩(wěn)定、不占內(nèi)存等特點(diǎn),同時(shí)其內(nèi)置于微信也更加容易被用戶接受,適合在高校進(jìn)行推廣。因此,項(xiàng)目組決定開發(fā)一款以微信小程序?yàn)檩d體的校園一體化服務(wù)平臺(tái)——理工百事,為學(xué)生帶來(lái)真正的一站式服務(wù)體驗(yàn),告別數(shù)量繁多的APP。
理工百事小程序整合了學(xué)生的日常需求,設(shè)計(jì)了教務(wù)管理、校園服務(wù)、在線學(xué)習(xí)、樂(lè)在榮成、畢業(yè)招聘五大模塊,基本覆蓋高校學(xué)生日常所需要的功能,同時(shí)由專業(yè)的美工人員進(jìn)行UI界面設(shè)計(jì),實(shí)現(xiàn)了良好的交互,給學(xué)生們帶來(lái)較好的用戶體驗(yàn)。
該模塊實(shí)現(xiàn)了與高校教務(wù)的無(wú)縫對(duì)接,課表、成績(jī)、考試地點(diǎn)自動(dòng)導(dǎo)入,用戶一次登錄即可永久使用,節(jié)省每次登錄教務(wù)系統(tǒng)的時(shí)間,且操作簡(jiǎn)單、頁(yè)面交互良好,讓用戶能夠在最短的時(shí)間內(nèi)獲取最需要的信息。
該模塊中包括二手市場(chǎng)、電腦維修、打印、校內(nèi)新聞四大功能,用戶可以在二手市場(chǎng)中發(fā)布出售、求購(gòu)信息,讓在校生出售、購(gòu)買二手物品有了一個(gè)完善平臺(tái);電腦維修功能與線下?lián)碛芯S修技術(shù)的學(xué)生合作,在線上進(jìn)行宣傳,實(shí)現(xiàn)學(xué)生服務(wù)學(xué)生,給用戶帶來(lái)更多的實(shí)惠;打印功能實(shí)現(xiàn)了打印資料送貨上門,讓用戶足不出戶即可享受打印服務(wù);校內(nèi)新聞功能每天更新校園熱點(diǎn)動(dòng)態(tài),讓用戶隨時(shí)隨地了解校園新鮮事。
該模塊整合了各種考試復(fù)習(xí)題,分為學(xué)習(xí)模式和測(cè)試模式,學(xué)習(xí)模式下系統(tǒng)顯示問(wèn)題及答案讓用戶進(jìn)行學(xué)習(xí),測(cè)試模式下用戶在線進(jìn)行答題,提交后系統(tǒng)進(jìn)行批閱并顯示得分。該模塊旨在讓用戶不必四處尋找題庫(kù),點(diǎn)開小程序即可進(jìn)行學(xué)習(xí),不斷提高自身能力。
該模塊與榮成本地的商家企業(yè)進(jìn)行合作,在線上為其進(jìn)行宣傳,為學(xué)生提供了一個(gè)了解外界的窗口,讓用戶通過(guò)樂(lè)在榮成模塊更加了解榮成,同時(shí)在日常外出游玩時(shí)能夠擁有更多更好的選擇。
該模塊在每年春招、秋招時(shí)整合發(fā)布校園招聘信息,讓面臨就業(yè)的學(xué)生掌握就業(yè)先機(jī),讓仍在努力的學(xué)生了解行業(yè)需求,有目標(biāo)的學(xué)習(xí),增加核心競(jìng)爭(zhēng)力。
首先,項(xiàng)目組在微信公眾平臺(tái)注冊(cè)獲取了微信小程序的APPID以及購(gòu)買了阿里云服務(wù)器,然后下載微信Web開發(fā)者工具,打開后使用微信掃碼登錄,創(chuàng)建項(xiàng)目并填寫自己的APPID。在這款工具中,采用了類似MVC模式的開發(fā),邏輯分明。
技術(shù)開發(fā)要點(diǎn)如下:
(1)前端主要采用JavaScript、HTML、CSS進(jìn)行開發(fā),使用了小程序所提供的API,使代碼變得更加簡(jiǎn)潔,同時(shí)小程序自身也有著非常清晰的目錄結(jié)構(gòu),分為四種文件類型:①wxml文件用于存放小程序的頁(yè)面結(jié)構(gòu)。②wxss用于存放頁(yè)面樣式表。③json用于存放頁(yè)面配置。④js文件用存放頁(yè)面邏輯。
(2)后端采用了目前主流的PHP7進(jìn)行開發(fā),在速度上相比于老版本有了很大提升,數(shù)據(jù)庫(kù)采用了免費(fèi)開源的MySQL,既能夠滿足項(xiàng)目需求又能夠壓縮開發(fā)成本。
(3)通過(guò)模擬登陸實(shí)現(xiàn)課表、成績(jī)、考試地點(diǎn)的查詢。使用時(shí)只需要傳入相關(guān)參數(shù),請(qǐng)求我們自己定義的相關(guān)接口,便可以得到相關(guān)的返回值,由于這些操作全部由服務(wù)器完成,并不涉及前端的處理,因此能夠?yàn)橐院蟮拇a移植帶來(lái)很大的方便。
(4)采用綁定的方式實(shí)現(xiàn)一次登錄,永久使用。將用戶的Openid(騰訊提供的唯一確定用戶身份的標(biāo)識(shí))與學(xué)號(hào)綁定,這樣,每次用戶打開軟件時(shí),只需去數(shù)據(jù)庫(kù)查詢此用戶的Openid對(duì)應(yīng)的學(xué)號(hào)便可知道具體是哪個(gè)用戶。
(5)采用Sign簽名防止黑客利用Url構(gòu)造一些無(wú)用或者有風(fēng)險(xiǎn)的請(qǐng)求,保證服務(wù)器的安全性。首先將所有需要傳入的參數(shù)先按字典序排序,并將其拼接起來(lái)然后加入一串前端與后臺(tái)相約定的字符串拼接而成之后取其Hash值,當(dāng)后臺(tái)服務(wù)器接到任何一個(gè)請(qǐng)求時(shí),并不直接與服務(wù)器進(jìn)行交互,而是先利用同樣的規(guī)則檢測(cè)傳入的Sign值是否是合法的,這樣可以避免一些大量垃圾請(qǐng)求過(guò)多的占用數(shù)據(jù)庫(kù),從而確保服務(wù)器的安全。
(6)為防止SQL注入,傳入的數(shù)據(jù)并不會(huì)直接進(jìn)行SQL語(yǔ)句的拼接,而是先將其中的特殊字符進(jìn)行處理、同時(shí)將參數(shù)中的關(guān)鍵字進(jìn)行過(guò)濾如“select”、“update”、“or”、“and”、“--”,等。使其在SQL語(yǔ)句中不再具有威脅性,同時(shí)還采用了預(yù)編譯的SQL語(yǔ)句,進(jìn)一步提升安全性。
本文根據(jù)實(shí)際需求以微信小程序?yàn)檩d體,設(shè)計(jì)開發(fā)了一款校園一體化服務(wù)平臺(tái),實(shí)現(xiàn)了真正的一站式服務(wù),給學(xué)生們的日常學(xué)習(xí)生活帶來(lái)了更大的方便,但是在處理高并發(fā)訪問(wèn)時(shí)仍存在一些不足,這也是本研究下一步將重點(diǎn)解決的問(wèn)題。