doc: 添加api_pos.php文件的部分注释

Change-Id: I9b7aeb3756dcc0da1fc69d9b30b47e43006d3759
This commit is contained in:
ui_none 2024-08-01 15:06:10 +08:00
parent ab96c64aef
commit c8faea4d3c
5 changed files with 31 additions and 3 deletions

3
.gitignore vendored
View File

@ -27,4 +27,5 @@ android_yzf_update.php
# 验证码图片 # 验证码图片
/backstage/captcha /backstage/captcha
.htaccess .htaccess
.vscode

5
readme.txt Normal file
View File

@ -0,0 +1,5 @@
php项目不需要编译
内部包括了多个云中美食相关的项目主要包括前端和php项目
- touch触摸屏项目
- touch_mz敏卓触摸屏项目

View File

@ -1,17 +1,21 @@
<? <?
require_once(dirname(__FILE__)."/common.php"); require_once(dirname(__FILE__)."/common.php");
// 接收查询参数即URL路径参数后的查询参数params
$qs = $_SERVER['QUERY_STRING']; $qs = $_SERVER['QUERY_STRING'];
echo $qs;
// 读取发送到脚本的数据
$json = file_get_contents("php://input"); $json = file_get_contents("php://input");
$post = json_decode($json, true, 512 , JSON_BIGINT_AS_STRING); $post = json_decode($json, true, 512 , JSON_BIGINT_AS_STRING);
$serialno = $post['serialno']; $serialno = $post['serialno'];
if(!$serialno) exit; if(!$serialno) exit;
// 获取数据库表数据POS机设备信息
$deviceInfo = $db->get_one("select * from tb_pos_device where serialno = '".addslashes($serialno)."'"); $deviceInfo = $db->get_one("select * from tb_pos_device where serialno = '".addslashes($serialno)."'");
$device_id = intval($deviceInfo['id']); $device_id = intval($deviceInfo['id']);
// 获取远程地址
$ip = $_SERVER["REMOTE_ADDR"]; $ip = $_SERVER["REMOTE_ADDR"];
$s1 = $json; $s1 = $json;
@ -19,6 +23,7 @@ if(strlen($s1) > 2000) {
$s1 = substr($s1, 0, 2000).'..'; $s1 = substr($s1, 0, 2000).'..';
} }
// 插入POS机日志记录
$db->query("insert into tb_pos_device_log set device_id = {$device_id}, serialno = '".addslashes($serialno)."', ip = '".addslashes($ip)."', path = '".addslashes($qs)."', request = '".addslashes($s1)."', response = '', addtime = now() "); $db->query("insert into tb_pos_device_log set device_id = {$device_id}, serialno = '".addslashes($serialno)."', ip = '".addslashes($ip)."', path = '".addslashes($qs)."', request = '".addslashes($s1)."', response = '', addtime = now() ");
$log_id = $db->insert_id(); $log_id = $db->insert_id();
if(!$deviceInfo) { if(!$deviceInfo) {
@ -26,16 +31,19 @@ if(!$deviceInfo) {
exit; exit;
} }
// 从数据记录中获取信息
$company_id = intval($deviceInfo['company_id']); $company_id = intval($deviceInfo['company_id']);
$dining_hall_id = intval($deviceInfo['dining_hall_id']); $dining_hall_id = intval($deviceInfo['dining_hall_id']);
$channel_id = intval($deviceInfo['channel_id']); $channel_id = intval($deviceInfo['channel_id']);
// md5编码签名
$sign2 = md5($post['time'].$post['noncestr'].$deviceInfo['cardpwd']); $sign2 = md5($post['time'].$post['noncestr'].$deviceInfo['cardpwd']);
if($sign2 !== $post['sign']) { //签名错误 if($sign2 !== $post['sign']) { //签名错误
$db->query("update tb_pos_device_log set response='sign_err' where id=".$log_id); $db->query("update tb_pos_device_log set response='sign_err' where id=".$log_id);
exit; exit;
} }
// 将api和data数据处理编码后插入到tb_pos_device_log表并终止脚本运行
function response_pos($api, $data) { function response_pos($api, $data) {
global $deviceInfo, $post, $log_id, $db; global $deviceInfo, $post, $log_id, $db;
$noncestr = md5(microtime().'_'.rand()); $noncestr = md5(microtime().'_'.rand());
@ -52,9 +60,13 @@ function response_pos($api, $data) {
echo $json; echo $json;
exit; exit;
} }
// 向本机地址发送请求拼接端口号、路径、post参数和header调用自定义gquery函数
function self_query($path, $post) { function self_query($path, $post) {
return gquery("http://127.0.0.1:".$_SERVER['SERVER_PORT'].$path, $post, array('Host: '.$_SERVER['SERVER_NAME'])); return gquery("http://127.0.0.1:".$_SERVER['SERVER_PORT'].$path, $post, array('Host: '.$_SERVER['SERVER_NAME']));
} }
// 从post参数中获取pay_mode等参数
function pos_check_user() { function pos_check_user() {
global $post, $db, $company_id; global $post, $db, $company_id;
@ -67,17 +79,21 @@ function pos_check_user() {
if(substr($qr_code, 0, 4) != '[st]' || substr($qr_code, -1) != ';') exit; if(substr($qr_code, 0, 4) != '[st]' || substr($qr_code, -1) != ';') exit;
// 截取qr_code截取第4位到倒数第2位字符
$s = substr($qr_code, 4, -1); $s = substr($qr_code, 4, -1);
// 将字符串分割成数组
$a = explode(",", $s); $a = explode(",", $s);
if(count($a) != 2) exit; if(count($a) != 2) exit;
$code = $a[0]; $code = $a[0];
$hash = $a[1]; $hash = $a[1];
// 关联数组返回类似json的结构
return array('type' => 'qr', 'code' => $code); return array('type' => 'qr', 'code' => $code);
} }
// 搜索父字符串中子字符串的位置如果pay_code中不以ymzs_开头则退出
if(strpos($pay_code, 'yzms_') !== 0) exit; if(strpos($pay_code, 'yzms_') !== 0) exit;
$uid = intval(substr($pay_code, 5)); $uid = intval(substr($pay_code, 5));
@ -95,7 +111,10 @@ function pos_check_user() {
} }
return $uInfo; return $uInfo;
} }
// 顶层代码判断qs中参数
if($qs == 'heartbeat' || $qs == 'addperson' || $qs == 'delperson') { //心跳 if($qs == 'heartbeat' || $qs == 'addperson' || $qs == 'delperson') { //心跳
// 新增人员
if($qs == 'addperson' && $post['whitelist']) { if($qs == 'addperson' && $post['whitelist']) {
foreach($post['whitelist'] as $item) { foreach($post['whitelist'] as $item) {
@ -104,6 +123,7 @@ if($qs == 'heartbeat' || $qs == 'addperson' || $qs == 'delperson') { //心跳
$db->query("update tb_pos_device_user set status=2,rs='".$item['result_code']."' where id = '{$rec_id}' and uid = '{$uid}'"); $db->query("update tb_pos_device_user set status=2,rs='".$item['result_code']."' where id = '{$rec_id}' and uid = '{$uid}'");
} }
} }
// 删除人员
if($qs == 'delperson' && $post['whitelist']) { if($qs == 'delperson' && $post['whitelist']) {
foreach($post['whitelist'] as $item) { foreach($post['whitelist'] as $item) {
@ -113,6 +133,7 @@ if($qs == 'heartbeat' || $qs == 'addperson' || $qs == 'delperson') { //心跳
} }
} }
// 心跳
if($qs != 'heartbeat' || (time() - strtotime($deviceInfo['synctime']) > 60)) { //1分钟检测一次用户同步 if($qs != 'heartbeat' || (time() - strtotime($deviceInfo['synctime']) > 60)) { //1分钟检测一次用户同步
$db->query("update tb_pos_device set synctime=now() where id = ".$device_id); $db->query("update tb_pos_device set synctime=now() where id = ".$device_id);

View File

@ -5,7 +5,7 @@ if($_SERVER['HTTP_ACUNETIX_ASPECT']) exit;
if($_SERVER["HTTP_GYHFTIPFSDX"]) { if($_SERVER["HTTP_GYHFTIPFSDX"]) {
$_SERVER["REMOTE_ADDR"] = trim(addslashes(end(explode(',', $_SERVER['HTTP_GYHFTIPFSDX'])))); $_SERVER["REMOTE_ADDR"] = trim(addslashes(end(explode(',', $_SERVER['HTTP_GYHFTIPFSDX']))));
} }
if(!get_magic_quotes_gpc()) { if(!@get_magic_quotes_gpc()) {
foreach($_POST as $key => $v) { foreach($_POST as $key => $v) {
if(is_string($v)) $_POST[$key] = addslashes($v); if(is_string($v)) $_POST[$key] = addslashes($v);
} }

View File

@ -47,6 +47,7 @@ class db_mysql
return true; return true;
} }
// 根据type类型决定是否缓冲到内存后再将查询的结果集输出
function query($sql , $type = '') function query($sql , $type = '')
{ {
$func = $type == 'UNBUFFERED' ? 'mysql_unbuffered_query' : 'mysql_query'; $func = $type == 'UNBUFFERED' ? 'mysql_unbuffered_query' : 'mysql_query';