PHP登录页面为空白而不是回显结果?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (132)

我正在尝试使用PHP和Mysql登录页面。我梳理了我的代码,不知道我哪里出错了。

首先,我有一个“login.php”页面。这是(我相信)是该页面上的重要代码:

<form id="login" action="redirect.php" method="post"> <!--This is the form for logging in.-->    
<fieldset id="inputs">
        <input type="hidden" name="ac" value="log"> <!--This value is a "random" value to post so that an if statement will be entered in select.php-->
        <input id="username" name="username" type="text" placeholder="Username" autofocus required>   
        <input id="password" name="password" type="password" placeholder="Password" required>
    </fieldset>

    <fieldset id="actions">
        <input type="submit" id="submit" value="Log in">    
    </fieldset>

从那里你会看到按下提交时它会转到“redirect.php”,其中包含以下代码:

<?php
include 'config.php';

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

function SignIn()
{
session_start();   //starting the session for user profile page
if(!empty($username))   //check to see if the username is empty or not from login.php
{
    $query = mysqli_query($con, "SELECT *  FROM employees where username = ".$username." AND password = ".$password) or die(mysql_error());
    $row = mysqli_fetch_array($query) or die(mysql_error());
    if(!empty($row['username']) AND !empty($row['password']))
    {
        $_SESSION['username'] = $row['password'];
        echo "SUCCESSFULLY LOGGED IN!";

    }
    else
    {
        echo "YOU ENTERED WRONG ID OR PASSWORD...";
    }
}
}
if(isset($_POST['submit']))
{
    SignIn();
}

?>

您会注意到包含了config.php页面......这是代码(我的dbusername和dbpassword已更改:

<?php
/* Database credentials. */
define('DB_SERVER', 'localhost');
define('DB_USERNAME', 'myusername');
define('DB_PASSWORD', 'mypassword');
define('DB_NAME', 'ropepart_techportal');

/* Attempt to connect to MySQL database */
$con = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);

// Check connection
if($con === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}
?>

当我在我的网页上浏览所有这些内容时,我会在redirect.php上看到一个空白的白页。无论我在login.php页面中放入什么用户名/密码组合,都是这种情况。用户是否确实存在于数据库中。我希望在页面顶部至少得到一句话,或者说“成功登录!” 或者“你输错了密码或密码。” 知道我哪里错了吗?

提问于
用户回答回答于

我在这里同意我们的朋友,你为输入设置了id,但是你需要在请求期间发送set name,但我强烈建议你在你的代码中更改两件事

添加此attr以输入submit - > name="submit"

而不是这个

if(isset($_POST['submit']))
{
    SignIn();
}

用这个

if ($_SERVER['REQUEST_METHOD'] == 'POST') SignIn();

并且不要在代码启动时执行此操作

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

因为当你尝试访问未定义的数组时,php可以输出错误,并且出于某些安全原因不建议这样做,所以在设置变量之前,请检查它,如下所示:

if (isset($_POST['username']) $username = $_POST['username'];
用户回答回答于

你没有submit在邮政体内发送价值。

尝试添加:

<input type="submit" name="submit" id="submit" value="Log in">    

因为您已经检查了isset($_POST['submit'])哪个,因为您没有将评估结果发送为false,并且SignIn()从未被调用过

扫码关注云+社区

领取腾讯云代金券