刷新时销毁会话

时间:2016-07-17 06:14:38

标签: php html session

我试图在刷新时销毁会话信息。这里的问题是每次刷新时,数据仍会出现在表格中。如何在刷新时将表数据设置为null?

<?php
        $value = $_SESSION["data"];
        $query = "SELECT * FROM datas WHERE CONCAT(`code`,`name`, `ID`, `cost`) LIKE '%".$value."%'";
        $search = filterTable($query);
    if (isset($_SESSION["data"])) {
       if (basename($_SERVER['PHP_SELF']) != $_SESSION["data"]) {
            session_destroy();
       }
    }
    function filterTable($query)
    {
        $connect = mysqli_connect("localhost", "root", "", "databasename");
        $filter = mysqli_query($connect, $query);
        return $filter;
    }

?>

3 个答案:

答案 0 :(得分:0)

如果要在检索一次后清除所有会话变量,可以使用PHP session_unset()函数。

在您的代码中,它将是:

$value = $_SESSION["data"];
    $query = "SELECT * FROM datas WHERE CONCAT(`code`,`name`, `ID`, `cost`) LIKE '%".$value."%'";
    $search = filterTable($query);
if (isset($_SESSION["data"])) {
   if (basename($_SERVER['PHP_SELF']) != $_SESSION["data"]) {
        session_unset();
   }
}

这应该清除所有会话数据,因此在刷新页面时,$value应该为空。

您还可以尝试使用unset()删除值。 E.g。

unset($_SESSION['data']);

答案 1 :(得分:0)

另一种方法是将会话设置为空数组,这对您有所帮助:

$_SESSION = array();

修改

你先尝试销毁然后设置空数组,如:

session_destroy();
$_SESSION = array();

也许这篇文章可能会对您有所帮助:why session_destroy() not working

答案 2 :(得分:-1)

我们无法通过javascript或ajax取消设置会话变量。因此,我们必须先使用javascript和ajax将控件传递给php。从那里您可以取消设置会话数据:

//put this line of code in that page you are planning to refresh.
window.onbeforeunload = function() {
      if (typeof XMLHttpRequest != "undefined"){
                xmlHttp= new XMLHttpRequest();
                }
                else if (window.ActiveXObject){
                    xmlHttp= new ActiveXObject("Microsoft.XMLHTTP");
                }
                if (xmlHttp==null){
                    alert("Browser does not support XMLHTTP Request")
                    return;
                }
                var base_url="<?php echo base_url(); ?>"
                var url=base_url + 'controller/function_name';
               // url +=id;
                xmlHttp.onreadystatechange = stateChange;
                xmlHttp.open("GET", url, true);
                xmlHttp.send(null);

  };

//your function in php will be 

public function function_name(){

        $newdata =  array(

                            'session_variable' =>0       
                    );

        $this->session->set_userdata($newdata);
    }