首页 > 解决方案 > 如何从登录页面检查 PHP 会话

问题描述

我有两个用 PHP 制作的页面,索引(使用它作为登录页面)和主页(这个应该受到保护)。索引页面有一个只要求输入密码的登录表单(没有用户打算)。

我想这样做: 1. 当您在索引页面输入密码时,如果密码正确,网站会将您重定向到主页。如果密码不正确,它会提醒您。2. 如果您没有在索引页面上输入密码,则主页应该不可见。如果您输入了它,那么您将能够看到主页。

我发现最简单的方法是使用 PHP 会话检查来实现它,但它不适用于我的代码,所以你能帮帮我吗?

所以这是我的索引页面的 PHP 代码。在这里,站点需要检查(通用的,所有的)密码是否正确,如果是,则需要重定向到主站点,或者如果不显示一些警告框。

<?php
    session_start();
    $password = '1234';

    if($_POST['password'] == $password){
        //Create session
            $_SESSION['session'] = 1;


        // If correct redirect to main
            header('Location: http://www.example.com/main');
            exit;
    }
    else {
        // If not correct stay on index (do nothing)
    }
?>

代码我的主页看起来像这样。这是站点应该检查用户是否有会话的地方,然后决定他是否能够看到该站点(如果不能,它应该重定向到登录索引)。

<?php 
session_start();
  if (!isset($_SESSION["session"]))
   {
      header("location: http://example.com/index");
   }
?>

我用谷歌搜索了所有内容,但没有找到可行的解决方案。有没有更好的方法来实现这一点,或者你能帮我解决它吗?那么 TLDR,如何使用登录密码保护主页(没有用户,每个人的密码相同)?

目前此代码不起作用。当我在索引上输入密码时,它会重定向到主目录。但主页没有会话检查工作。如果用户没有会话,它只是显示所有内容而不重定向到登录索引。

标签: phphtmlauthenticationsessionredirect

解决方案


好的..对不起我的第一个建议。这显然不是一个解决方案。但如果我理解正确的话。这是我的工作方法:

索引.php

<?php
session_start();
$password = '1234';

// Check if the user is not already logged in
if (isset($_SESSION['login'])) {
    header('Location: main.php');
}

// Check if the form is submitted
if (isset($_POST['submit'])) {
    if ($_POST['password'] == $password) {
        $_SESSION['login'] = true;
        header('Location: main.php');
    }
}
?>

有形式

<form action="" method="post">
    <input class="upisnopolje" type="password" name="password" placeholder="Unesite kod" required>
    <input class="upisnopolje" id="upisnopoljefix" type="submit" name="submit" value="Ok">
</form>

主文件

<?php
session_start();

// Check if user is logged in
if (!isset($_SESSION["login"])) {
    header("location: index.php");
}

if ( isset( $_POST['submit'] ) ) {
    unset($_SESSION["login"]);
    header("location: index.php");
}
?>

用表格注销

<form action="" method="post">
    <input type="submit" name="submit" value="Log out">
</form>

请注意,提交按钮需要name="submit"进行$_POST['submit']检查。

希望能帮助到你。


推荐阅读