在所有子域中销毁PHP会话

时间:2015-08-25 14:31:13

标签: php session

如何在php中的所有域中销毁会话。 我只是使用这段代码,但这不起作用

session_destroy();

跨越所有域意味着我在example.com中创建了一个也在www.example.com中创建的会话,这完全可以工作但是假设我从example.com销毁会话,它只能从example.com中销毁,而不是从www。 example.com

2 个答案:

答案 0 :(得分:0)

如果我理解正确,您希望已经破坏其他每个页面中的会话set。我将演示它应该如何实际应用的一些行为,希望你会找到你搞砸的地方。

我们说我们刚刚开始使用会话page1.php

  

page1.php中

<?php

 // starts session
 session_start();

 // setting variable values during session
 $_SESSION['ID']='13CS54';

 $_SESSION['name']='Muneer';

 $_SESSION['account']='Stack Overflow';

echo "You have set the sessions"; 
?>

现在在另一个页面上,让我们说page2.php,您正在使用这些会话。

  

使page2.php

<?php

//don't forget to put session_start(); in the start
session_start();


echo "ID: " .$_SESSION['ID']."<br>";

echo "Name: " .$_SESSION['name']. "<br>";

echo "Account: " .$_SESSION['account'];

?>

page3.php或您希望使用/添加更多会话。

  

page3.php

<?php

//yes, add the session_start(); (always)
session_start();

$_SESSION['country'] = 'Pakistan';

echo "ID: " .$_SESSION['ID']."<br>";

echo "Name: " .$_SESSION['name']. "<br>";

echo "Location: " .$_SESSION['country'];

?>

现在,在page4.php您希望销毁在每个页面上进行的所有会话。

  

page4.php

<?php

session_start();
session_destroy();

?>

答案 1 :(得分:0)

我认为您想问的是如何销毁域及其子域的会话例如example.com,account.example.com,app.example.com
您必须在调用session_start()之前添加这些行:

$sess_name = session_name('app');
session_set_cookie_params(0, '/', '.example.com');

检查this link to know more on session_set_cookie_params() 我一直在遇到这个问题,但这些线路为我修好了