检查输入框中的字符串是否等于 SQL SERVER、PHP 中的 varbinary(max) |

我的登录页面有问题。


我正在将我的密码从字符串转换为varbinary(max),我现在的问题是如何比较或验证我输入的用于登录的字符串是否等于表中存储的数据。


例子。


我的密码转换前的值为12345。通过 转换后CONVERT(varbinary(max),'12345'),数据现在反映为0x3132333435。


如果转换为 varbinary(max) 0x3132333435,我将如何验证我在输入框中输入的密码 (12345) 是否与该值相似?


我使用 SQL SERVER 2012、XAMPP 和 SQLSRV 进行连接。


非常感谢你提前。


这是我的login.php


<?php

    session_start();

    include 'includes/conn.php';


    if (isset($_POST['login'])) {

        $username = $_POST['username'];

        $password = $_POST['password'];


        $sql = "

SELECT username,cast(password as varchar(max)) as password 

FROM usermasterfile 

WHERE username ='$username'";


        include 'query/sqlsrv_query-global.php';


        if (sqlsrv_num_rows($query) < 1) {

            $_SESSION['error'] = 'Cannot find account with the username';

        } else {

            $row = sqlsrv_fetch_array($query, SQLSRV_FETCH_ASSOC);

            if ($password == $row['password']) {

                $_SESSION['employeeidno'] = $row['employeeidno'];

            }

            else{

                $_SESSION['error'] = 'Incorrect password';

            }

        }

    }

    else{

        $_SESSION['error'] = 'Input credentials first';

    }


    header('location: index.php');

?>

编辑:修复它!


SELECT *,cast(password as varchar(max)) as maxpassword 

FROM usermasterfile 

WHERE username ='$username'";````


梦里花落0921
浏览 154回答 1
1回答

皈依舞

您可以将 varbinary 转换回 varchar 值作为SELECT cast(0x3132333435 as varchar(max)) as varchar_valuevarchar_value-------------12345因此,请在代码的比较部分使用上述转换。
打开App,查看更多内容
随时随地看视频慕课网APP