字符串比较失败vbscript

字符串比较失败vbscript,vbscript,asp-classic,Vbscript,Asp Classic,我有这样的代码 <html> <head> <title></title> </head> <body> <% Function GetGUID() GetGUID = CreateObject("Scriptlet.TypeLib").GUID End Function if Request.ServerVariables("R

我有这样的代码

<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>

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

更新 谢谢大家的帮助,问题已经解决了。这是因为GUID返回以null结尾的字符串。
有关参考信息,请参见此处:。感谢Lankymart提供的参考:)

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

    if left(session("token"), len(Request.Form("csrftoken"))) = Request.Form("csrftoken")then
另外:您可以使用
trim
代替
cstr
。它意味着一个
cstr
,并修剪字符串

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

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

    if left(session("token"), len(Request.Form("csrftoken"))) = Request.Form("csrftoken")then
另外:您可以使用
trim
代替
cstr
。它意味着一个
cstr
,并修剪字符串

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

也许是空白问题?打印时,请尝试将这两个变量置于
\u
之间。好的,让我试试看,没有空格问题,但我不知道。为什么在打印会话变量后,无法将其与“\ux”连接起来。这是我的代码:我认为问题出在CreateObject(“Scriptlet.TypeLib”)。Guidohhhh我看到了感谢@Lankymart的引用,它解决了空白问题?打印时,请尝试将这两个变量置于
\u
之间。好的,让我试试看,没有空格问题,但我不知道。为什么在打印会话变量后,无法将其与“\ux”连接起来。这是我的代码:我认为问题来自CreateObject(“Scriptlet.TypeLib”)。Guidohhh我看到了感谢@Lankymart的引用。对于引用,解释了空终止符及其可能导致的奇怪行为。对于引用,解释了空终止符及其可能导致的奇怪行为。