检查输入框中的字符串是否等于SQL SERVER,PHP中的varbinary(max)|SQL服务器2012

zy1mlcev  于 2022-11-21  发布在  SQL Server
关注(0)|答案(1)|浏览(123)

我 的 登录 页面 出现 问题 。
我 正在 将 我 的 密码 从 字符 串 转换 为 varbinary(max) , 我 现在 的 问题 是 如何 比较 或 验证 我 输入 的 登录 字符 串 是否 等于 表 中 存储 的 数据 。
举 个 例子 。
我 的 密码 在 转换 前 的 值 是 * * 12345 * * , 通过 CONVERT(varbinary(max),'12345') 转换 后 , 数据 现在 反映 为 0x3132333435
如何 验证 我 在 输入 框 中 输入 的 密码 ( 12345 ) 是否 与 转换 为 varbinary ( max ) 0x3132333435 时 的 值 相似 ?
我 使用 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'";````

格式

xdnvmnnf

xdnvmnnf1#

您可以将varbinary强制转换回varchar值,如下所示

SELECT cast(0x3132333435 as varchar(max)) as varchar_value

varchar_value
-------------
12345

因此,在代码的比较部分使用上面的转换。

相关问题