何时销毁表单上的会话数据

时间:2015-01-21 15:14:20

标签: php session

我有一个包含SS号码的表格。我已完成所有安全/注入,垃圾邮件和验证内容,因为它未包含在问题中。  基本上我想在表单通过电子邮件发送用户和代理后销毁会话数据。然后擦拭服务器。 我是否在表格的最后一页上这样做? 注意事项:
第1页用户将输入所有数据。 第2页使用会话将数据输入到用户点击提交按钮的确认页面,邮件程序将邮件发送到第3页成功页面 从技术上讲,一旦数据到达第2页,我就不再需要会话了

    <form id="form_958713" class="appnitro"  method="post" action="mailer.php
<?php
// Initialize the session.
session_start();
// Unset all of the session variables.
$_SESSION = array();
// 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();
?>
">

或者我是否在邮件本身上这样做? 片段:

 // gives success or error
if(!$mail->Send()) {
echo 'Message could not be sent.';
exit;
}
echo '
<meta http-equiv="refresh" content="0;url=http://www.website.com/GetaQuoteSuccess.php">
';
// Initialize the session.
session_start();
// Unset all of the session variables.
$_SESSION = array();
// 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();
?> 

用代码擦除会话的最佳方法/地点是什么?

2 个答案:

答案 0 :(得分:0)

如果你真的需要销毁整个会话,那么在主脚本

的末尾进行

答案 1 :(得分:0)

销毁会话是一个非常糟糕的主意。在这个网站中,这两个页面可能是你使用$ _SESSION的唯一地方,但通常它用于很多东西。

而是尝试这个概念: -

Form1.php(从用户捕获数据的表单)

just posts data to form2.php

Form2.php

<?php
    $session_start()
    // validate $_POST of course, and once valid
    $_SESSION['post_data'] = $_POST
    // other code
    header('Location: form3.php');
    exit;
?>

Form3.php

<?php
    session_start();
    // use $_SESSION['post_data']['field1'] etc however you want
    . . .
    // at end of script if you no longer want this data
    unset($_SESSION['post_data']);
    // the post-data array will no longer exists in $_SESSION
    // **But other data in $_SESSION is still there**

哦但是使用unset($_SESSION); 有龙