郭琳
(沈阳职工大学,辽宁沈阳110021)
基于二维码技术的访客系统的设计与实现
郭琳
(沈阳职工大学,辽宁沈阳110021)
由于经常性的有短期培训任务、与同级和上级部门的业务往来也非常多,且往来人员和车辆基数大、流动性大,这给访客登记和对外开放的停车场管理带来了不小的压力。传统管理办法虽然可以有效区分内部往来人员和社会人员,但是手续繁琐、办理周期长,总是会出现内部往来车辆滞留或被收费的情况。而运用二维码生成和识别技术可以有效地解决这一问题。该文详细地介绍了访客基础数据生成、访客车辆自主登记、访客身份和车辆信息快速识别的设计过程与核心技术。
QR code;php;mySQL server;Ajax;html5
内部往来人员和车辆基数大、流动性大的情况下,传统访客登记办法虽然可以有效区分内部往来人员和社会人员,但是效率不高,管理成本高,如遇特殊情况还会造成人员和车辆滞留的情况。先利用已有的访客数据和访客自主登记的车辆信息生成二维码,再利用二维码可以快速识别的特点,可以解决内部访客登记的问题,有效降低管理成本。
1.1 传统访客登记流程分析
以人员和车辆基数最大、流动性最大的短期培训为例,传统访客登记流程如图1所示。
传统访客登记流程在施行中出现的4个问题如下:
1)在过程[1]、[2]处由于学员手写车号笔迹不清容易出现国号登记信息错误;
2)在过程[3]、[4]、[5]处可能会出现不能及时签上字或有其他突发情况处理造成报送超时而违反车辆报送制度;
3)在过程[6]、[7]、[8]中学员及车辆产生滞留;
4)停车收费处人员在纸制报车单中检索和验证学员及车辆信息效率低下。
由此可见,传统访客流程效率低、容易产生错误、管理成本高。
1.2 优化后的访客流程
针对1.1中出现的4个问题优化方法如下:1)将学员手写车号改为用手写自助录入车号
学员只需通过输入手机号码和车牌号码即完成自助车辆登记,解决了手写字迹不易识别产生错误的问题。
2)去掉部门领导和保卫处签字环节
因为学校在学员入校培训前都会接到调训部门发送过来的电子学员名单,包括的学员信息有:姓名、性别、所在单位、联系方式。所以完全可以利用这个电子学员名单生成用于验证内部访客的基础数据,这个数据是权威准确的,依据该数据进行验证就省去了校领导再次验证的过程。
3)停车收费处人员扫码(二维码)验证放行
学员自助登记车辆信息时会自动生成一个二维码,停车收费处人员只需扫码就可验证学员及车辆信息,解决了人工对单低效的问题。由于提升了验证准确度和验证效率,学员只需在离校前自助生成二维码就可以了,无需班主任人工录入报车单、找部门领导和保卫处签字及往返教学楼和停车收费处间送报车单、补报车单的过程,大大节省了学校的管理成本,可以让班主任从繁复的报车工作中解放出来。
图1 传统访客登记流程
优化后的访客登记流程如图2所示。
图2 优化后的访客登记流程
访客数据表包含字段如表1所示。
表1 访客表
3.1 EXCEL导入模板设计
导入模板设计力求简洁,只有三个表头姓名、性别和电话,班主任只需将上级部门下发的学员名单中的姓名、性别和电话粘贴到模板中的对应位置就可以了。
3.2 导入界面设计
由于访客表中设计的来访日期和来访天数字段对于同一类型的培训班来说是重复内容字段,所以并未设计到excel导入模板中,可以通过导入界面设计来补充实现。导入界面设计如图3所示。
其中选择来访天数的控件来自于html5的新input style,使用方法如下:
3.3 导入代码设计
图3 访客信息导入界面
4.1 二维码的生成
使用PHP二维码生成类库phpqrcode可以方便地生成二维码,并可以将logo置于二码中央,为了提高识别率此处将二维码容错级别设置为“M”级别。由类库生成二维码的具体方法如下:
以上程序中的二维码内容来自由车辆自助登记页面传递过来的URL变量,URL变量内容包括由访客登记手机号码查询到的访客姓名、性别、来访类别和新登记的车牌号码。
由于在设计访客表时考虑到访问的时效性,设计了来访日期和来访天数两个字段,所以在传递URL变量前,还要在访客自助登记提交时获取登记时间并与访问截止时间进行比较,如果来访者处于访问有效期内则会生成二维码,否则不生成并给出提示。生成二维码后的效果如图4所示。
为达到免刷新页面并及时提示验证结果的目的,访客系统使用了Ajax技术,在来访者输入手机号后点击车牌号码时,就会对其录入的号码进行验证,如果验证失败就会给出如图5所示的反馈,从而提高了系统的验证效率和界面友好性。
图4 车辆自助登记界面生成二维码效果图
图5 车辆自助登记界面验证失败提示效果图
图6 二维码识别过程示意图
4.2 二维码的识别
来访者通过手机端生成二维码后,需将手机屏幕向下放置在停车收费处的二维码识别台上,访客系统会通过二维码识别台下方的摄像头记录下来访者手机上的二维码图片通过USB接口传送到PC端,PC端识别生成来访者信息并显示,供停车收费处人员与收费系统中车牌号码进行比对。示意图如图6所示。
使用QrReader类库可以方便地识别二维码,且具有很高的识别率。但对开发者使用的php环境有要求,需是5.3及以上版本,否则会报错无法正常运行。具体方法如下:
而二维码的识别实际上却不是这么简单,用摄像头拍摄下来的图片往往不符合QrReader的识别要求,虽然采用设计合理的二维码识别台可以拍摄出较为清晰的图片,但起码还要经过图片大小压缩等处理步骤才能被QrReader所识别。
因为访客个人信息需要保护,所以对二维码内容进行加密是必不可少的环节。
php常见的加密算法有MD5加密、Crype加密、Sha1加密、URL加密、Base64信息编码加密、phpass加密等。
由于最终显示访客信息时则需要对加密的二维码再进行解密。所以,加密算法的选择必须是可逆的。通过比较,最适合的方法可选URL加密或phpass加密。以URL加密为例,基于RFC 3986的加密和解密算法示例如下:
将加密后的字符串生成二维码就实现了二维码的加密过程;将识别出的二维码内容(加密后的字符串)进行解密就实现了二维码的解密过程。加密后的二维码如图7所示。
图7 加密后的二维码
根据停车收费处的要求,需每日的访客车辆汇总表备案。这就需要访客系统提供访客数据导出功能。
6.1 导出界面设计
图8 访客信息导出界面
其中来访日期的选择控件来自于html5的新input style。使用方法如下:
6.2 导出代码设计
综上所述,使用二维码技术实现访客快速识别,相较传统培训登记是一种更为简便的方法。该访客系统基于B/S模式,将数据库和功能页面存储在云端,通过链接的方式与微信公众号相关菜单项相连,访客无需安装就可方便使用,班主任和车辆收费处人员只需访问既定网址就可实现访客相关信息的导入、导出。二维码识别过程由于设计了二维码识别台,有效保证了拍摄的清晰度,为后续二维码图片的再处理和识别打下了基础。而二维码识别台的设计及较完备的加密解密算法,使得相较于购置专门的二维码扫描设备和软件,使用成本大大降低。另外,基于bootstrap的页面设计,保证了在手机端和PC端都具有良好的显示效果。系统所有功能均已测试通过。
[1]David Walsh.Camera and Video Control with HTML5[DB/OL]. 2012.
[2]gloomyfish.将HTML5 Canvas的内容保存为图片[DB/OL]. 2013.
[3]jimlong.php中比较两个时间的大小与日期的差值 [DB/ OL].2013.
[4]张凯凯.搞定php日期加减计算方法[DB/OL].2015.
[5]脚本之家.文本框输入小写字母即时转换为大写实现思路[DB/OL].2013.
[6]hebedich.PHP实现加密的几种方式介绍[DB/OL].2015.
[7]Web骇客.HTML5中新型input类型[DB/OL].2014.
[8]sunlion.php识别二维码[DB/OL].2016.
TP311
A
1009-3044(2017)21-0093-04
2017-06-11
郭琳(1981—),女,辽宁本溪人,沈阳职工大学,讲师,软件工程硕士,主要研究方向为软件工程、信息系统、面向对象技术、数学化新媒体。