【问题标题】:String comparison failure vbscript字符串比较失败vbscript
【发布时间】:2016-05-18 23:56:23
【问题描述】:

我有这样的代码

<html>
<head>
    <title></title>
</head>
<body>
    <%
        Function GetGUID()
            GetGUID = CreateObject("Scriptlet.TypeLib").GUID
        End Function

        if Request.ServerVariables("REQUEST_METHOD") = "POST" then
            if session("token") = cstr(Request.Form("csrftoken")) then
                response.write("Same")
            else
                response.write("different")
            end if

        else
            dim token
            token = GetGUID()
            session("token")=token
        end if
    %>
    <form method="post" action="test.asp">
        <input type="text" name="nama" placeholder="Input name">
        <input type="submit" value="submit">
        <input type="hidden" value="<%= session("token") %>" name="csrftoken">
    </form>
</body>
</html>

但是当我单击提交按钮时,总是会打印不同的内容。我非常确定这些变量(会话和 csrftoken)具有相同的值,因为我已经通过打印这些变量进行了检查。

更新

感谢大家的帮助,问题已经解决。这是因为 GUID 返回以 null 结尾的字符串。 作为参考,您可以在此处查看:Link。感谢 Lankymart 的参考:)

【问题讨论】:

  • 可能是空格问题?打印时尝试将两个变量放在_ 之间。
  • 好的,让我试试
  • 没有空白问题,但我不知道。为什么在我打印会话变量后,我不能将它与“_”连接起来。这是我的代码:pastebin.com/NDp1jSAP
  • 我认为问题出在 CreateObject("Scriptlet.TypeLib").GUID
  • 哦,谢谢@Lankymart 的参考

标签: vbscript asp-classic


【解决方案1】:

不要问我为什么,但是CreateObject("Scriptlet.TypeLib").GUID 末尾有 2 个字符,当将其作为post 推送时不知何故丢失了。我会在发现更多信息后立即更新此答案,但现在,您可以通过根据请求变量的长度制作会话变量的left 来比较所有“真实”字符。像这样:

    if left(session("token"), len(Request.Form("csrftoken"))) = Request.Form("csrftoken")then

另外:您可以使用trim 代替cstr。它暗示cstr 并修剪字符串。

编辑: 所以“为什么”部分在@Lankymart 链接的问题中得到了回答。谢谢!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2016-07-05
  • 2023-04-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多