php - 如何从登录页面检查 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,如何使用登录密码保护主页(没有用户,每个人的密码相同)?
目前此代码不起作用。当我在索引上输入密码时,它会重定向到主目录。但主页没有会话检查工作。如果用户没有会话,它只是显示所有内容而不重定向到登录索引。
解决方案
好的..对不起我的第一个建议。这显然不是一个解决方案。但如果我理解正确的话。这是我的工作方法:
索引.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']
检查。
希望能帮助到你。
推荐阅读
- node.js - NestJS Jest 找不到具有绝对路径的模块
- javascript - 在 onPress 中调用 2 函数(导航和提交表单)
- c# - 导出 Unity 3D 游戏
- java - 休眠:无法删除引用的实体
- php - Laravel Collection with Where(), Min() & pluck() 问题
- wordpress - WooCommerce REST API v3 - 按修改日期过滤产品
- kubernetes - 未成功初始化的 SSH kubernetes pod
- python - 使用迭代在python中找到最小的k
- python - 无法解释正则化标识符:
- android - 如何使用 poll(2) 或 select(2) 服务调用来观察伪文件的 Kotlin 更改