我正在做一个小项目,因为我在会话中有用户数据。在中间,用户将进行付款,在付款成功后,会话将自动销毁。
现在无法从会话中获取用户数据。 (如何在不使用COOKIES的情况下实现这一目标)。
注意:我尝试过使用:
header('Access-Control-Allow-Origin: *');
但没用。
答案 0 :(得分: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();
?>
答案 1 :(得分:0)
$_SESSION
是一个特殊的数组,用于存储用户在访问您的网站或Web应用程序时所做的页面请求中的信息。
虽然可能有许多用户同时访问该站点,每个用户都有自己的会话,但这要归功于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");
}
}
使用数据库在您知道数据将持久存在的最早时刻存储数据;不要让它作为会话的一部分长时间停留,因为这会打开可能的攻击。</ p>
一旦您不再需要使用会话,请使用session_destory()
。
您可能希望通过: