仅在某些页面上销毁和取消设置会话

时间:2017-07-04 13:00:22

标签: php session

这里有新手问题,但有可能取消设置的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."; }
    }
}

1 个答案:

答案 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即可。这有意义吗?