2014-01-23 118 views
19

我需要使用一些像会话ID一样的唯一ID。 如何获取会话ID在PHP?我如何在PHP中获取会话ID并显示它?

+1

'的var_dump($ _ SESSION);'会得到大家在会议 –

+3

你只需要一个唯一的ID或你想创建一个会话值是多少? –

+0

我不知道谁能从闭幕式主题中获得乐趣 - 现在看到很多。 这是第一次通过谷歌打,第一个答案是我正在寻找的确切的一个。 – jcansell

回答

58
session_start();  
echo session_id(); 
15

我不建议你刚开始会获得一些独特的ID。相反,使用诸如uniqid()之类的东西,因为它旨在返回唯一的ID。

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

+0

unique_id不是crytographically安全的 - 阅读周围,它看起来不像session_id不是。对unique_id的快速调用将返回相同的ID,因为它使用时间。正如Hassan所说,你可能希望为你的id添加一个前缀/后缀来增加它的唯一性。 – jcansell

-5

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

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

而且在你的PHP应用程序的每个页面,您可以retrive会话ID

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

这通常不被称为“会话ID”。 –

+0

我看见你唔见了...... -1 -_- – khandelwaldeval

0
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'); 
     } 
} 
7

之前得到你需要启动一个会话,并且通过使用做了会话ID: session_start()函数。

现在你已经开始了一个会话,你可以通过使用: session_id()来获得会话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..."; 
} 
?>