一种基于php+js网络投票系统关键技术的实现方案

2019-02-13 09:06王耀鲁中国水利水电科学研究院
数码世界 2019年1期
关键词:英文字母数据表大写

王耀鲁 中国水利水电科学研究院

1 、数据库表设计

vote_info数据表

id_number数据表

ip_info数据表

2 、关键代码实现

在前端实现层将通过调用js函数,来审核投票者输入的身份证号码是否正确,在该过程中js程序将通过获取表单中的input 的name为id的text文本输入框,赋值给变量id。通过建立三个数组来存放验证身份证号码的数据。并调用toUpperCase()函数将变量id的英文字母转换大小写,以便存入数据库前对身份证信息进行验证。通过身份证号码验证是否具有10个字符,若没有10个字符,就显示“身份证号码必须是10位”。检查身份证号码的第一位是否是大写这部分用来验证身份证信息是否符合标准的身份证信息,若不是就显示身份证号码第一位是英文字母,同时还需验证身份证号码的命名规则必须是10位、首字符位大写英文字母除外,还有个非常重要的命名规则,就是身份证号码第2~10位必须为数字。此外还必须采用身份验证的公式来计算处理数字,并用变量来存放这些数据。

在后台PHP逻辑处理层,通过获取首页的index.php表单中的身份证号码(id)及候选人姓名(name),调用strtoupper()函数将$id变量中所获取的英文字母转换成大写。本方案中为投票人恶意重复刷票,需保证投票人信息的唯一性。使用身份证号码、ip地址来进行双验证,一方面需考虑变量id与vote数据库id_number数据表的id字段进行对比,若有一样的身份证号码表示已经投过票,就不再投票了;若没有一样的身份证号码,变量id的值写入vote数据库,并通过ip()函数验证客户机是否使用代理,对客户访问的ip进行控制,获取ip地址后,查询ip_info字符串,判断ip地址是否真实存在,只有当两张表中的id、ip两个字段都不存在时,才可以将投的票数+1的结果存入vote数据库,并更新vote_info数据表中数据。

Js判断逻辑层流程

3 、后期的改进

分析实现方案,目前系统还存在投票过程中,身份证号可任意提供无验证的问题。根据vote数据库中的表结构,未来将使用人事信息库中与vote库中的id_number表的进行关联,实现1:1关联关系。将考虑加入人事表导入功能,并在库中建number_ip_info表,增加投票系统的可扩展性。

结语:本系统主要针对于小型公司或团体内解决内部投票难所提出的一种方案,能在一定的程度下解决小型企业人员投票困难的问题,本系统还存在一定程度不足和改进的空间,希望各界同行能批评指正,共同探讨。

猜你喜欢
英文字母数据表大写
基于VBA 的教务数据平台研究
做一个大写的“我”
大写的厉害:“00后”少年自制火箭成功上天
湖北省新冠肺炎疫情数据表(2.26-3.25)
湖北省新冠肺炎疫情数据表
湖北省新冠肺炎疫情数据表
“大写”与“大些”
英文字母,你们看上去萌萌哒
一字千进(23)
捋顺绳子