登录空字段成功

问题描述 投票:0回答:3

我慢慢变得疯狂。这次我希望不能点击登录按钮并重定向而不输入用户名或密码。

我试过这个:

Redirect after login example 1

Ridrect after login example 2

直到我最终得到我的书面代码:

<?php 
session_start();
require('../includes/connect_to_db.php'); 

if (isset($_POST['username']) and isset($_POST['password'])){

$username = $_POST['username'];
$password = $_POST['password'];

$query = "SELECT * FROM `user` WHERE username='$username' and password='$password'";

$result = mysqli_query($connection, $query) or die(mysqli_error($connection));
$count = mysqli_num_rows($result);

if (empty($_POST['username'])||
   empty($_POST['password'])){
    $fmsg = "Invalid Login Credentials.";
    }   

if(mysqli_num_rows($result)>0){

$_SESSION['username'] = $username;
header("Location:Loginpage.php");

}else{
$fmsg = "Invalid Login Credentials.";
}
}
if (isset($_SESSION['username'])){

$username = $_SESSION['username'];
}

?>

当我在登录表单中键入任何内容时,它会说:“无效的登录凭据”,但是当我让它们清空并只需点击“登录”时,他就会重定向到显示的页面。我失去了理智,我无法找到我犯的那个该死的错误。

php
3个回答
0
投票
if (isset($_POST['username']) and isset($_POST['password']) and $_POST['username']!='' and $_POST['password']!=''){

你为什么不尝试这样的事情。


0
投票

您可以通过执行以下操作之一来检查用户的条目是否为空:

方法一

if(strlen($_POST['username']) > 0){
    //Then user's input is not empty
}

方法二

if(empty($_POST['username']) == true){
    //Then user's input is not empty
}

方法三

if($_POST['username'] !== ""){
    //Then user's input is not empty
}

在我自己的PHP应用程序中,我将使用方法一和二。


0
投票

您应该首先检查输入是否为空:

if(!empty($_POST['username']) && !empty($_POST['password']) )

或者作为pr1nc3回答,例如:

if (isset($_POST['username']) && isset($_POST['password']) && $_POST['username']!='' && $_POST['password']!=''){

还要检查var_dump($result);的变量$ result来检查查询结果

因为在你的情况下,只要有查询结果,它就会创建会话。

© www.soinside.com 2019 - 2024. All rights reserved.