首页 > 解决方案 > 如果未输入用户名/密码,则使页面无法访问。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”

标签: phphtml

解决方案


您没有在登录页面中设置 SESSION 变量,因此一旦检查确定就设置它...。

if(mysqli_num_rows($result) == 1){
    $_SESSION['User'] = $User;
    header('location: hidden.php');
    exit();
}

您还应该更改密码处理并阅读password_hash()

还要查看准备好的语句。


推荐阅读