2016-05-18 2 views
0

私は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); 
} 
?> 
+1

セッション変数または割り当てられた変数の設定を解除していますか? – Thamilan

答えて

2

$_SESSION変数ではなく、$VAR変数の設定を解除しています。試してみてください:

unset($_SESSION['KEYWORD']; 
+0

私はそれが機能を実行しているように動作するとは思わない – deluxenathan

+2

あなたは_think_動作しません、なぜあなたはそれを試してみませんか? – Dacaspex

+0

私は同じと思いますが、彼は$ _SESSION ['var']の設定を解除する必要があります。$ VARではありません – ErasmoOliveira

2

パスを表示します:function Set_Review(&$VAR)。 $ VARの前に "&"を使用してください。

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

あなたは$ _SESSION変数のメモリアドレスを渡します、そして、あなたは($のVAR)あなたが望む方法の設定を解除することができます。

0

私はunset()$_SESSION配列をINGのことはそれを行うには悪い方法だと思います。あなたは、セッションデータの一部だけを削除したい場合は だけsession_destroy()

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

を呼び出して、配列内のすべてのそれらのデータを囲むために試してみてください。そして、

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

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

unset($_SESSION["deleteme"]); 
+0

session_destroy()私はこれを使用することはできませんが、それを殺すログインセッションを持っています (ログインしている場合にのみ「レビュー」を残すことができます) – deluxenathan

+0

$ _SESSION変数全体を設定解除すると、同じ結果が得られます。 – NoImaginationGuy

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']); 

} 
?> 
関連する問題