4

我有一个登录页面如下:

<form action="?" method="post" id="frm-useracc-login" name="frm-useracc-login" >

    <div id="login-username-wrap" >

        <div class="login-input-item left">

            <div class="div-search-label left">

                <div id="div-leftheader-wrap">

                    <p class="a-topheader-infotext left"><strong>Username: </strong></p>

                </div>

            </div>

            <div class="login-input-content left div-subrow-style ui-corner-all">

                <input type="text" tabindex="1" name="txt-username" id="txt-username" class="input-txt-med required addr-search-input txt-username left">

            </div>

        </div>

    </div>

    <div id="login-password-wrap" >

        <div class="login-input-item left">

            <div class="div-search-label left">

                <div id="div-leftheader-wrap">

                    <p class="a-topheader-infotext left"><strong>Password: </strong></p>

                </div>

            </div>

            <div class="login-input-content left div-subrow-style ui-corner-all">

                <input type="password" tabindex="1" name="txt-password" id="txt-password" class="input-txt-med required addr-search-input txt-password left">

            </div>

        </div>

    </div>

    <div id="login-btn-bottom" class="centre-div">

        <div id="login-btn-right">

            <button name="btn-login" id="btn-login" class="btn-med ui-button ui-state-default ui-button-text-only ui-corner-all btn-hover-anim btn-row-wrapper left">Login</button>
            <button name="btn-cancel" id="btn-cancel" class="btn-med ui-button ui-state-default ui-button-text-only ui-corner-all btn-hover-anim btn-row-wrapper left">Cancel</button><br /><br />

        </div>

    </div>

</form>

这里是我的 session.controller.php 文件:

点击这里

基本上,我想要做的是创建第二个登录页面,该页面自动将值传递给会话控制器并登录。例如,如果我去 login-guest.php,我将输入用户名和密码的默认值和然后有一个jquery点击事件,自动记录他们使用$("#btn-login").trigger('click');

问题是,如果会话超时,会话控制器会自动返回 login.php,我不确定如何实现这一点。任何帮助将非常感激!

4

3 回答 3

2

正如您在评论中提到的那样,您必须首先知道用户是如何登录的(登录或登录访客),因此无论如何您都需要为每个用户提供某种状态。

现在,如果您不能将会话超时增加到无限,您可能需要将登录类型存储在 cookie 中的其他位置,或者作为 url 中的查询字符串。

在 cookie 的情况下,它将是这样的:

在您的登录部分login-guest.php

...
$expire = 60 * 60 * 24 * 30 * 24 + time(); // 2 years
setcookie('logintype', 'guest', $expire); 

这是您将用户发送到登录页面的地方:

if(isset($_COOKIE['logintype']) && $_COOKIE['logintype']=='guest'){
    header('Location: login-guest.php');
} else {
    header('Location: login.php');
}

我不认为 cookie 可以有无限的生命,所以我将有效期设置为两年,你可以更改。显然,如果用户删除 cookie 或使用其他浏览器,它不会持续存在。

于 2012-11-14T10:58:39.220 回答
0

您应该使用登录类型(例如:已注册、访客)在每个登录表单上添加一个额外字段来解决您的问题,并使用此值执行所需的重定向或您需要的任何其他逻辑?

您还可以将此登录类型保留在会话/cookie 中以供进一步使用。

于 2012-11-12T13:20:20.333 回答
0

您可以为每个表单添加一个简单的隐藏输入:

<input type="hidden" name="login_type" value="guest" />

然后,您将根据执行的登录类型进行重定向:

if($_POST['login_type'] == 'guest') {
    header('Location: login-guest.php');
}
else {
    header('Location: login.php');
}

当然有更好的解决方案,你应该总是过滤输入等,但为了简单起见,你去吧。

于 2012-11-13T16:11:55.320 回答