如何在php中的所有域中销毁会话。 我只是使用这段代码,但这不起作用
session_destroy();
跨越所有域意味着我在example.com中创建了一个也在www.example.com中创建的会话,这完全可以工作但是假设我从example.com销毁会话,它只能从example.com中销毁,而不是从www。 example.com
答案 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() 我一直在遇到这个问题,但这些线路为我修好了