当前位置: 首页 > 知识库问答 >
问题:

如何使用存储在ajax会话中的用户ID

翟俊
2023-03-14

当用户登录时,我将用户id存储到会话中,然后我希望将该用户id传递给ajax以检索数据库中的其他信息。存储在会话中的用户ID未传递给allResult。php我的登录页面代码片段,我在其中进行会话:

  $msg = '';

  if (isset($_POST['login']) && !empty($_POST['username']) 
   && !empty($_POST['password']))
  {
   $username1 = $_POST['username'];
   $password1 = $_POST['password'];
   $password2 = md5($password1);
   $sql= "SELECT * FROM users WHERE userName='$username1' AND password='$password2'";
   if($query_run = mysqli_query($conn, $sql))
   {
    $query_num_rows = mysqli_num_rows($query_run);
    $stmt =mysqli_prepare($conn, $sql);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_store_result($stmt);
    if($query_num_rows==1)
    {
     $row = mysqli_fetch_assoc($query_run);
     $user_id =  $row['id'];
     $name=$row['Name'];
      //creating session

     $_SESSION['loggedin_time'] = time();
     $_SESSION['userid'] = $user_id;
     $_SESSION['name'] = $name;

   }
 }
  else {
       $msg = '*Wrong username or password';
     }
}

现在,登录后,用户将被带到仪表板:

<?php 
  session_start();
  include("functions.php");
  if(isset($_SESSION["userid"])) {
    if(isLoginSessionExpired()) {
      header("Location:loginPage.php");
    }
  }
  if($_SESSION['userid']=="" && $_SESSION['name']==""){
    header("location: loginPage.php");
  }
  require 'dbconnect.php'; 
  $userId = $_SESSION['userid'];   
  echo "$userId"; 
  ?>

在仪表板中,我试图使用ajax访问用户的其他数据

      <script id="source" language="javascript" type="text/javascript">


          $(function() {
            $( "#tabs" ).tabs({active:0});
            $.ajax({                                      
              url: 'allResult.php',
              method:"POST",
              data: ({uid:'$userId'}),                                                      
              dataType: 'json',                     
              success: function(data)         
              {

                var date=  data[0]['date'];
                   var time=  data[0]['time']; 
                   var ip=  data[0]['ip'];
                   var lux=  data[0]['lux'];
                   var press=  data[0]['press'];
                   var acc_x=  data[0]['acc_x'];
                   var acc_y=  data[0]['acc_y'];
                   var acc_z=  data[0]['acc_z'];



                   $("#tabs-1").html("<b>date: </b>"+date+"<b> time: </b>"+time+"<b> ip: </b>"+ip+"<b> lux: </b>"+lux+"<b> press: </b>"+press+"<b> acc_x: </b>"+acc_x+"<b> acc_y: </b>"+acc_y+"<b> acc_z: </b>"+acc_z);

             } ,
             error : function(request,error) 

             { 
              alert (error);
              alert("Request: "+JSON.stringify(request)); 
            } 

          });
});

我需要获取用户id才能运行allResult。php所有结果。php

<?php
ini_set('display_errors', 1);
    ini_set('display_startup_errors', 1);
    error_reporting(E_ALL);
    require 'dbconnect.php';
    $user_id =  $_POST["uid"]
    $sql_query = "SELECT * FROM data where id like '$user_id';";          
    $result = mysqli_query($conn,$sql_query);  
     if(mysqli_num_rows($result) >0 )  
     {  
     $row = mysqli_fetch_assoc($result);  

     $output [] = $row ;

     echo json_encode($output);
     }  
     else  
     {   
     echo "Error finding data..";  
     }  

    ?>

共有2个答案

李跃
2023-03-14

看起来您缺少会话\u start()

王涵育
2023-03-14

将所有用户登录的数据转换为json格式。

假设所有数据都在

somedomain.com/userData.php

<?php
#userData.php

if ($user == "loggedin") {
  $data['name'] = $_SESSION[1]; //name
  $data['email'] = $_SESSION[2]; //email
  $data['extra'] = $_SESSION[3]; //etc.
  echo json_encode($data, JSON_PREETY_PRINT);
}
?>

然后使用jQuery Ajax实时获取数据。

 类似资料:
  • 问题内容: 我在开发中使用带有护照的节点/表达式。我碰到一篇文章说: Express加载会话数据并将其附加到请求。当护照在会话中存储序列化的用户时,可以在req.session.passport.user中找到序列化的用户对象。 但是令我惊讶的是,浏览器cookie中的sessionID存储的值在登录前后都保持不变。那么,序列化的用户对象存储在哪里? 我以为它最初存储在用户cookie中,但似乎不

  • 问题内容: 如果一个用户已经登录并尝试在新实例中再次登录,我希望它注销另一个用户实例。我不希望同一用户在我的应用程序上登录两次。 当前会话存储在Redis存储中,我正在使用express / connect处理会话存储。可以用来破坏会话的可用功能之一如下: 但是,我需要在调用.destroy()之前找到该会话ID。在Redis中,用户名存储为会话的一部分。 问题:是否可以查询Redis以基于用户名

  • 我的密码\u散列有问题,当我登录时,我想让用户登录会话,但当我使用密码验证时不工作,回显不返回任何内容。我怎样才能解决这个问题?谢谢这是我的代码: 这个代码完美的工作时,我不使用password_verify。

  • 我需要使用session来保留用户的选择。(如果用户选择的日期范围在数据刷新时返回到默认值)。 这是我的daterangepicker代码。请帮助我如何设置“开始”日期和“结束”日期的会话存储,以及如何从会话存储中检索它们。提前道谢。

  • 问题内容: 当访问一个页面时,我想启动一个会话并存储一个会话变量: 然后从另一个页面,我想检查该会话变量是否已存储: 此代码对我不起作用。 问题答案: 从对该问题的评论来看,似乎缺少调整后的会话 。save_path 导致PHP会话处理程序的这种行为不当。只需指定一个存在的目录(在文档根目录之外),该目录就可以被PHP读取和写入,以解决此问题。

  • 问题内容: 我正在使用Redis缓存在项目中保存一些内容。 我使用的是Azure(WebApp),当我在预生产环境与生产环境之间执行SWAP时,用户会话丢失了,他需要在我的网页中重新登录。 我正在使用Identity 3.0和UseCookieAuthentication。我想将“会话”存储在Redis中,以解决交换时遇到的问题。 我没有找到相关信息,有什么想法吗?谢谢 Startup.cs代码C