PHP + MySQL给出空白页,没有错误[关闭]

问题描述 投票:0回答:4

我目前正在使用PHP和MySQL创建用于登录/注册系统的网站。 但是,当尝试登录时,我被重定向到一个空白页(MySQL通常会在其中出现错误)并且无法登录。奇怪的是-注册时不会发生这种情况。 我可以正常注册,然后将我重定向到“仪表板”(成功注册后我设置为指向的位置)。 我不完全确定发生了什么以及登录系统如何崩溃,因为我不记得自从以前就对其进行过任何更改。

但是,在删除die(mysqli_error());时,这被标记为与另一个问题重复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 -->

是否有人对如何解决此问题有任何建议? 非常感谢你!

php mysql mysqli
4个回答
0
投票

我注意到您对表单没有任何操作,因此它可能无法进入正确的页面(除非我错过了什么)。 尝试:

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


0
投票

您在登录表单中的操作在哪里? 你应该有这样的东西

<form action="login.php" method="post" />

如果您尚未指定操作,则除非通过AJAX处理提交,否则提交内容将不会到达您的login.php代码?


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用户名进行注册,但是在上面的代码中,您使用的是电子邮件和密码? 这可能是您注册成功但登录失败的原因吗?


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.