2011-12-26 12 views
2

私は彼が支払いを成功させた後にセッションを破壊しようとしています。セッションIDをリセットするにはどうすればよいですか?

$session_id = session_id(); 

    $sql = " 
     UPDATE 
      tbl_seat_book 
     SET 
      final_book = 'Y' 
     WHERE 
      session_id = '$session_id' 
    "; 
    $r = $this->db->executeQuery($sql); 

     session_unset(); 
     session_destroy(); 

    echo 'Booking successfull'; 

しかし、チケットを予約すると、同じsession_idが表示されます。どのように成功した後session_idを破壊することができます。

EDIT:

$sql = " 
     INSERT INTO 
      tbl_seat_book 
     SET 
      booking_date = '$_REQUEST[bus_date]', 
      booking_time = '$_REQUEST[bus_time]', 
      bus_id = '$_REQUEST[bus_id]', 
      route_id = '$_REQUEST[route_id]', 
      session_id = '$session_id', 
      session_start_time = '$time', 
      temp_book = 'Y', 
      final_book = 'N', 
      $cond 
    "; 
    $booked = $this->db->insertQuery($sql); 

EDIT2:

​​
+1

http://www.php.net/session_destroy –

+0

私は追加しましたが、同じ結果を返しました。 – AssamGuy

答えて

1

session_unset()。あなたはすべてのセッションにこので使用session_destroy();

+0

私はsession_unset(); session_destroy();を更新しました。同じ結果を示しています!それは破壊されない – AssamGuy

+0

あなたはセッションを確認する方法 – Dau

+0

予約が成功した後、session_idが以前のものと同じであるsession_idで新しいチケットを作ろうとしました。 – AssamGuy

1

試し破棄したい場合にのみ、あなたが登録した変数を解放:

session_unset(); //destroys variables 
session_destroy(); //destroys session 
2

を)(session_destroyで)あなただけ(session_unsetを交換

$session_id = session_id(); 

$sql = " 
    UPDATE 
     tbl_seat_book 
    SET 
     final_book = 'Y' 
    WHERE 
     session_id = '$session_id' 
"; 
if($this->db->executeQuery($sql)) 
{ 
    session_destroy(); 
    echo 'Booking successfull'; 
} 
+0

私のupdate.Also、http://7sisters.in/7sislabs/をご覧ください。セッションチケットが成功した後、session_idが変更されていないことがわかります。私はテストするsession_idをエコーし​​ました。 – AssamGuy

1
if(isset($_SESSION['req_value'])) 
{ 
    unset($_SESSION['req_value']); 
} 
+0

私はそれを1000回使用しましたが、確かに動作します:) –

4

session_regenerate_id(true)を使用して新しいセッションIDを生成し、古いセッションIDを削除します。これにより、すべての情報が新しいセッションIDの一部として$_SESSIONに保持されます。

新しいセッションIDを取得するには、セッション情報を$_SESSIONに保存します。あなたはどちらか$_SESSIONに情報を保持したくない場合は

// Regenerate session ID, user gets a new sid, and cookie is updated. 
session_regenerate_id(true); 

// Make sure you pick up the new session ID 
$session_id = session_id(); 

// Note, $_SESSION will be the same here as before, but $session_id will be diff. 
// Old session info has been moved to new session. 


、あなたは、サーバー側のセッション情報を破壊するsession_destroy()を使用したい、とsetcookie()を手動で解除したセッションIDクッキークライアント側でその後、新しいセッションを開始し、以前と同じように新しいセッションIDを生成することができます。

新しいsession_idを取得し、すべてのセッション情報を削除するには

session_unset(); // Remove the $_SESSION variable information. 
session_destroy(); // Remove the server-side session information. 

// Unset the cookie on the client-side. 
setcookie("PHPSESSID", "", 1); // Force the cookie to expire. 

// Start a new session 
session_start(); 

// Generate a new session ID 
session_regenerate_id(true); 

// Then finally, make sure you pick up the new session ID 
$session_id = session_id(); 

// $_SESSION will now be empty, and $session_id will have been regenerated. 
// You have a completely empty, new session. 

(クッキーは新しいIDで上書きされますので、あなたが、とにかく新しいセッションを作成しているので、あなたは、ここにsetcookie()コールせずに逃げることができますが、それは明示的に古いものを破壊することをお勧めしますクッキー)。一人で


session_destroy()ユーザーの訪問は、彼らはまだ同じセッションIDが設定されています(ただし、そのサーバー側のセッション情報が破壊されています次回ので、クライアント側のクッキーを削除しないであろう)。ドキュメント(強調鉱山)から

session_destroy()は、現在の セッションに関連するすべてのデータを破壊します。セッションの に関連するグローバル変数の設定を解除したり、セッションCookieの設定を解除したりしません。 ... セッションを完全に終了するには、ユーザーをログアウトするように、のセッションIDも に設定する必要があります。。 Cookieを使用してセッションID(デフォルトでは の動作)を伝播する場合は、セッションCookieを削除する必要があります。

関連する問題