为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
梦里花落0921 2021-11-19 16:22:13
我的登录页面有问题。我正在将我的密码从字符串转换为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'";````
查看完整描述

1 回答

?
皈依舞

TA贡献1851条经验 获得超3个赞

您可以将 varbinary 转换回 varchar 值作为


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


varchar_value

-------------

12345

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


查看完整回答
反对 回复 2021-11-19
  • 1 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信