v9用于静态页查询登陆状态以及用户信息的ajax接口

本文详细介绍了如何通过接口查询当前用户的登陆状态及信息,包括用户名、登录次数、会员组等,同时提供了AJAX查询示例。

v9当前登陆用户信息查询接口,包括是否已登陆。
访问地址:/api.php?op=user,返回json格式
 

  1. "userid":"2",
  2. "phpssouid":"2",
  3. "username":"rhongsheng",
  4. "encrypt":"8A5vbe",
  5. "nickname":"rhongsheng",
  6. "regdate":"1300506664",
  7. "lastdate":"1300508430",
  8. "regip":"220.181.132.59",
  9. "lastip":"220.181.132.59",
  10. "loginnum":"0",
  11. "email":"test@test.test",
  12. "groupid":"2",
  13. "areaid":"0",
  14. "amount":"0.00",
  15. "point":"0",
  16. "modelid":"10",
  17. "message":"0",
  18. "islock":"0",
  19. "vip":"1",
  20. "overduedate":"0"
  21. ,"siteid":"1"
  22. ,"islogin":true,
  23. "groupname":"\u65b0\u624b\u4e0a\u8def"



附带ajax查询一例
登陆表单id为userlogin,存放用户信息的id为userinfo,
 

  1. $(function(){
  2. $.ajax({
  3. type:'GET',
  4. url:'{siteurl($siteid)}/api.php?op=user',
  5. dataType:'json',
  6. success:function(msg){
  7. if(msg.islogin)
  8. {
  9. $('#userlogin').hide();
  10. $('#userinfo').html("欢迎您:"+ msg.username + (msg.vip==1 ? "(vip)" : "") +"&nbsp;&nbsp;&nbsp;会员组:"+ msg.groupname +"&nbsp;&nbsp;上次登陆IP:"+ msg.lastip +"&nbsp;&nbsp;帐户余额:"+ msg.amount +"&nbsp;&nbsp;&nbsp;&nbsp;<a href=\"/index.php?m=member&c=index\">会员中心</a>&nbsp;&nbsp;&nbsp;<a href=\"/index.php?m=member&c=index&a=logout\">退出登陆</a>").show();
  11. }
  12. }
  13. });
  14. });
@OnMessage public void onMessage(String message, Session session) { try { // 使用 Jackson 解析 JSON 消息 ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(message); if (jsonNode.has("username") && !jsonNode.get("username").asText().isEmpty()) { String username = jsonNode.get("username").asText(); // 检查用户是否已存在 boolean userExists = false; for (User user : users.values()) { if (user.getName().equals(username)) { userExists = true; // 更新用户的 ID 和会话 user.setId(session.getId()); user.setSession(session); // 检查该用户是否有缓存消息 searchCache(username, user); LOGGER.info("\n用户 {} 已更新", username); LOGGER.info("\n当前用户列表 {}", users); break; } } if (!userExists) { // 新建用户并存储到 users 中 User user = new User(session.getId(), username, session); users.put(session.getId(), user); LOGGER.info("\n用户 {} 已连接", username); LOGGER.info("\n当前用户列表 {}", users); // 检查是否有缓存消息 searchCache(username, user); } } else if (jsonNode.has("targetusername") && jsonNode.has("sendmessage")) { String targetusername = jsonNode.get("targetusername").asText(); String sendmessage = jsonNode.get("sendmessage").asText(); boolean userExists = false; // 查找目标用户,如果用户的session为空,则表示用户离线 // 将通知存放到缓存消息列表中,如果不为空则表示用户在线,直接发送通知 for (User user : users.values()) { if (user.getName().equals(targetusername)) { if (user.getSession() != null) { userExists = true; WebSocketUsers.sendMessageToUserByText(user.getSession(), sendmessage); } break; } } LOGGER.info("\n目标用户 {}", targetusername); LOGGER.info("\n发送消息 {}", sendmessage); LOGGER.info("\n当前用户列表 {}", users); if (!userExists) { // 如果目标用户不在线,则缓存通知 messageCache.computeIfAbsent(targetusername, k -> new CopyOnWriteArrayList<String>()).add(sendmessage); LOGGER.info("\n消息已缓存,等待用户 {} 上线", targetusername); } } } catch (Exception e) { // 如果解析失败,则按普通消息处理 String msg = message.replace("你", "我").replace("吗", ""); WebSocketUsers.sendMessageToUserByText(session, msg); } }监听数据库,有变化发送消息
10-10
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值