登录后,PHP登录系统不会显示任何内容

时间:2016-10-07 09:54:07

标签: php html

PHP代码如下:

<html>

<?php


$username = $_POST['user'];
$password = $_POST['pass'];


$username = stripcslashes($username);
$password = stripcslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);


mysql_connect("localhost", "root", "");
mysql_select_db("login");

$result = mysql_query("select * from users where username = '$username' and password = '$password'")
 or die ("Failed to query database ".mysql_error());

$row = mysql_fetch_array($result);

$dbusername = $row['username'];
$dbpassword = $row['password'];

if ($username == $dbusername); {
    echo "login succesfull";
}
else
    {
    echo "failed to login"; 
}



?>


</html>

,登录页面代码为:

<!DOCTYPE html>
<html>
<head>
    <title>Login Page</title>
    <link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>

<img src="WCCS Logo.png" id="schoollogo">
<div id="frm">
    <form action="process.php" method="POST">
        <p>
            <label>Username: </label>
            <input type="text" id="user" name="user"/>


        </p>

        <p>
            <label>Password: </label>
            <input type="password" id="pass" name="pass" />
        </p>

        <p>

            <input type="submit" id="btn" value="login" />
        </p>
    </form>
</div>

</body>

数据库名为login,该表名为users 它包含输入信息的id,用户名,密码,名字和姓氏列。

由于某些未知原因,当我点击提交按钮时,它会显示一个空白页面,虽然网址会更改为页面,当我添加某种类型的文本(如html段落)时会显示它。

所以它进入页面,如果需要也有一个css文件,它在几天前工作,现在它不是。我不明白它有什么问题。

就像PHP甚至无法运行,它只是被忽略了

3 个答案:

答案 0 :(得分:3)

我想澄清几点:

  1. 不推荐使用Mysql,因此现在使用mysqli和PDO是一种很好的做法。

  2. 根据您的代码,您似乎没有在DB中存储加密密码。出于安全目的,您必须加密密码。

  3. 您正在查询自己的用户名和密码,然后为什么要在PHP代码中再次比较它。

  4. 请尝试使用以下代码:

    <?php
        $con=mysqli_connect("localhost","root","","login");
    
        $username = $_POST['user'];
        $password = $_POST['pass'];
        $username = stripcslashes($username);
        $password = stripcslashes($password);
        $username =  mysqli_real_escape_string($con, $username);
        $password =  mysqli_real_escape_string($con, $password);
    
        $result = mysqli_query($con, "select * from users where username = '".$username."' and password = '".$password."'") or die ("Failed to query database ".mysqli_error());
    
        $row = mysqli_fetch_array($result);
    
        if (!empty($row)) {
            echo "login succesfull";
        }
        else{ echo "failed to login"; }
    ?>
    

答案 1 :(得分:2)

$dbusername = $row['username']
$dbpassword = $row['password']

这些也应该改变

$dbusername = $row['username'];
$dbpassword = $row['password'];     

白页(错误已开启)很好地表明您错过了其中一项:()[] {};。

这一行有一个额外的';'。所以改变这个:

 $result = mysql_query("select * from users where username = '$username' and password = '$password'");
 or die ("Failed to query database ".mysql_error());       

到此:

  $result = mysql_query("select * from users where username = '$username' and password = '$password'")
 or die ("Failed to query database ".mysql_error());          

culrpit是password = '$password'"); or die

答案 2 :(得分:2)

几个问题/不良做法......

1:不要在数据库中以明文形式保存密码。使用一些加密,如hash + md5。

2:不要使用mysql。请改用mysqli或PDO。 - &GT; http://php.net/manual/de/book.mysqli.php - &GT; http://php.net/manual/de/book.pdo.php

3:一些逻辑:看看你的SQL查询。您是从用户名和用户名中选择的。 password对应于用户输入的值。那么,这意味着什么?如果查询将找到一个条目,数据将自动更正,因为如果您输入了错误的密码,该语句将不会返回任何数据,因此您的if语句是不必要的。 通过这样做:

$dbusername = $row['username']
$dbpassword = $row['password']

(顺便说一句,在这两行末尾没有丢失)你只是将数据库中返回的数据分配给变量。但它的正确逻辑是$ dbusername将始终对应于$ username,因为正如我所说,你只是以这种方式处理SQL语句。

我认为你对编程很新,或者至少是PHP的新手。我真的建议你看看mysqli和谷歌的一些登录系统,看看这些例子并重写你的代码。

顺便说一下,我不知道你对会话的了解,但我确定你在登录时会开始一个会话,所以这可能是你的另一个关键词可以google。