【问题标题】:How can I get session id in php and show it? [closed]如何在 php 中获取会话 ID 并显示它? [关闭]
【发布时间】:2014-02-13 16:19:06
【问题描述】:

我需要使用一些唯一的 ID,例如会话 ID。 如何在 php 中获取会话 ID?

【问题讨论】:

  • var_dump($_SESSION); 将为您提供会话中的所有值
  • 您只需要一个唯一的 ID 还是要创建一个会话?
  • 我想知道谁会从结束主题中获得乐趣——这些天经常看到这个。这是第一次通过谷歌点击,第一个答案正是我正在寻找的答案。
  • session_start(); echo session_id();
  • @jcansell 我认为这里的问题是第一句话要求的内容与粗体问题不同(谷歌将我们带到这里的可能原因)。与会话相比,获取唯一 ID 的方法要有效得多,如下面的其他答案中所述。

标签: php session


【解决方案1】:
session_start();    
echo session_id();

【讨论】:

    【解决方案2】:

    我不建议您开始会话只是为了获得一些唯一的 ID。相反,请使用 uniqid() 之类的东西,因为它旨在返回唯一 ID。

    但是,如果您已经有会话,那么当然可以使用 session_id() 来获取您的会话 ID - 但不要依赖它,因为“唯一 ID”与常识中的“会话 ID”不同:例如,大多数浏览器中的多个选项卡将使用相同的进程,因此,在结果中使用相同的会话标识符 - 因此,不同的连接将具有相同的 id。这是您对所需行为的决定,我提到这一点只是为了说明会话 ID 和唯一 ID 之间的区别。

    【讨论】:

    • unique_id 在密码学上并不安全 - 仔细阅读,看起来 session_id 也不安全。对 unique_id 的快速调用将返回相同的 id,因为它使用时间。正如 Hassan 所说,您可能希望为您的 id 添加前缀/后缀以增加其唯一性。
    • 安全虽然默默无闻不是一个好主意;在现代版本的 PHP 中,如果需要加密的声音,像 random_bytes() 这样的东西可以工作
    【解决方案3】:

    首先你需要在 PHP 文件中注册会话

     <? session_start();
         $_SESSION['id'] = $userData['user_id'];?>
    

    并且在您的 php 应用程序的每个页面中,您都可以检索会话 id

     <? session_start()
        id =  $_SESSION['id'];
       ?>
    

    【讨论】:

    • 这不是通常所说的“会话 ID”。
    • 我知道你做了什么... -1 -_-
    【解决方案4】:

    你有唯一 id 的 uniqid 函数

    您可以添加前缀以使其更加独特

    来源:http://pk1.php.net/uniqid

    【讨论】:

      【解决方案5】:
      if(isset($_POST['submit']))
         {  
       if(!empty($_POST['login_username']) && !empty($_POST['login_password']))
          {
           $uname = $_POST['login_username'];
           $pass = $_POST['login_password'];
           $res="SELECT count(*),uname,role FROM users WHERE uname='$uname' and  password='$pass' ";
      $query=mysql_query($res)or die (mysql_error());  
      
      list($result,$uname,$role) = mysql_fetch_row($query);   
      $_SESSION['username'] = $uname;
      $_SESSION['role'] = $role;
       if(isset($_SESSION['username']) && $_SESSION['role']=="admin")
       {
       if($result>0)
            {
             header ('Location:Dashboard.php');
            }
            else
            {
               header ('Location:loginform.php');
            }
       }
      

      【讨论】:

        【解决方案6】:

        在获取会话 ID 之前,您需要启动一个会话,这可以通过以下方式完成: session_start() 函数。

        现在您已经开始了一个会话,您可以使用以下方法获取一个会话 ID: session_id()。

        /* A small piece of code for setting, displaying and destroying session in PHP */
        
        <?php
        session_start();
        $r=session_id();
        
        /* SOME PIECE OF CODE TO AUTHENTICATE THE USER, MOSTLY SQL QUERY... */
        
        /* now registering a session for an authenticated user */
        $_SESSION['username']=$username;
        
        /* now displaying the session id..... */
        echo "the session id id: ".$r;
        echo " and the session has been registered for: ".$_SESSION['username'];
        
        
        /* now destroying the session id */
        
        if(isset($_SESSION['username']))
        {
            $_SESSION=array();
            unset($_SESSION);
            session_destroy();
            echo "session destroyed...";
        }
        ?>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-19
          • 1970-01-01
          • 2012-01-31
          • 1970-01-01
          • 2015-01-26
          • 2014-12-30
          • 2012-11-27
          • 2012-09-04
          相关资源
          最近更新 更多