登录表单PHP只返回空白字段

时间:2016-02-19 13:39:14

标签: php forms mysqli

我的登录表单存在问题。我尝试使用PHP和MySQLi登录,但出于某种原因每次按下登录按钮。表单中的字段重置为空白字段。这是我的代码index.php



<html>

<head>

<title>User Login</title>

</head>

<body>

<form action="" method="post">

<table width="500" align="center" bgcolor="skyblue">

<tr align="center">

<td colspan="3"><h2>User Login</h2></td>

</tr>

<tr>

<td align="right"><b>Email</b></td>

<td><input type="text" name="email" required="required"/></td>

</tr>

<tr>

<td align="right"><b>Password:</b></td>

<td><input type="password" name="pass" required="required"></td>

</tr>

<tr align="center">

<td colspan="3">

<input type="submit" name="login" value="Login">

</td>

</tr>

</table>

</form>

</body>

</html>

<?php

session_start();
$con = mysqli_connect("localhost","root","usbw","login");

if (mysqli_connect_errno())

{

    echo "MySQLi Connection was not established:"  . mysqli_connect_error();

}

// checking the user

if(isset($_POST['login'])){

  $email = mysqli_real_escape_string($con,$_POST['email']);
  $pass = mysqli_real_escape_string($con,$_POST['pass']);
  $sel_user = "SELECT * FROM users WHERE user_email='".$email."' AND user_pass='".$pass."'";
    echo $sel_user;
    $run_user = mysqli_query($con, $sel_user);
    $check_user = mysqli_num_rows($run_user);
    echo $check_user;
    if($check_user == 1){
    $_SESSION['user_email']=$email;
    header('Location: loggedin.html');  }
    else {  header('Location: index.html'); }
}
?>
&#13;
&#13;
&#13;

我希望有人可以帮我解决这个问题,因为我真的需要为我的网站构建一个登录表单

2 个答案:

答案 0 :(得分:1)

我想指出有关您的代码的一些事项,但您一直遇到的主要问题是您在调用session_start();和{{1}之前发送标题} 功能。这会导致“已发送标头”警告,并且不会中断您的脚本,但它将无法正常运行。你应该阅读How to fix "Headers already sent" error in PHP

下面的代码也有所改变,我对它做了一些改变,你真的应该包括

下面给出了更改后的代码,并且应该放在任何类型的HTML之上。

header("Location ..");

你真正应该做的事情是哈希你的密码 - 从它的外观来看,你的密码存储在数据库中的干净文本中,这是一个大不了-no!

您应该使用password_hash()password_verify()。如果您的数据库遭到破坏,保护您的用户非常重要。

要进一步排查,您应该启用错误报告:

启用此功能后,如果只检查日志,PHP会告诉您出错了。

答案 1 :(得分:0)

老兄试试这个

<html>

<head>

<title>User Login</title>

</head>

<body>

<form action="" method="post">

<table width="500" align="center" bgcolor="skyblue">

<tr align="center">

<td colspan="3"><h2>User Login</h2></td>

</tr>

<tr>

<td align="right"><b>Email</b></td>

<td><input type="text" name="email" required="required"/></td>

</tr>

<tr>

<td align="right"><b>Password:</b></td>

<td><input type="password" name="pass" required="required"></td>

</tr>

<tr align="center">

<td colspan="3">

<input type="submit" name="login" value="Login">

</td>

</tr>

</table>

</form>

</body>

</html>

<?php

session_start();
$con = mysqli_connect("localhost","root","usbw","users");

if (mysqli_connect_errno())

{

    echo "MySQLi Connection was not established:"  . mysqli_connect_error();

}

// checking the user

if(isset($_POST['login'])){

    $email = mysqli_real_escape_string($con,$_POST['email']);

    $pass = mysqli_real_escape_string($con,$_POST['pass']);

    $sel_user = "SELECT * FROM users WHERE user_email='".$email."' AND user_pass='".$pass."'";

    $run_user = mysqli_query($con, $sel_user);

    $check_user = mysqli_num_rows($run_user);

    if($check_user == 1){

        $_SESSION['user_email']=$email;

        header('Location: loggedin.html');

    }

    else {
        header('Location: index.html');

    }

}

?>