php会话卡在过滤结果上

时间:2017-06-25 01:20:52

标签: php session

的index.php

if (isset($_GET['type'])) {
 session_start();
 $_SESSION['type']=$_GET['type'];
}
<a href="index.php?type=makeup"><button>Makeup Artists</button></a>
<a href="index.php?type=photography"><button>photography</button></a>

fetch.php

if(isset($_SESSION['type'])){
  $typesql = $_SESSION['type'];
  $results = $mysqli->prepare("SELECT name, type FROM artists WHERE type = ?");

  $results->bind_param("s", $typesql);
  $results->execute();
  $results->bind_result($name, $type);
} else {
  $results = $mysqli->prepare("SELECT name, type FROM artists");

  $results->execute();
  $results->bind_result($name, $type);
}

在我开始会话后,当我返回没有$ _GET值的index.php时,我仍然得到过滤结果,我尝试了下面的解决方案,但它没有工作

if (isset($_GET['session'])) {
if($_GET['session']==0){
  session_unset();
}}

1 个答案:

答案 0 :(得分:1)

您需要重置会话值并在获取页面上使用empty()而不是isset()

<强>的index.php

# Just start by default
session_start();
# Set default
$_SESSION['type'] = (isset($_GET['type']))? $_GET['type'] : false;
?>
<a href="index.php?type=makeup"><button>Makeup Artists</button></a>
<a href="index.php?type=photography"><button>photography</button></a>

<强> /fetch.php

# Use empty() here
if(!empty($_SESSION['type'])){
    $typesql = $_SESSION['type'];
    $results = $mysqli->prepare("SELECT name, type FROM artists WHERE type = ?");

    $results->bind_param("s", $typesql);
    $results->execute();
    $results->bind_result($name, $type);
} else {
    $results = $mysqli->prepare("SELECT name, type FROM artists");
    $results->execute();
    $results->bind_result($name, $type);
}
相关问题