Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于使用特定密码检查id的PHP代码_Php_Android - Fatal编程技术网

用于使用特定密码检查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

我创建了一个登录活动,有两个edittext ID和密码。我有一个PHP代码,用于检查用户的id和密码。如果两者都正确,那么它将转移到另一个活动,但这里我需要一个PHP代码,它将用它们的特定密码检查id。如果用户输入了正确的id,但输入了错误的密码,则应产生错误。请输入正确的密码

请为我推荐一个正确的PHP代码

<?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';
    }