2014-06-14 45 views
0

嘗試臨時存儲多頁註冊中的信息。因爲我不希望舊會話混淆新註冊數據,我試圖銷燬舊會話。問題是以下。會話失敗()+ session_start()不在頭重定向後

不工作:

signup1.php

//Start new session 
session_regenerate_id(TRUE); 
session_destroy(); 
unset($_SESSION); 
session_start(); 

//Store values in session 
$_SESSION['created'] = time(); 

//Redirect to second step 
header('Location: '.$settings->siteurl.'signup2.php'); 
exit(); 

signup2.php

<pre> 
<?php 
    //Print $_SESSION (empty array) 
    print_r($_SESSION); 
?> 

工作(但返回舊的$ _SESSION值+更新的值):

//Start new session 
session_regenerate_id(TRUE); 

//Store values in session 
$_SESSION['created'] = time(); 

//Redirect to second step 
header('Location: '.$settings->siteurl.'signup2.php'); 
exit(); 

什麼可以解決問題?第一個session_start();在init.php中設置,但是如果將它放在session_regenerate_id(TRUE)之上,則無關緊要,數組保持爲空。

回答

1

你應該使用這個第一:

session_start(); // Starts a new or resumes an existing session 

然後你可以使用:

session_regenerate_id(TRUE); // regenerates the active session id 

TRUE/delete_old_session參數用於:

是否刪除舊的相關會議文件或不。

session_regenerate_id對防止會話劫持很有用,它只是重新生成一個新的id,但保留會話數據。當用戶的訪問級別改變或使用時間間隔(即每10分鐘後),但在重新生成需要首先啓動會話的另一個新的session id之前,應該使用此選項。

+0

謝謝!但是,如何重置用戶的會話數據,以便所有值都是新的/清除的? – Hidde

+0

你想破壞會話,完全是數據嗎? –

+0

是的。假設用戶已經提交了一次該表單,並且已將該值放入會話中,並且已被重定向到第2頁,如果他在第1頁上再次提交表單,我希望它們被清除。 – Hidde