这里有新手问题,但有可能取消设置的session
。我的意思是我有文件connection.php
与数据库建立连接,它包含在每个页面/文件中。
有一页search.php
我希望无需用户就可以访问而无法登录。所以我在文件中的内容是
<?php
include 'connection.php';
// some code which perform search here
?>
<html>
<head></head>
<body>
search form here
</body>
</html>
当我打开页面时,让我登录页面,因为我没有登录。我试过的是在包含连接后立即销毁会话
<?php
include 'connection.php';
session_destroy();
// some code which perform search here
?>
这没有帮助,仍然会将我重定向到登录页面。我有什么机会可以解决这个问题吗?
更新:我这是我检查并保存会话的地方
<?php
$request = $_REQUEST;
if(!empty($request)) {
$_SESSION['login'] = false;
if (!empty($_REQUEST['email']) && !empty($_REQUEST['password']) ) {
$password = md5($_REQUEST['password']);
$sql = "select users query";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
$row = $result->fetch_assoc();
if ($row['type'] == 'admin' || $row['type'] == $_REQUEST['type'] ) {
$_SESSION['user']=[
'id' => $row['id'],
'fname' => $row['fname'],
'email' => $row['email'],
];
$_SESSION['login'] = true;
if($_SESSION['user']['type'] == 'admin'){
header('Location: Approval.php');die;
}
}else {
header('Location: signup.php');die;
}
} else { $error = "Wrong Email and/or Password or Account not acitvated. Please try again."; }
}
}
答案 0 :(得分:0)
在你的connection.php文件中,你可以拥有一个包含你想要排除的文件名的数组(在$ request = $ _REQUEST;行之前或之后添加它):
$file_excludes = array("search.php", "anotherfile.php");
然后获取正在运行的当前文件并拆分路径(在行之前添加它if(!empty($ request)){):
$current_file = explode("/", __FILE__);
然后修改一行:
if(!empty($request)) {
要:
if(!empty($request) && !in_array($current_file[count($current_file) - 1], $file_excludes)) {
好的,这是另一个提议的解决方案,现在我有更多信息:
<?php
$current_file = explode("/", __FILE__);
include 'connection.php';
// some code which perform search here
?>
<html>
<head></head>
<body>
search form here
</body>
</html>
将修改后的IF语句保留原样。因此,您只需初始化search.php文件中的$current_file
即可。这有意义吗?