2015-09-01 68 views
2

我正在做一個小型項目,因爲我有會話中的用戶數據。在中間用戶將進行支付,支付成功後,會話將自動銷燬。付款成功後會自動銷燬

現在我無法從會話中獲取用戶數據。 (我怎樣才能實現這一點與使用COOKIES)。

注:我已經嘗試使用:

header('Access-Control-Allow-Origin: *');  

但是沒有用。

+0

你有'在session_start();'在所有PHP頁面的開始? –

+0

使用session_destroy(); –

+0

@SahilManchal爲什麼? –

回答

0

$_SESSION是在頁面請求他對你的網站或網絡應用程序訪問期間,用戶對用於存儲信息的特殊排列。 儘管可能有許多用戶同時訪問網站,但每個用戶都有自己的會話,這要歸功於由PHP爲每個會話分配和管理的唯一ID,以便每個用戶的會話僅可供自己使用。會話信息存儲在服務器上而不是用戶的計算機上(因爲存儲了cookie數據),這使會話比傳統的cookie在頁面請求之間傳遞信息更安全。

使用會話

,然後才能將信息存儲在一個會議上,你必須開始PHP的會話處理。這是在PHP代碼的開始處完成的,並且必須在任何文本,HTML或JavaScript被髮送到瀏覽器之前完成。要啓動會話,你叫你的第一個文件的session_start()功能:

<?php 
// start the session 
session_start(); 
// store session data 
$_SESSION["username"] = "Qateel"; 

session_start()啓動用戶和服務器之間的會話,並允許存儲在$_SESSION值,可以在其他腳本進行訪問以後。

在您的第二個文件中,您再次調用session_start(),這次繼續會話,然後您可以從$_SESSION檢索值。

<?php 
// continue the session 
session_start(); 
// retrieve session data 
echo "Username = " . $_SESSION["username"]; 

結束會話

,因爲它是開始會話,所以它是一個結束一樣重要。儘管會話只是臨時存儲數據的一種方式,但在處理潛在的敏感信息時,務必要自行清理以確保最大的安全性,這一點非常重要。這也是很好的做法,並且可以避免在服務器上安裝大量過時的會話數據。

要刪除單個會話值,可以使用unset()功能:

<?php 
    session_start(); 
    // delete the username value 
    unset($_SESSION["username"]); 

要取消所有會話的價值觀,你可以使用session_unset()函數:

<?php 
session_start(); 
// delete all session values 
session_unset(); 

兩個例子只會影響存儲在會話中的數據,而不會影響會話本身。如果您願意,可以在調用後將其他值存儲到$_SESSION。如果您希望完全停止使用會話,例如用戶註銷,則使用session_destroy()函數。儘管有簡單

<?php 
session_start(); 
// terminate the session 
session_destroy(); 

幾個技巧

,還有使用會話可以去錯誤的方法。

如果您正在處理登錄到您的網站或應用程序的用戶,則時間安排會話是非常重要的操作。

if (isset($_SESSION["timeout"])) { 
    // calculate the session's "time to live" 
    $sessionTTL = time() - $_SESSION["timeout"]; 
    if ($sessionTTL > $inactive) { 
     session_destroy(); 
     header("Location: /logout.php"); 
    } 
} 

使用數據庫在您知道數據將持久存儲的最早時刻存儲數據;不要讓它作爲會話的一部分保持太久,因爲這會打開可能的攻擊。

使用session_destory()一旦您不再需要使用該會話。

您可能想通過:

0

你好,這是一個PHP手冊的例子,我希望它可以幫助。首先通過session_start()開始你的會話;並且一旦你的所有交易完成,銷燬是通過session_destroy();

<?php 
    // Initialize the session. 
    // If you are using session_name("something"), don't forget it now! 
    session_start(); 

    // Unset all of the session variables. 
    $_SESSION = array(); 

    // If it's desired to kill the session, also delete the session cookie. 
    // Note: This will destroy the session, and not just the session data! 
    if (ini_get("session.use_cookies")) { 
     $params = session_get_cookie_params(); 
     setcookie(session_name(), '', time() - 42000, 
      $params["path"], $params["domain"], 
      $params["secure"], $params["httponly"] 
     ); 
    } 

    // Finally, destroy the session. 
    session_destroy(); 
    ?>