登录 php 脚本

Login php script

我这里有一个登录名 script.I 从数据库中删除 username/password 到 post 它在 stack.My 问题是它告诉我每次我写用户名和密码和用户名是 invalid.I 的密码(即使它们是正确的)显然使用了 select *from ...... 然后放置一个变量 $rows 来计算受影响的行,但它的值每次都是 0,我无法登录。

<h1>Log in</h1>
<form action="" method="post">

    Username:<input type="text" name="username" placeholder="username" value=""/> <br />

    Password:<input type="password" name="password" placeholder="*******" value=""/> <br />

    <input type="submit" name="submit" value="Log In" />
             <br />


</form>





    <?php

    $error=''; 
    if (isset($_POST['submit'])) {
    if (empty($_POST['username']) || empty($_POST['password'])) {
    $error = "Username or Password is empty";
    echo $error;
    }
    else
    {

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

    $connection = mysql_connect("mysql.hostinger.ro", "_patr0", "  ");

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

    $db = mysql_select_db("_ppl", $connection);



    $query = mysql_query("select * from people where pw='$password' AND username='$username'", $connection);


    $rows=mysql_num_rows($query);

    if ($rows==1) {


    /*$_SESSION['login_user']=$username;*/ // Initializing Session


    echo 'You are logged in';
    } else {
    $error = "Username or Password is invalid";
    }
    echo $error;
    mysql_close($connection); // Closing Connection
    }
    }
    ?>

Yes I am sure.David I stored the passwords using aes_encrypt('$password','text')

这可能是您的问题,当您在此处 运行 您的 mysql 查询时,您试图匹配用户输入的纯文本密码,但您将它们存储为加密字符串。您需要在 SQL 查询中加密密码。

查看您的代码(同时跳过不重要的部分):

$username=$_POST['username'];
$password=$_POST['password'];
...
$username = stripslashes($username);
$password = stripslashes($password);
$username = mysql_real_escape_string($username);
$password = mysql_real_escape_string($password);
...
$query = mysql_query("select * from people where pw='$password' AND username='$username'", $connection);

你实际做的是获取纯文本的用户名和密码,并将其转换为数据库不会损坏的格式,如果对纯文本使用奇怪的格式字符,那么你将其与数据库中的值。

在做任何其他事情之前,运行 phpmyadmin、mysql 命令行服务器或其他您可以实际提取您的人员内容的东西 table。

然后输入此 sql 查询:

select * from people;

或选择显示人员中的所有记录 table 选项(如果它存在于您的数据库管理器中)。

上下滚动屏幕并在用户名和密码字段中查找项目以查看它们是什么。

如果它看起来像乱码,那么 table 中的信息很可能是经过编码的。

要么更改数据库数据,使用户名和密码为纯文本,并在表单的文本框中使用相同的相应值,以确保一切正常。

一旦一切正常,您就需要为 table 中的数据创建某种编码。

试试这个(假设 $imported_username 和 $imported_password 的用户名和密码字段的值采用数据库友好格式(就像您在代码顶部附近所做的那样)):

在您的注册脚本中插入以下语句以创建记录:

$user=$imported_username;
$pass=md5($imported_password);
$query = mysql_query("insert into people (username,pw) values('$user','$pass')", $connection);

然后在您的登录处理脚本中,更改:

$query = mysql_query("select * from people where pw='$password' AND username='$username'", $connection);

至:

$query = mysql_query("select * from people where pw='".md5($password)."' AND username='$username'", $connection);

这样,您的用户名就会存储在数据库中,密码也会被编码。