的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();
}}
答案 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);
}