PHP + MySQL给出空白页面没有错误

时间:2016-06-22 20:15:36

标签: php mysql mysqli

我目前正在使用PHP和MySQL为登录/注册系统创建一个网站。但是,当我尝试登录时,我被重定向到一个空白页面(MySQL通常会出错)并且无法登录。奇怪的是 - 注册时不会发生这种情况。我可以正常注册,然后我被重定向到"仪表板" (我成功注册后指定的地方)。我不完全确定发生了什么以及登录系统是如何破坏的,因为我不记得以前用它来改变任何东西。

这被标记为另一个问题的副本,但是当从我的代码中删除die(mysqli_error());时,白屏消失了,我只是收到一条错误消息,告诉我我的凭据不正确(不是PHP / MySQL错误)消息,我定义的$ error消息。

我的代码如下。

的login.php

<?php

        include("connection.php");
        session_start();

        if ($_GET["logout"]==1 AND $_SESSION['id']) {
            session_destroy();
            // $message="You have been logged out. Have a nice day!";
            session_start();
        }

        if(isset($_SESSION['id'])){ // if id in session is set
            header("Location: /developer/dashboard");
        }

        if ($_POST['submit']=="Sign Up") {

            if (!$_POST['username']) $error.="<br />Please enter a username";

            if (!$_POST['email']) $error.="<br />Please enter your email";
                else if (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) $error.="<br />Please enter a valid email";

        if (!$_POST['password']) $error.="<br />Please enter your password";
        else {

            if (strlen($_POST['password'])<8) $error.="<br />Please enter at least 8 characters";

            if(!preg_match('/[A-Z]/', $_POST['password'])) $error.= "<br />Please include at least 1 capital letter";
        }
            if ($error) $error = "Your account could not be created due to the following:".$error;

            else {

            $query= "SELECT * FROM `users` WHERE email ='".mysqli_real_escape_string($link, $_POST['email'])."'";

            $result = mysqli_query($link, $query); 
            $results = mysqli_num_rows($result);

            if ($results) $error = "That email is already registered. Did you mean to log in?";
            else {
            $query = "INSERT INTO `users` (`username`, `email`, `password`) VALUES ('".mysqli_real_escape_string($link, $_POST['username'])."', '".mysqli_real_escape_string($link, $_POST['email'])."', '".md5(md5($_POST['username']).$_POST['password'])."')";

            mysqli_query($link, $query);
            $success="Successfully signed up.";
            $_SESSION['id']= mysqli_insert_id($link);
            header("Location:../dashboard");
            }  
        }
    }

    if ($_POST['submit'] == "Log In") {
        $query = "SELECT * FROM users WHERE email='".mysqli_real_escape_string($link, $_POST['loginemail'])."'AND
        password='" .md5(md5($_POST['loginemail']) .$_POST['loginpassword']). "'LIMIT 1";
        $result = mysqli_query($link, $query);
        $row = mysqli_fetch_array($result);
        if($row){
            $_SESSION['id']=$row['id'];
            header("Location:../dashboard");
        } else {
            $error = "That email and password combination did not return any results. Please try again.";
die(mysqli_error());
        }
    }

loginpage.php(登录页面HTML)

<body>
    <div class="container">
      <form class="form-signin" method="post">
        <h3 class="form-signin-heading">Welcome back!</h3>
        <label for="inputEmail" class="sr-only">Email address</label>
        <input type="email" name="loginemail" id="inputEmail" placeholder="Email address" class="form-control" value="<?php echo addslashes($_POST['loginemail']); ?>" required autofocus />
        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" name="loginpassword" id="inputPassword" placeholder="Password" class="form-control" value="<?php echo addslashes($_POST['loginpassword']); ?>" required />
        <button class="btn btn-lg btn-primary btn-block" type="submit" name="submit" value="Log In">Log In</button>
        <br />
        <div class="alternateAcc" style="font-weight:lighter;"><p>Don't have an account? <a href="../create">Register</a></p>
        <a href="/developer/">&laquo; Back</a></div>
      </form>
    </div> <!-- /container -->

signuppage.php(注册页面HTML)

<body>

    <div class="container">
      <form class="form-signin" method="post">
        <h3 class="form-signin-heading">Create an Account</h3>
        <label for="inputUsername" class="sr-only">Username</label>
        <input type="username" name="username" id="inputUsername" class="form-control" placeholder="Username" value="<? echo addslashes($_POST['username']); ?>" required autofocus />
        <label for="inputEmail" class="sr-only">Email address</label>
        <input type="email" name="email" id="inputEmail" class="form-control" placeholder="Email address" value="<? echo addslashes($_POST['email']); ?>" required />
        <label for="inputPassword" class="sr-only">Password</label>
        <input type="password" name="password" id="inputPassword" class="form-control" placeholder="Password" value="<? echo addslashes($_POST['password']); ?>" required />
        <button class="btn btn-lg btn-primary btn-block" type="submit" name="submit" value="Sign Up">Continue</button>
        <br />
        <div class="alternateAcc" style="font-weight:lighter;"><p>Already have an account? <a href="../login">Log In</a></p>
        <a href="/developer/">&laquo; Back</a></div>
      </form>
    </div> <!-- /container -->

有没有人对如何解决这个问题有任何指示? 非常感谢你!

4 个答案:

答案 0 :(得分:0)

我注意到你没有对你的表单采取任何行动,因此它可能无法进入正确的页面(除非我遗漏了某些内容)。 尝试:

<form class="form-signin" method="post" action="login.php">

答案 1 :(得分:0)

您在登录表单中的操作在哪里?你应该有像

这样的东西
<form action="login.php" method="post" />

如果您尚未指定操作,则提交将无法访问您的login.php代码,除非您通过AJAX进行处理?

答案 2 :(得分:0)

看看这行代码:

if ($_POST['submit'] == "Log In") {
    $query = "SELECT * FROM users WHERE email='".mysqli_real_escape_string($link, $_POST['loginemail'])."'AND
    password='" .md5(md5($_POST['loginemail']) .$_POST['loginpassword']). "'LIMIT 1";

您正在使用与密码连接的MD5用户名注册,但在上面的代码中您使用的是电子邮件和密码?这可能是您的注册工作但登录失败的原因吗?

答案 3 :(得分:0)

该问题最终与phpMyAdmin中的MySQL数据库相关。

无论如何,感谢大家的帮助!