我已经创建了一个登录/注册系统,注册部分工作正常。但是,现在我正在尝试登录,当您登录时,它应该启动会话并将您重定向到account.php页面,但它没有这样做。它只是刷新页面而不做任何其他事情。
索引页:
<?php
include 'dbh.php';
session_start();
if(isset($_SESSION['id'])){
$result = $conn->query("SELECT * FROM users where id=".$_SESSION['id']);
$row = $result->fetch_array(MYSQLI_BOTH);
}
# REGISTRATION HANDLER
if(isset($_POST['rsubmit'])){
$username = $_POST['username'];
$email = $_POST['email'];
$plainpass = $_POST['password'];
$password = password_hash($plainpass, PASSWORD_BCRYPT, array('cost' => 10));
$sql = "INSERT INTO users (username, email, password) VALUES ('$username', '$email', '$password')";
$result = mysqli_query($conn, $sql);
$btn = "Account created! Please login";
}else {
$btn = "Register";
}
# LOGIN HANDLER
if(isset($_POST['lsubmit'])){
$lemail = $_POST['lemail'];
$lpassword = $_POST['lpassword'];
$result = $conn->query("SELECT * FROM users where email='$lemail'");
$row = $result->fetch_array(MYSQLI_BOTH);
if(password_verify($lpassword, $row['password'])){
$_SESSION['id'] = $row['id'];
Header("Location: account.php");
}
} else {
}
?>
<html>
<head>
<meta charset="UTF-8">
<title>Liam4Life</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="login-page">
<div class="form">
<form class="register-form" action="index.php" method="POST">
<input required name="username" type="text" placeholder="Username"/>
<input required name="rpassword" type="password" placeholder="Password"/>
<input required name="remail" type="email" placeholder="Email address"/>
<button>Register</button>
<p class="message">Already registered? <a href="#">Sign In</a></p>
</form>
<form class="login-form" action="index.php" method="POST">
<input required name="lemail" type="email" placeholder="Email"/>
<input required name="lpassword" type="password" placeholder="Password"/>
<button type="submit" name="lsubmit">Login</button>
<p class="message">Not registered? <a href="#">Create an account</a></p>
</form>
</div>
</div>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src="js/index.js"></script>
</body>
</html>
DBH.php:
<?php
$conn = mysqli_connect("localhost", "root", "", "game");
if (!$conn) {
die("Connection failed: ".mysqli_connect_error());
}
if(isset($_SESSION['id'])){
$_SESSION['username'] = $row['username'];
$_SESSION['email'] = $row['email'];
$_SESSION['password'] = $row['password'];
}
?>
答案 0 :(得分:0)
而不是Header(“Location:account.php”); 使用以下声明
echo“&lt; script&gt; location.href ='account.php'&lt; / script&gt;”;退出;
Jeff提到的问题,可能是因为空间重定向没有发生。如果上述逻辑有效。然后在config /中删除额外的空格,否则需要在index.php文件中添加session_start()作为语句的第一行,并具有标题(“Location:account.php”)逻辑。
注意:要进行调试,请确保通过打印和添加退出语句来控制此处。
答案 1 :(得分:0)
试
索引页:
<?php
session_start();
include 'dbh.php';
-----code---------
?>
DBH.php:
<?php
session_start();
-----code---------
?>
<强> //在session_start();需要给出页面顶部,这里缺少DBH.php。因此$ _SESSION无效
答案 2 :(得分:-1)
尝试下一步方法:
<?php
session_start();
$conn = mysqli_connect("localhost", "root", "", "game");
if (!$conn) {
die("Connection failed: ".mysqli_connect_error());
}
if(!empty($_SESSION['id'])){
$result = $conn->query("SELECT * FROM users where id=".(int)$_SESSION['id']);
if(!$result->num_rows) {
session_destroy();
Header("Refresh:0");
exit;
}
Header("Location: account.php");
exit;
}
# LOGIN HANDLER
if(isset($_POST['lsubmit']) && !empty($_POST['lemail'])){
$lemail = mysqli_real_escape_string($_POST['lemail']);
$result = $conn->query("SELECT * FROM users where email='{$lemail}'");
$row = $result->fetch_array(MYSQLI_BOTH);
if(password_verify($_POST['lpassword'], $row['password'])){
$_SESSION['id'] = $row['id'];
$_SESSION['username'] = $row['username'];
$_SESSION['email'] = $row['email'];
$_SESSION['password'] = $row['password'];
Header("Location: account.php");
exit;
}
}
# REGISTRATION HANDLER
elseif(isset($_POST['rsubmit']) && !empty($_POST['email'])){
$username = mysqli_real_escape_string($_POST['username']);
$email = mysqli_real_escape_string($_POST['email']);
$password = password_hash($_POST['password'], PASSWORD_BCRYPT, array('cost' => 10));
$result = $conn->query("INSERT INTO users (username, email, password) VALUES ('{$username}', '{$email}', '{$password}')");
$btn = "Account created! Please login";
}
?>
<html>
<head>
<meta charset="UTF-8">
<title>Liam4Life</title>
<link rel="stylesheet" href="css/style.css">
</head>
<body>
<div class="login-page">
<div class="form">
<form class="register-form" action="index.php" method="POST">
<input required name="username" type="text" placeholder="Username"/>
<input required name="rpassword" type="password" placeholder="Password"/>
<input required name="remail" type="email" placeholder="Email address"/>
<button>Register</button>
<p class="message">Already registered? <a href="#">Sign In</a></p>
</form>
<form class="login-form" action="index.php" method="POST">
<input required name="lemail" type="email" placeholder="Email"/>
<input required name="lpassword" type="password" placeholder="Password"/>
<button type="submit" name="lsubmit">Login</button>
<p class="message">Not registered? <a href="#">Create an account</a></p>
</form>
</div>
</div>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script src="js/index.js"></script>
</body>
</html>