我是一般编程新手,想要创建一个注册表单,用户应该在其中自动登录。但是,不会定向到其用户帐户,而是显示上一个登录用户的帐户详细信息。此外,当尝试在 URL 中显示用户 ID 时,不会显示此内容。以下是注册代码:
<?php
session_start();
include "php/config/database.php";
if (isset($_POST['submit'])) {
$FirstName = $_POST['FirstName'];
$Surname = $_POST['Surname'];
$Email = $_POST['Email'];
$dbPassword = $_POST['Password'];
// Check if data exists already in the database
if (empty($FirstName) || empty($Surname) || empty($Email) || empty($dbPassword)) {
echo "sorry no rmpty fields";
}
$exists = mysqli_query($conn, "SELECT Email FROM Users WHERE Email = '$Email'");
$row = mysqli_fetch_array($exists);
$dbEmail = $row['Email'];
if ($Email == $dbEmail) {
die("Username already taken.");
} else {
$sql = "INSERT INTO Users(FirstName,Surname,Email,Password)VALUES('$FirstName','$Surname','$Email','$dbPassword')";
$sqlUserID = mysqli_query($conn, "SELECT UserID FROM Users WHERE UserID = '$UserID'");
$_SESSION['UserID'] = $dbUserID;
$res = mysqli_query($conn, $sql);
if (!$res) {
die("Query Failed!" . mysqli_error($conn));
} else {
$query = mysqli_query($conn, $sql);
$getRow = mysqli_fetch_array($query);
$dbUserID = $getRow['UserID'];
$dbPassword = $getRow['Password'];
if (mysqli_query($conn, $sql)) {
$UserID = $dbUserID;
header("Location: account?UserID=".$UserID);
} else {
echo "Error! There was a problem registering you!";
}
}
}
}
?>
<html>
<head>
<meta charset="UTF-8">
<title>background</title>
</head>
<body>
</body>
</html>
以下是登录代码:
<?php
session_start();
if(isset($_POST['submit'])) {
include("php/config/database.php");
$Email =$_POST['Email'];
$dbPassword =$_POST['Password']);
if(empty($Email) || empty($Password))
{
echo "sorry no rmpty fields";
}
else
{
$Email = mysqli_real_escape_string($conn, $Email);
$dbPassword = mysqli_real_escape_string($conn, $dbPassword);
$dbPassword = md5($dbPassword);
$sql = "SELECT * FROM Users WHERE Email='$Email' LIMIT 1";
$query = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($query);
$UserID = $row['UserID'];
$dbpass = $row['Password'];
if($dbPassword == $dbpass) {
$_SESSION['Email'] = $Email;
$_SESSION['UserID'] = $UserID;
header("Location: account.php");
}
else
{
echo "You didn't enter the correct details!";
}
}
}
?>
<html >
<head>
<meta charset="UTF-8">
<title>background</title>
<link rel="stylesheet" href="css/style.css">
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src="js/index.js"></script>
</head>
<body>
<form action="index.php" method="post">
<div class="box">
<h1 id="logintoregister">
Login
</h1>
<div class="group show">
<input class="inputMaterial" type="text" name="FirstName" />
<label>First Name</label>
</div>
<div class="group show">
<input class="inputMaterial" type="text" name="Surname" />
<label>Surname</label>
</div>
<div class="group">
<input class="inputMaterial" type="email" name="Email" />
<label>Email</label>
</div>
<div class="group">
<input class="inputMaterial" type="password" id="password"
name="Password" /> <label>Password</label>
</div>
<div class="group show">
<input class="inputMaterial" type="password" id=
"confirm_password" /> <label>Confirm Password</label>
</div>
<button id="buttonlogintoregister" type="submit" name="submit">Login</button>
<p id="plogintoregister">
By registering, You accept all terms and conditons
</p>
<p id="textchange" onclick="register()">
Sign Up
</p>
</div>
</form>
<!-- Related demos -->
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src="js/index.js"></script>
</body>
</html>
这行代码根本没有意义:
$sqlUserID = mysqli_query($conn, "SELECT UserID FROM Users WHERE UserID = '$UserID'");
- 您
- 正在尝试选择一个您声称已经拥有的值,那么您究竟在选择什么?
您没有该值,因为从未定义
$UserID
。 所以充其量你是在这样做:$sqlUserID = mysqli_query($conn, "SELECT UserID FROM Users WHERE UserID = ''");
我认为,这不会找到任何记录。 因此,充其量,假设代码中的其他逻辑错误都不会产生运行时中断错误,则这样做:
header("Location: account?UserID=".$UserID);
这将被评估为:
"Location: account?UserID="