PHP函数 - 无法取消设置$ _SESSION变量

时间:2016-05-18 17:44:49

标签: php mysql session

我无法取消为PHP函数设置会话变量,

从下面的代码中,如果我在网站上输入评论,请使用 $_SESSION['KEYWORD']数据会发布正确的数据,但如果我愿意的话 通过另一个$_SESSION变量进行另一次审核,一旦将其添加到MySQL,它会显示我在此示例中输入的第一次审核$_SESSION['KEYWORD']的值...

    <?php session_start(); ?>
<?php include('db_connect.inc');?>
<link rel="stylesheet" type="text/css" href="style.css" />  



<?php 
if (isset($_SESSION['SUBURB'])) {
    $VAR = $_SESSION['SUBURB'];
    Set_Review($VAR);
    unset($VAR);

} elseif (isset($_SESSION['KEYWORD'])) {
        $VAR = $_SESSION['KEYWORD'];
        Set_Review($VAR);
        unset($VAR);

} elseif (isset($_SESSION['LOCATION'])) {
        $VAR = $_SESSION['LOCATION'];
        Set_Review($VAR);
        unset($VAR);

} elseif (isset($_SESSION['RATING'])) {
        $VAR = $_SESSION['RATING'];
        Set_Review($VAR);
        unset($VAR);

}
?>


<?php
function Set_Review($VAR) {
    include('db_connect.inc');
    $result = $conn->prepare("INSERT INTO dog_parks.reviews (review_text, username, date, rating, item) VALUES (:review, :id, :date, :rating, :park_value)");
    $result->bindParam(':review', $value1);
    $result->bindParam(':id', $value2);
    $result->bindParam(':date', $value3);
    $result->bindParam(':rating', $value4);
    $result->bindParam(':park_value', $value5);

    $value1 = $_POST['review'];
    $value2 = $_SESSION['id'];
    $value3 = $date = date("Y-m-d");
    $value4 = $_POST['rating'];
    $value5 = trim($VAR,    "'\"");
    $result->execute();
    echo "<h3>Review entry Successful, you will now be redirected to the home page</h3>";
    header( "refresh:5; url=index.php" );
    unset($VAR);
}
?>

4 个答案:

答案 0 :(得分:2)

通过引用传递:function Set_Review(&$VAR)。使用&#34;&amp;&#34;在$ VAR之前。

http://php.net/manual/en/language.references.pass.php

您将传递$ _SESSION变量的内存地址,然后您可以按照您想要的方式取消设置($ VAR)。

答案 1 :(得分:1)

您取消设置$VAR变量,而不是$_SESSION变量。尝试:

unset($_SESSION['KEYWORD'];

答案 2 :(得分:0)

我认为unset()数组$_SESSION是一种不好的方法。 只需致电session_destroy()

http://php.net/manual/it/function.session-destroy.php

如果您只想删除部分会话数据,请尝试将所有这些数据包含在数组中:

$_SESSION["deleteme"] = array();

$_SESSION["deleteme"]["val1"] = "someval";

然后:

unset($_SESSION["deleteme"]);

答案 3 :(得分:0)

我已经解决了这个问题..

在每个声明中我添加了unset($ _ SESSION ['session name here']);

    <?php 
if (isset($_SESSION['SUBURB'])) {
    $VAR = $_SESSION['SUBURB'];
    Set_Review($VAR);
    unset($_SESSION['SUBURB']);

} elseif (isset($_SESSION['KEYWORD'])) {
        $VAR = $_SESSION['KEYWORD'];
        Set_Review($VAR);
        unset($_SESSION['KEYWORD']);

} elseif (isset($_SESSION['LOCATION'])) {
        $VAR = $_SESSION['LOCATION'];
        Set_Review($VAR);
        unset($_SESSION['LOCATION']);

} elseif (isset($_SESSION['RATING'])) {
        $VAR = $_SESSION['RATING'];
        Set_Review($VAR);
        unset($_SESSION['RATING']);

}
?>