使用PHP重定向到另一个页面

时间:2018-07-11 17:20:58

标签: php

我正在尝试检查天气或用户是否已登录,如果没有登录,则将用户重定向到登录页面。

这是项目结构:

enter image description here

这是index.php:

<?php
include("controller/loginFuncs.php");
checkLogin();
?>
<!DOCTYPE html>
<html>
    [HTML CODE HERE]
</html>

这是loginFuncs.php:

<?php    
function checkLogin() {
    if (!isset($_SESSION['username'])) {
        echo "Calling logout";
        logout();
    }
}

function logout() {
    unset($_SESSION['username'], $_SESSION['fname'], $_SESSION['lname'], $_SESSION['role']);
    include("../views/login.php");
}

在函数logout()中,我也尝试使用header("Location: ../views/login.php");,但是,似乎标头仅用于完整的url,并且由于该项目正在开发中,所以我没有该url,也不会可以在其中硬编码URL,因为域名可能会更改,然后我必须更改代码。我正在寻找在项目结构中使用文件相对路径的解决方案,例如include但include由于某些原因无法正常工作。

如果我加载index.php,则会收到“呼叫注销”消息,但实际上并未包含login.php。产生的页面网址为http://localhost:63342/stm_asc/index.php?_ijt=st357j0vorq8hq8719sq87qga9

如果用户未登录,如何将用户重定向到登录页面?谢谢。

2 个答案:

答案 0 :(得分:1)

您应该使用用户标题功能:

header('location: file.php');

在您的情况下:

header('location: /views/login.php');

访问Header Function

答案 1 :(得分:0)

似乎您正在使用codeigniter。如果是这样,那么这段代码可能会对您有所帮助。

控制器:

public function index()
{
  $this->load->view('login');
}

public function call_login()
{
    $uname = $this->input->post('uname');
    $password = $this->input->post('password');

    $login_result = $this->your_model_name->login_user($uname,$password);

    if($login_result)
    {
        $this->load->view('home');
    }

    else
    {
        $this->load->view('login',$a);
    }
}

型号:

public function login_user($uname,$password)
{
    $query = $this->db->where('uname',$uname)
                    ->where('password',$password)
                    ->get('users');

    if($query->num_rows() == 1)
    {
        return TRUE;
    }

    else
    {
        return FALSE;
    }
}

和您的视图

<!DOCTYPE html>
<html>
<head>
  <title>Login</title>
</head>
<body>
  <form action="call_login" method="post">
    <input type="text" name="uname" placeholder="Enter username">
    <input type="password" name="password" placeholder="Enter password">
    <button type="submit">Login</button>
</body>
</html>

我希望这会对您有所帮助。