0

我使用 javascript 构建登录/注册系统以显示系统的特定 div,例如

第一个 div = 登录或注册的菜单选项

第二个 div = 取决于点击的内容(登录或注册)显示登录表单或注册表单

第三个 div = 显示用户成功注册/登录的时间

脚本如下所示:

html:

<article id="container">
            <div id="load-new" class="game_menu">
                <h1>LOAD/NEW</h1>
                <button id="new_but" type="button">New Game</button>
                <button id="load_but" type="button">Load Game</button>
            </div>
            <div id="reg" class="game_menu">
                <h1>REGISTER</h1>
                <form name="register" method="post" action="">
                    <label for="usernamesignup" class="uname">Your username</label>
                    <input id="usernamesignup" name="usernamesignup" required="required" type="text" placeholder="Username" />
                    <label for="emailsignup" class="youmail"> Your email</label>
                    <input id="emailsignup" name="emailsignup" required="required" type="email" placeholder="domain@mydomain.com"/>
                    <label for="passwordsignup" class="youpasswd">Your password </label>
                    <input id="passwordsignup" name="passwordsignup" required="required" type="password"/>
                    <label for="passwordsignup_confirm" class="youpasswd">Please confirm your password </label>
                    <input id="passwordsignup_confirm" name="passwordsignup_confirm" required="required" type="password"/>
                    <button id="reg_submit" type="button">Register</button>
                </form>
            </div>
            <div id="login" class="game_menu">
                <h1>LOGIN</h1>
                <form name="login" method="post" action="">
                    <label for="username" id="username_label">Username:</label>
                    <input type="text" name="username" id="username" value=""/>
                    <label for="password" id="password_label">Password:</label>
                    <input type="password" name="password" id="password" value=""/>
                    <button id="login_submit" type="button">Login</button>
                </form>
            </div>
            <div id="access" class="game_menu">
                <h1>ACCESS</h1>
                <button id="login_but" type="button">Login</button>
                <button id="reg_but" type="button">Register</button>
            </div>
            <canvas id="TBG" width="640" height="416">
                Please use a more up to date browser
            </canvas>

javascript看起来像这样

主.js:

    //----------Login/Register Gui --------------
$('#load-new').hide();
$('#reg').hide();
$('#login').hide();

//create new instance of gui class
var ui = new Gui();

//if login_but is clicked do ui.login function
$('#login_but').click(ui.login);
//if reg_but is clicked do ui.register function
$('#reg_but').click(ui.register);
//if login_sumbit button is clicked do ui.login_ajax function
$("#login_submit").click(ui.login_ajax);

$("#reg_submit").click(ui.register_ajax);

gui.js:

function Gui (){


var valid = 'true';
var invalid = 'false';

//hide access div, show login div
this.login = function()
{
    $('#access').hide();
    $('#login').show();
};

//hide access div, show register div
this.register = function()
{
    $('#access').hide();
    $('#reg').show();
};

//function to send login data to php script login.php
this.login_ajax = function()
{
    //username user inputted
    var username = $("#username").val();
    //password user inputted
    var password = $("#password").val();

    //inputted data made into JSON string
    var dataString = {"reg":invalid, "login":valid,  "username":username , 
    "password":password};

    //AJAX Request to login.php
    $.ajax({
        type:"POST",
        url:"PHP/class.ajax.php",
        data: dataString,
        dataType: 'JSON',
        success: function(success) {
            alert("Your are logged in");
            if(success == 'true'){
            $('#login').hide();
            $('#load-new').show();
            }
        },
        error: function(){
            alert("ERROR in AJAX");
        }

    });
};

this.register_ajax = function()
{
    var username_signup = $("#usernamesignup").val();
    var email_signup = $("#emailsignup").val();
    var password_signup = $("#passwordsignup").val();
    var password_signup_confirm = $('#passwordsignup_confirm').val();

    var dataString = {"reg":valid, "login":invalid, "username_signup":username_signup,
                                "email_signup":email_signup,
 "password_signup":password_signup, "password_signup_confirm":password_signup_confirm};

    $.ajax({
       type:"POST",
        url:"PHP/class.ajax.php",
        data: dataString,
        dataType: 'JSON',
        success: function(success) {
            alert("You are registered");
            if(success == 'true'){
                $('#reg').hide();
                $()
                $('#load-new').show();
            }
        },
        error: function(){
            alert("ERROR in AJAX");
        }
    });
}

}

我使用 ajax 向 php 脚本发送请求以处理登录或注册。ajax 请求的脚本很简单,因此我可以在登录 php 或注册 php 中选择特定功能。

我想在我的 html 中有一个 are 来显示用户是否已登录,有点像 runescape 网站右上角的 are:这里

现在我在我的 header.php 文件中尝试了这个 php:

if(isset($_POST['username'])){
$is_logged_in = '<div id = "user_box">Welcome '.$_POST['username'].'</div>';
}
else
 {
$is_logged_in = '<div id = "welcome_box">Welcome friend!</div>';
}

但显然这不起作用,因为页面没有刷新即时使用 javascript 显示菜单的不同部分。

我的问题:

使用我现有的 javascript/php 系统实现这种效果的最实用的方法是什么?

我会像使用菜单 div 一样使用 javascript 隐藏/显示 div 吗?或者有没有我可以用来刷新页面而不会将我送回第一个菜单 div 的功能?

谢谢你的时间汤姆

4

2 回答 2

0

If I'm understanding your question correctly your wanting to indicate to the user that they are logged in without reloading the page and by displaying a div in the top right corner.

That being the case you could create a hidden div with an absolute top right position which would be something like:

<div id="welcome" style="display:none; postion:absolute; top:0; float:right;">...</div>

In the 'success:' portion of the ajax request above, add a call to a new js function that makes a separate ajax request to retrieve a json object containing the logged in users display name and any other information that you want to show. Using that json data you could then populate 'welcome' div accordingly and change it's display to block.

于 2013-03-11T21:17:26.213 回答
0

现在,您仅从使用 ajax 调用的 php 脚本中返回一个值,您仅true用于成功登录或注册。

您可以做的是修改这些脚本以返回多个值。因此,除了true成功登录的值之外,您还发送用户名,然后在您的 javascript 中使用该用户名构建一个 html 块,以显示在您要显示用户名的顶部区域。

您已经在使用 json,因此您只需在 php 脚本中生成一个带有返回值的数组,并使用echo json_encode($your_return_values);它来将其发送到您的 javascriptsuccess变量。

顺便说一句,您可以使用 jquery / javascript 来替换和构建 html 的整个部分,您不需要在开始时将所有内容都放入只是为了隐藏它。

于 2013-03-11T20:59:52.877 回答