【发布时间】:2019-08-11 10:59:51
【问题描述】:
我的登录页面有问题。
我正在将我的密码从字符串转换为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'";````
【问题讨论】:
-
@Dharman 感谢您的提醒。我刚刚修复了登录,我现在要重新编写所有代码以避免 SQL 注入。
标签: php sql sql-server sqlsrv