我 的 登录 页面 出现 问题 。
我 正在 将 我 的 密码 从 字符 串 转换 为 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'";````
格式
1条答案
按热度按时间xdnvmnnf1#
您可以将varbinary强制转换回varchar值,如下所示
因此,在代码的比较部分使用上面的转换。