使用数据库的php登录脚本
你好,我在一个登录页面上工作,我有一个问题,当我输入用户名并登录页面时,会更改为错误的用户名或密码 它似乎没有登录到login_success.php,这导致人们认为问题在于sql语法,但我还没有找到原因的答案。我还认为它可能是if($count==1){并且尝试($count>1){但没有成功 我在网上搜索过,尝试过几种不同的方法,但都不管用。我是新手,将研究阻止sqlinjection的方法,但是这个网站不是实时的,只是为了练习:)这个社区对我的学习有很大的帮助。提前谢谢大家 HTML LoginPage.HTML使用数据库的php登录脚本,php,html,mysql,Php,Html,Mysql,你好,我在一个登录页面上工作,我有一个问题,当我输入用户名并登录页面时,会更改为错误的用户名或密码 它似乎没有登录到login_success.php,这导致人们认为问题在于sql语法,但我还没有找到原因的答案。我还认为它可能是if($count==1){并且尝试($count>1){但没有成功 我在网上搜索过,尝试过几种不同的方法,但都不管用。我是新手,将研究阻止sqlinjection的方法,但是这个网站不是实时的,只是为了练习:)这个社区对我的学习有很大的帮助。提前谢谢大家 HTML Lo
<form id=login name="login" action="login.php" method="post">
<fieldset id=fs>
<legend>Vault Security Console:</legend>
<!-- legeng tage creates a header title for the fieldset box, filedset pulls all data in the tag to gether with a box around it. -->
UserName: <input type="text" name="username"> <br>
Password: <input type="password" name="password"> <br>
<input type="submit" value="Login"> <input type="submit" value="Register">
</fieldset>
</form>
Vault安全控制台:
用户名:
密码:
php Login.php
<?php
// Create connection
$con=mysqli_connect('172.16.254.111',"user","password","Faults"); //(connection location , username to sql, password to sql, name of db)
// Check connection
if (mysqli_connect_errno($con))
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
//below is the variables from the login form
$username = $_POST['username'];
$password = md5(strip_tags($_POST['password']));
$sql="SELECT * FROM Users WHERE username='.addslashes($username).' and password='.addslashes($password).'";
$result=mysqli_query($sql);
//Mysql_num_row is counting table row
$count=mysqli_num_rows($result);
if($count==1){
session_register("username");
session_register("password");
header('location:login_success.php');
}
//if false echo below
else {
echo "<H2>Wrong Username or Password</H2>";
}
?>
请按上述方式修改您的查询语句
请按上述方式修改您的查询语句。试试这个
<?php
//below is the variables from the login form
$username = mysqli_real_escape_string($con, $_POST['username']);
$password = md5($_POST['password']);
$sql="SELECT * FROM Users WHERE username='$username' and password='$password'";
$result=mysqli_query($sql);
?>
试试这个
<?php
//below is the variables from the login form
$username = mysqli_real_escape_string($con, $_POST['username']);
$password = md5($_POST['password']);
$sql="SELECT * FROM Users WHERE username='$username' and password='$password'";
$result=mysqli_query($sql);
?>
我认为用户名或密码有问题。
您必须遵循以下步骤:-
选择登录用户对应的密码
将其与脚本生成的编码密码进行比较
我认为用户名或密码有问题。
您必须遵循以下步骤:-
选择登录用户对应的密码
将其与脚本生成的编码密码进行比较
回显查询,然后检查输出内容并将其与数据库匹配请勿使用session_register()。它是为早期PHP4时代构建的,当时使用了register_globals。您现在不想使用它,因为它需要全局变量才能运行。检查我认为您的查询有问题。$sql=“从用户名=”.addslashes($username)的用户中选择*和密码=”.addslashes($password)。”;
IMO这会将.addslashes()添加到您的查询中,而不是转义字符串,然后将其添加到查询中。尝试像这样编辑它:$sql=“从用户名=”.addslashes($username)的用户中选择*。“'和密码=”.addslashes($password)。”“;
查询的连接已中断。另外,addslashes()
是错误的选择。请改为尝试一个准备好的语句。jakolcz:这不起作用。只需返回else{echocho查询,然后检查输出内容并将其与数据库匹配。不要使用session_register()。它是为早期PHP4时代创建的,当时使用了register_globals。您现在不想使用它,因为它需要全局变量才能正常工作。检查一下,我认为您的查询有问题。$sql=“SELECT*FROM username=”.addslashes($username)。“password=”.addslashes($password)。;
IMO这是添加了.addslashes()您可以查询,而不是转义字符串,然后将其添加到查询中。请尝试按如下方式编辑它:$sql=“SELECT*FROM username=”。addslashes($username)。“'和password=”。addslashes($password)。
查询的连接已中断。另外addslashes()
是错误的选择。请尝试一个预先准备好的语句。jakolcz:这不起作用。只需在每个结果中返回else{echotry一个echo,如下所示:if($count==1){echo'a';}else{echo'b';}这样您就可以看到if发生了什么。第二,您在数据库中加密了密码了吗?试试这些,告诉我,尝试这样做:$sql=”选择*FROM username='$username';确定,然后尝试回显用户名,然后从浏览器复制并粘贴到数据库中。然后重试。然后,sql语法出现问题。确保数据库中的字段用户名与此完全相同(而非用户名或用户名等)。然后尝试以下操作:$sql=”从username='$username''的用户中选择username;然后尝试echo$count;我很高兴我帮了你!:)会话既酷又简单!提示:不要忘记页面顶部的session_start()!也要阅读此内容,尽量不要使用不推荐的代码,搜索两次!在每个结果中尝试echo,如下所示:if($count==1){echo'a';}else{echo'b'}这样,您就可以看到if发生了什么。第二,您在数据库中加密了密码了吗?请尝试告诉我,然后尝试这样做:$sql=“SELECT*FROM username=”$username'“确定,然后尝试回显用户名,然后从thw浏览器复制并粘贴到数据库中。然后重试。然后sql语法出现问题。请确保字段用户名与数据库中的用户名完全相同(而不是用户名或用户名等)。然后尝试此操作:$sql=“从用户名=“$username”的用户中选择用户名”;然后尝试echo$count;我很高兴我帮了你!:)会话既酷又简单!提示:不要忘记页面顶部的会话开始()!也请阅读此内容,尽量不要使用不推荐的代码,搜索两次!
$username = mysqli_real_escape_string($con, $_POST['username']);
$recievedPassword = md5($_POST['password']);
$qry="select password from Users where username=$username";
$row=mysqli_query($qry);
$result=mysqli_fetch_assoc($result);
$dbPassword=$result['passsword'];
if($recievedPassword==$dbPassword){
echo "password matched";
}
else{
echo "password mismatch, Please not encryped in db or there is any space..";
}