登录失败

时间:2015-01-09 03:38:31

标签: php login

我已经尝试过登录但它无法正常工作,当我登录时,它只是留在空白页面。没有出现任何错误。

我在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。没有显示错误。

我所做的是:

  1. 我只是放了ini_set('display_errors',1);,但仍然没有显示任何错误。
  2. 我检查了dbconnect.php,index.php和login.php之间的连接到dbconnect.php的连接非常好。
  3. 仍然没有显示像screenshot这样的任何迹象。我错过了什么吗?

3 个答案:

答案 0 :(得分:0)

标题(“位置:../ index.php”);需要后面跟一个退出声明

header("Location: ../whatever.php");
exit;

http://php.net/manual/en/function.header.php

答案 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'])) { 
..........................