классические файлы cookie и сеансы ASP возвращаются как «неопределенные» только в Firefox на 64-битной ОС.Зачем? - PullRequest
2 голосов
/ 22 января 2012

Один мой дом работает в моем классическом ASP-классе - это создание простой формы входа в систему, страницы, которая обрабатывает форму путем сохранения значений в куки-файлах, а затем отображает страницу, которая берет значения из куки-файла и сохраняет их в переменных сеанса. а затем отображает результаты в html-странице.

Я обнаружил, что это домашнее задание работает должным образом в версиях / установках Firefox для IE, Chrome, Opera, Safari, Maxthon, Avant и SOME. Это сильно сбило меня с толку. Firefox был моим любимым браузером уже пару лет. У меня дома Firefox 5 и 9, на 64-битных машинах Win7. И все возвращается как «неопределенный» на этих двух машинах. Win XP 32 бит / Firefox на компьютерах в школе делает это домашнее задание правильно. Это приводит меня к мысли, что проблема заключается в комбинации 64-битной ОС и Firefox.

Вот мой код:

Register.asp

    <form name="frmLogon" id="frmLogon" method="post" action="session.asp">

        <h3>Logon</h3>  

                <label for="txtUserName">
                    Username:
                    <input type="text" name="txtUserName" maxlength="20" />
                </label>

                <br /><br />

                <label for="txtPassword">
                    Password:
                    <input type="text" name="txtPassword" maxlength="20" />
                </label>

                <input type="hidden" name="hidSessionID" value="Session.SessionID"/>

                <br /><br />

        <center>
            <input type="submit" value="Submit" name="btnSubmit"/>
            <input type="reset" value="Reset" name="btnReset" />
        </center>

    </form>

</body>

Session.asp

<body>

<%   
    // Populate the cookie      
    Response.Cookies("registration")("UserName") = Request.Form("txtUserName");
    Response.Cookies("registration")("Password") = Request.Form("txtPassword");
    Response.Cookies("registration")("SessionID") = Session.SessionID;
    Response.Cookies("registration")("Date") = Date();
    Response.Cookies("registration")("Referer") = Request.ServerVariables("HTTP_REFERER");
    Response.Cookies("registration")("RemoteIP") = Request.ServerVariables("REMOTE_ADDR");

    // script required to set expiration date. (Not shown in textbook or sample code...)        
    var dtmDate;
    dtmDate = new Date()
    intMonth = dtmDate.getMonth() + 1
    dtmDate.setDate(dtmDate.getDate() + 7)
    strExpireDate = intMonth + "/" + dtmDate.getDate() + "/" + dtmDate.getFullYear()
    Response.Cookies("registration").Expires = strExpireDate

    Response.Redirect("Display.asp");
%>
</body>

Display.asp

<body>

<%
Break();
Response.write("<font color='blue'>The cookies keys and values:</font>");
Break();
Response.write("UserName: " + (Request.cookies("registration")("UserName")));
Break();
Response.write("Password: " + (Request.cookies("registration")("Password")));
Break();
Response.write("SessionID: " + (Request.cookies("registration")("SessionID")));
Break();
Response.write("Date: " + (Request.cookies("registration")("Date")));
Break();
Response.write("Referer: " + (Request.cookies("registration")("Referer")));
Break();
Response.write("RemoteIP: " + (Request.cookies("registration")("RemoteIP")));
Break();
Response.write("<hr />");
Break();

// Assign the cookie values to Session variables              
Session("UserName") = Request.Cookies("registration")("UserName")
Session("Password") = Request.Cookies("registration")("Password")
Session("SessionID") = Request.Cookies("registration")("SessionID")
Session("Date") = Request.Cookies("registration")("Date")
Session("Referer") = Request.Cookies("registration")("Referer")
Session("RemoteIP") = Request.Cookies("registration")("RemoteIP")


// Display the session variables populated from the cookie.
Response.write("<font color='blue'>The session variables, populated by the cookies keys and values:</font>");
Break();
Response.write("UserName: " + Session("UserName"))
Break();
Response.write("Password: " + Session("Password"))
Break();
Response.write("SessionID: " + Session("SessionID"))
Break();
Response.write("Date: " + Session("Date"))
Break();
Response.write("Referer: " + Session("Referer"))
Break();
Response.write("Remote IP: " + Session("RemoteIP"))
Break();
Response.write("<hr />");
Break();

// Display the session variables populated from the cookie.
Response.write("<font color='blue'>The unformatted output of the 'Response.Write(Request.ServerVariables('HTTP_COOKIE'))' command:</font>");
Break();
Response.Write(Request.ServerVariables("HTTP_COOKIE"))

function Break()
{
    Response.write("<br></br>")
}

%>


</body>

Может кто-нибудь объяснить, почему все это упражнение возвращает «неопределенные» переменные только в Firefox на 64-битной Win 7?

1 Ответ

0 голосов
/ 15 апреля 2012

Во-первых, ПОЧЕМУ ты пишешь все это в cookie? Почему бы не написать это все прямо в сессию. Cookies могут обеспечить угрозу безопасности в имени пользователя и пароле позже. Я думаю, что было бы лучше установить все переменные сеанса в "session.asp", но я думаю, что это может быть личное ...

Возвращаясь к вашему вопросу, скорее всего, «Cookies» отключены. Нажмите здесь, чтобы узнать о включении файлов cookie в Firefox .

...