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

Posted

技术标签:

【中文标题】检查输入框中的字符串是不是等于 SQL SERVER、PHP 中的 varbinary(max) | SQL 服务器 2012【英文标题】:Check if string in input box is equal to varbinary(max) in SQL SERVER, PHP | SQL SERVER 2012检查输入框中的字符串是否等于 SQL SERVER、PHP 中的 varbinary(max) | SQL 服务器 2012 【发布时间】: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 注入。 【参考方案1】:

您可以将 varbinary 转换回 varchar 值

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

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

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

【讨论】:

我将如何在 php 中实现它? $password = $_POST['password'];? @pjustindaryll 对不起,我不知道你如何在 php 中管理。

以上是关于检查输入框中的字符串是不是等于 SQL SERVER、PHP 中的 varbinary(max) | SQL 服务器 2012的主要内容,如果未能解决你的问题,请参考以下文章

spark中的isNullOrEmpty函数检查数据框中的列是不是为空或空字符串

检查列表框中的项目是不是已存在于许多其他列表框中?

检查字符串是不是等于实体中的对象属性

检查字符串是不是在熊猫数据框中

python如何检查数据框中的值是不是为nan [重复]

MS Access - 从文本框中的用户输入将参数传递给 SQL 语句