2014-01-23 119 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..."; 
} 
?>