登录 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);
这样,您的用户名就会存储在数据库中,密码也会被编码。
我这里有一个登录名 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);
这样,您的用户名就会存储在数据库中,密码也会被编码。