我已经尝试过登录但它无法正常工作,当我登录时,它只是留在空白页面。没有出现任何错误。
我在index.php中创建了一个表单。如果用户未注销,则会在页面上输出用户名。如果用户没有登录,它将显示登录表单。以下代码:
<div class="topRight">
<?php
ini_set('display_errors',1);
error_reporting(E_ALL);
include "config/dbconnect.php";
if(isset($_SESSION['login'])&&!empty($_SESSION['login'])) {
$name = $_SESSION['user_info']['name'];
echo '<p> <a href="profileUser"> Profile : $name </a>';
} else {
echo '<form action="actions/login.php" method="POST">
<input type="text" name="email" placeholder="Email">
<input type="password" name="password" placeholder="Password">
<input type="submit" value="LOGIN">
</form>';
echo '<p> <a href="registerForm.php" class="underline"> Not a member? Register here! </a> </p>
<p> <a href="actions/logout.php"> Logout </a> </p>';
}
?>
</div>
登录后,它将直接登录login.php,如下所示:
<?php
ob_start();
session_start();
ini_set('display_errors', 1);
error_reporting(-1);
?>
<?php
include "../config/dbconnect.php";
if(isset($_POST['submit'])) {
$username = trim($_POST['email']);
$password = trim($_POST['password']);
$username = $mysqli->real_escape_string($username);
$password = $mysqli->real_escape_string($password);
$salt = sha1(md5($password));
$epwd = md5($password.$salt);
$loginUser = " SELECT * FROM memberTable
WHERE email = '$email' AND password = '$epwd'";
$loginSuccess = mysqli_query($mysqli, $loginUser) or die(mysqli_error($mysqli));
$loginRow = mysqli_num_rows($loginSuccess);
if($loginRow === 1) {
session_start();
$_SESSION['login'] = true;
$user_info = mysqli_fetch_assoc($loginSuccess);
$_SESSION['user_info'] = $user_info; // put user_info to call all details for later use
header ("Location: ../index.php");
} else {
header ("Location: ../header.php");
}
mysqli_close($mysqli);
}
?>
dbconnect.php的以下代码如下:
<?php
//Open a new connection to the MySQL server
$mysqli = new mysqli('localhost','root','root','database_name');
//Output any connection error
if ($mysqli->connect_error) {
die('Error : ('. $mysqli->connect_errno .') '. $mysqli->connect_error);
}
?>
结果是当我使用表单登录时,它成功导航到login.php。但它只是停在那里有一个空白页面,而不是重定向到index.php。没有显示错误。
我所做的是:
ini_set('display_errors',1);
,但仍然没有显示任何错误。仍然没有显示像screenshot这样的任何迹象。我错过了什么吗?
答案 0 :(得分:0)
标题(“位置:../ index.php”);需要后面跟一个退出声明
header("Location: ../whatever.php");
exit;
答案 1 :(得分:0)
你在两个地方开始session
就足够了,那么你还需要检查$ _SESSION ['user_info'] var_dump($_SESSION['user_info']);die();
中设置的$ user_info值
之后删除header ();
header();
现在你尝试了在屏幕上找到的内容,
答案 2 :(得分:0)
每当你使用header()时,我们必须确保输出之前不能启动。结果为空行输出。
?>
<?php
必须在发送任何实际输出之前调用header(),无论是普通HTML标记,文件中的空行还是PHP 您在
之间添加了一些空格<?php
ob_start();
session_start();
ini_set('display_errors', 1);
error_reporting(-1);
?>
<?php
include "../config/dbconnect.php";
尝试如下所示,然后重试。
<?php
ob_start();
session_start();
ini_set('display_errors', 1);
error_reporting(-1);
include "../config/dbconnect.php";
if(isset($_POST['submit'])) {
..........................