php - 如果未输入用户名/密码,则使页面无法访问。PHP
问题描述
好吧,我知道有很多这样的线程。但我已经尝试了他们在评论中所说的一切,但没有任何结果。所以我想我必须在这里尝试一下......
基本上,我在“Login.html”有一个登录表单,您可以在其中键入“用户名(名称=用户 ID)”和“密码”,这会将您重定向到“登录.php”以确保写入用户名和密码,如果是的,它应该再次将您重定向到“hidden.php”..如果我删除它就可以了
<?php
session_start();
if(!isset($_SESSION['User']))
{
header('location: login.php');
exit();
}
?>
这一行来自“hidden.php”的顶部。
但另一方面,如果人们只是输入“/hidden.php”而不输入密码,它应该将您重定向到“Login.php”,这无论如何都不起作用。我搜索了很多,发现了关于它,但他们都没有真正在我的情况下工作。
<?php
session_start();
$serverName = "den1.mysql2.gear.host";
$username = "lexidatabaseweb";
$password = "*";
$db = "lexidatabaseweb";
//Create connection
$conn = mysqli_connect($serverName, $username, $password, $db);
if(isset($_POST['userId']))
{
$User=$_POST['userId'];
$Pass=$_POST['passId'];
$sql = "SELECT * from tbl_register WHERE Username= '".$User."' AND Password = '".$Pass."' limit 1";
$result = mysqli_query($conn, $sql);
if(mysqli_num_rows($result) == 1){
header('location: hidden.php');
exit();
}
else{
echo" <label style='color:red;'> Wrong username / password.</label>";
exit();
}
}
else
{
echo "Invalid request";
}
?>
您可以在上面看到的代码来自“Login.php”
解决方案
您没有在登录页面中设置 SESSION 变量,因此一旦检查确定就设置它...。
if(mysqli_num_rows($result) == 1){
$_SESSION['User'] = $User;
header('location: hidden.php');
exit();
}
您还应该更改密码处理并阅读password_hash()
还要查看准备好的语句。
推荐阅读
- html - 在 SCSS 中迭代变量?
- amazon-web-services - Dockerfile 中的 AWS 凭证
- c# - 在 ICollection 中绑定附加元素
不破坏 EF EDMX - http-live-streaming - MPEG-DASH 使用编码流缓冲区实时流式传输
- java - 使用 Firebase 和 Android 的通知
- slideshow - w3.css 幻灯片:如何在自动幻灯片中添加放大图像
- javascript - 将固定尺寸的物品放入固定尺寸的父代中,并留下不适合的物品
- ruby - Rails:在任何源中都找不到 concurrent-ruby-1.0.5 (Bundler::GemNotFound)
- firebase - Firebase Cloud Functions 使用 NPM 8 部署异步函数
- python - Tensorflow:无法使用数据集 API 创建具有相应标签的数据集