Javascript登录,cookies [关闭]

Posted

技术标签:

【中文标题】Javascript登录,cookies [关闭]【英文标题】:Javascript login, cookies [closed] 【发布时间】:2013-05-20 17:21:17 【问题描述】:

谁能帮我做作业?

<div id="header">
    <form id="login" onsubmit="return member()">
        <p>
            <label for="txtuser">User:</label>
            <input type="text" class="text" name="txtuser" id="txtuser"/><br/>
            <label for="txtpass">Password:</label> 
            <input type="text" class="text" name="txtpass" id="txtpass"/><br/>
            <input type="submit" class="buttons" id="btnlogin" name="btnlogin" value="Login"/>
        </p>
    </form>
</div>

这是我的作业,我有一个登录表单,其中包含用户名和密码文本框,我必须验证表单,如果它有效,一旦用户成功登录,网站的每个页面都会显示用户的登录信息名称,以及允许他们随时注销的链接。我该怎么办?cookies也需要... 还是谢谢

【问题讨论】:

什么...你想在作业上作弊? 我建议也看看这里:w3schools.com/html/html_forms.asp。密码应该是input type="password" 好吧,我不是要欺骗我的硬件,我只是找不到任何方法来解决它,这就是为什么我来这里寻求帮助..lol 我在 w3schools 上做过这些,但我无法解决 cookie、dom、ajax 的问题......“一旦用户成功登录,网站的每个页面都会显示用户的登录名” 【参考方案1】:

在 member() 函数中,您可以通过 id 访问元素,然后获取值并最终检查它们是否有效:

function member() 
    // Get the elements
    var user_input = document.getElementById("txtuser");
    var pass_input = document.getElementById("txtpass");

    // Get their values
    var user_value = user_input.value;
    var pass_value = pass_input.value;

    // Validate values, this is up to you
    if ( /* this is your homework */ ) 
        // Here values are OK, save a cookie with the username
        saveTheCookie(user_value);
        return true; // Form is OK
    
    else 
        // Form is wrong
        return false;
    

您可以使用以下功能存储 cookie:

function saveTheCookie(value) 
    var today = new Date(); // Actual date
    var expire = new Date(); // Expiration of the cookie

    var cookie_name = "username_form"; // Name for the cookie to be recognized
    var number_of_days = 10; // Number of days for the cookie to be valid (10 in this case)

    expire.setTime( today.getTime() + 60 * 60 * 1000 * 24 * number_of_days ); // Current time + (60 sec * 60 min * 1000 milisecs * 24 hours * number_of_days)

    document.cookie = cookie_name + "=" + escape(value) + "; expires=" + expire.toGMTString();

获取cookie的值:

function getTheCookie() 
    var cookie_name = "username_form";
    var return_value = null;

    var pos_start = document.cookie.indexOf(" " + cookie_name + "=");
    if (pos_start == -1) document.cookie.indexOf(cookie_name + "=");

    if (pos_start != -1)  // Cookie already set, read it
        pos_start++; // Start reading 1 character after
        var pos_end = document.cookie.indexOf(";", pos_start); // Find ";" after the start position

        if (pos_end == -1) pos_end = document.cookie.length;
        return_value = unescape( document.cookie.substring(pos_start, pos_end) );
    

    return return_value; // null if cookie doesn't exist, string otherwise

请注意,我没有对此进行测试,这是您开始的想法。您仍然需要检查表单、设置 cookie 并在加载页面时检索它(包括在 body 标记中的 onload 事件中设置 DOM 元素的 HTML)。祝你好运!

【讨论】:

当然,这是一个 javascript “解决方案”,对于生产环境不可靠(为此,使用 php 来验证表单、设置 cookie、登录等等等等)。根据您的需要更改此设置 var pos_start = document.cookie.indexOf(" " + cookie_name + "=");我一开始没有得到空格。它应该以cookie_name开头吧? @AllenJohnson 我不知道,这是我 7 年前写的。

以上是关于Javascript登录,cookies [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 PHP 和 Curl 登录 Google,Cookie 已关闭?

HTML/JavaScript 禁用 cookie [关闭]

javaScript中的Cookie和web Storage(LocalStorage-SessionStorage)详解

javaScript中的Cookie和web Storage(LocalStorage-SessionStorage)详解

隐藏 div 24hr cookie javascript? [关闭]

Javascript 在浏览器关闭时删除 cookie,即使它设置为在启动时恢复 cookie