flower_svr/class/ajax_user_msg.class.php
2021-06-11 16:09:56 +08:00

101 lines
2.9 KiB
PHP

<?php
/**处理ajax请求的消息
* Created by PhpStorm.
* User: ddcai
* Date: 2018/6/8
* Time: 15:11
*/
class ajax_user_msg{
//检查用户的权限,以及返回解密的数据
/*
* $msg=>加密的消息内容,
* $ip=>发送消息的服务器IP
*/
public function check_right($msg,$ip){
if(empty($msg)){
return false;
}
if(!in_array($ip,SYS_SERVER_IP)){
return false;
}
$msg_arr = get_login_token($msg);
if( !empty($msg_arr)
&& !empty($msg_arr['uid'])
&& !empty($msg_arr['a'])
&& !empty($msg_arr['m'])
&& !empty($msg_arr['do_a'])
&& !empty($msg_arr['d'])
){
return $msg_arr;
}else{
return false;
}
}
//把需要发送的消息加入消息队列
/*
$server=>服务器
$data=>array(
't'=>生成消息的时间,
'uid'=>用户的UID,
'a'=>要执行的动作,
'm'=>要执行的模块,
'd'=>相关的数据(数组)
)
*/
public function do_push_act($server,$data){
$myredis = new myredis();
//判断一下这个用户是不是在这个服务器建立了长连接
$tmp_fd = $server->get_user_by_uid($data['uid']);
if(!empty($tmp_fd)){
return set_reids_push($myredis,USER_INFO_LIST,$data);
}else{
return false;
}
}
//即时执行某个操作
/*
$server=>服务器
$data=>array(
't'=>生成消息的时间,
'uid'=>用户的UID,
'a'=>要执行的动作,
'm'=>要执行的模块,
'd'=>相关的数据(数组)
)
*/
public function do_act($server,$data){
//判断一下这个用户是不是在这个服务器建立了长连接
$tmp_fd = $server->get_user_by_uid($data['uid']);
if(!empty($tmp_fd) || $data['uid']==1){
//如果有合法的参数,则执行请求的操作
if(!empty($data) && isset($data["a"]) && isset($data["m"]) && isset($data["d"]) ) {
//判断两个要执行的内容是否正常
if (!preg_match("/^[a-zA-Z0-9_]+$/", $data["a"]) || !preg_match("/^[a-zA-Z0-9_]+$/", $data["m"])) {
$server->_echo_log("要执行的方法里只能包含字母、数字、下画线\r\n");
return false;
}
//判断是否有这个类
if (!class_exists($data['m'])) {
$server->_echo_log(__FILE__ . "找不到对应的类: " . $data['m'] . ":" . __LINE__);
return false;
}
$data['fd'] = $tmp_fd['fd'];
$tmp_task_id = $server->server->task($data);
$server->_echo_log("ajax进行task任务:".$tmp_task_id);
return true;
}
}
return false;
}
}