用于使用特定密码检查id的PHP代码
我创建了一个登录活动,有两个edittext ID和密码。我有一个PHP代码,用于检查用户的id和密码。如果两者都正确,那么它将转移到另一个活动,但这里我需要一个PHP代码,它将用它们的特定密码检查id。如果用户输入了正确的id,但输入了错误的密码,则应产生错误。请输入正确的密码 请为我推荐一个正确的PHP代码用于使用特定密码检查id的PHP代码,php,android,Php,Android,我创建了一个登录活动,有两个edittext ID和密码。我有一个PHP代码,用于检查用户的id和密码。如果两者都正确,那么它将转移到另一个活动,但这里我需要一个PHP代码,它将用它们的特定密码检查id。如果用户输入了正确的id,但输入了错误的密码,则应产生错误。请输入正确的密码 请为我推荐一个正确的PHP代码 <?php require "r_connect.php"; if($_SERVER['REQUEST_METHOD']=='POST') { $rollno=$_PO
<?php
require "r_connect.php";
if($_SERVER['REQUEST_METHOD']=='POST')
{
$rollno=$_POST['rollno'];
$password=$_POST['password'];
$sql = "SELECT * FROM registration_user WHERE rollno = '$rollno' AND password='$password'";
$result = mysqli_query($connect,$sql);
$check = mysqli_fetch_array($result);
if(isset($check))
{
echo 'Success';
}
else
{
echo 'Error';
}
}
?>
将SQL语句拆分为to,在第一次查询时,其中rollno='$rollno',如果找到,则继续;在查询时,其中rollno='$rollno'和password='$password',如果一切正常,则继续;如果第一次语句失败,则未找到用户;如果第二次查询失败,则找到用户,但密码不匹配,这是您想要的情况。尝试以下PHP代码:
您还可以参考本教程了解更多信息在编写身份验证流时,您可以记住以下事项: 很好地验证您的输入数据 与Select查询交互时,尽可能使用准备好的语句 对密码字符串使用sha1和md5组合以存储在数据库中并进行比较。 我尝试在下面的代码中实现这些东西,当然总有改进的余地
function checkRollno($conn, $rollno)
{
$stmt = mysqli_stmt_init($conn);
$prepareQuery = "SELECT count(*) FROM tablename WHERE rollno = ?";
//Prepared Statements
if( mysqli_stmt_prepare($stmt, $prepareQuery ) )
{
// Bind params
mysqli_stmt_bind_param($stmt, 'i', $rollno);//i is for integer
/* execute query */
mysqli_stmt_execute($stmt);
/* Fetch Result */
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_assoc($result);
/* close statement */
mysqli_stmt_close($stmt);
if( count($row) < 1 )
return false;
else
return true;
}
else
return false;
}
function checkUserExists($conn, $rollno, $pass)
{
$stmt = mysqli_stmt_init($conn);
$prepareQuery = "SELECT count(*) FROM tablename WHERE rollno = ? AND password= ?";
//Compare sha1 of md5 of your password (You should not store or check against exact password strings)
$pass = sha1(md5($pass));
//Prepared Statements
if( mysqli_stmt_prepare($stmt, $prepareQuery ) )
{
// Bind params
mysqli_stmt_bind_param($stmt, 'is', $rollno, sha1(md5($pass)));// s is for strings
/* execute query */
mysqli_stmt_execute($stmt);
/* Fetch Result */
$result = mysqli_stmt_get_result($stmt);
$row = mysqli_fetch_assoc($result);
/* close statement */
mysqli_stmt_close($stmt);
if( count($row) < 1 )
return false;
else
return true;
}
else
return false;
}
//Main Block
if( $_SERVER['REQUEST_METHOD'] == 'POST' )
{
if( isset($_POST['rollno']) && $_POST['rollno'] != '' )
$rollno = $_POST['rollno'];
if( isset($_POST['password']) && $_POST['password'] != '' )
$pass = $_POST['password'];
$res = checkRollno($conn, $rollno);
if( $res )//rollno exists
{
if( checkUserExists( $conn, $rollno, $pass ) )
die('authenticated');//Authenticated
else
die('denied');//Wrong password
}
else//rollno doesn't exist
{
//code to reflect wrong id does not exist
}
}
我相信您可以使用更好的函数名:
您的代码可能如下所示:
$sql = "SELECT * FROM registration_user WHERE rollno = '$rollno'";
$result = mysqli_query($connect,$sql);
$check = mysqli_fetch_array($result);
然后您可以进行检查:
if(mysqli_num_rows($check) > 0)
{
if($check['password']===$password){
//id and pass correct
}else{
// id correct , but bad password
}
}else
{
echo 'Invalid id';
}
很抱歉迟了回复,看看@Vinayak B的答案,这正是我的意思。
if(mysqli_num_rows($check) > 0)
{
if($check['password']===$password){
//id and pass correct
}else{
// id correct , but bad password
}
}else
{
echo 'Invalid id';
}