PHP 登录/ session 在提交时死亡

标签 php mysql session authentication

我成功创建了一个连接到 MySQL 并插入新用户信息的注册表单。然而,当需要登录并创建 session 时,一旦我单击“提交”,似乎一切都消失了。无论我是否填写了任何内容,正确或错误,屏幕都会刷新并且没有错误输出。任何帮助将不胜感激!

注册.php

<?php

include("authorized.php");

if(isset($_POST["submit"])){
    $name = $_POST["name"];
    $email = $_POST["email"];
    $password = $_POST["password"];

    //What does real escape string do?
    $name = mysqli_real_escape_string($connect, $name);
    $email = mysqli_real_escape_string($connect, $email);
    $password = mysqli_real_escape_string($connect, $password);
    $password = md5($password);

    $q = "SELECT email FROM users WHERE email='$email'";
    $result = mysqli_query($connect, $q);
    $row = mysqli_fetch_array($result, MYSQLI_ASSOC);

    if(mysqli_num_rows($result) == 1)
    {
        echo "Email already exists.";
    } else {
        $query = mysqli_query($connect, "INSERT INTO users (name, email, password) VALUES ('$name', '$email', '$password')");

        if($query){
            echo "Thank you for registering.";
            header("location: dashboard.php"); 
        }
    }


}

?>
<div class="ui center aligned container">
<form method="post" action="">
<fieldset>
<legend>Registration Form</legend>
<table width="400" border="0" cellpadding="10" cellspacing="10">
<tr>
<td style="font-weight: bold"><div align="right"><label for="name">Name</label></div></td>
<td><input name="name" type="text" class="input" size="25" required /></td>
</tr>
<tr>
<td style="font-weight: bold"><div align="right"><label for="email">Email</label></div></td>
<td><input name="email" type="email" class="input" size="25" required /></td>
</tr>
<tr>
<td height="23" style="font-weight: bold"><div align="right"><label for="password">Password</label></div></td>
<td><input name="password" type="password" class="input" size="25" required /></td>
</tr>
<tr>
<td height="23"></td>
<td><div align="right">
  <input type="submit" name="submit" value="Register!" />
</div></td>
</tr>
</table>
</fieldset>
</form>
</div>

登录.php

   <?php
session_start();
include("includes/connect.php"); //Establishing connection with our database

$error = ""; //Variable for storing our errors.
if(isset($_POST["submit"]))
{
if(empty($_POST["username"]) || empty($_POST["password"]))
{
$error = "Both fields are required.";
}else
{
// Define $username and $password
$username=$_POST['username'];
$password=$_POST['password'];

// To protect from MySQL injection
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysqli_real_escape_string($db, $username);
$password = mysqli_real_escape_string($db, $password);
$password = md5($password);

//Check username and password from database
$sql="SELECT id FROM users WHERE email='$username' and password='$password'";
$result=mysqli_query($db,$sql);
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);

print_r($row);

//If username and password exist in our database then create a session.
//Otherwise echo error.

if(mysqli_num_rows($result) == 1)
{
$_SESSION['username'] = $login_user; // Initializing Session
header("location: home.php"); // Redirecting To Other Page
}else
{
$error = "Incorrect username or password.";
}

}
}

?>

<div class="ui container center aligned">
<h1>PHP Login Form with Session</h1>
<div class="loginBox">
<h3>Login Form</h3>
<br><br>
<form method="post" action="">
<label>Username:</label><br>
<input type="text" name="username" placeholder="username" /><br><br>
<label>Password:</label><br>
<input type="password" name="password" placeholder="password" />  <br><br>
<input type="submit" value="Login" /> 
</form>
<div class="error"><?php echo $error;?></div>
</div>
</div>

最佳答案

编辑

<input type="submit" value="Login" />

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

关于PHP 登录/ session 在提交时死亡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33987934/

相关文章:

php - 将数组中键的数据类型从数字更改为字符串

php - MongoDB查询日期

mysql - 结果集是 1 条记录的对象,多条记录的数组?

session - ActiveMQ session 的AUTO_ACKNOWLEDGE属性影响

php - 传递数据 MySQL -> PHP -> JSON

php - 脚本执行后如何保存用户在表单页面输入的数据?

java - 将Mysql表内容(sql查询返回的行)推送到java hashmap中

mysql - 对同一列进行多次计数并插入到另一个表中

session - JMeter 登录一次并执行多次操作

java - session 变量在 Jquery 发布的脚本中不可见?