0

システムの特定のdivを表示するためにjavascriptを使用してログイン/登録システムを構築しています。

最初の div = ログインまたは登録するためのメニュー オプション

2 番目の div = クリックされたもの (ログインまたは登録) に応じて、ログイン フォームまたは登録フォームが表示されます

3 番目の 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は次のようになります

main.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 で特定の機能を選択できます。

ユーザーがログインしているか、runescape Web サイトの右上にあるのと少し似ていないかを示すために、html にあるようにしたいと思います

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

現在、ajax を使用して呼び出している php スクリプトから値を 1 つだけ送り返していますtrue。ログインまたは登録の成功にのみ使用しています。

できることは、これらのスクリプトを変更して複数の値を返すことです。したがって、ログイン成功の値とは別にtrue、ユーザー名も送信し、JavaScript でそのユーザー名を使用して html ブロッ​​クを作成し、ユーザー名を表示する上部領域に表示します。

すでに json を使用しているため、php スクリプトで戻り値を含む配列を生成し、それを使用echo json_encode($your_return_values);して javascriptsuccess変数に送信するだけです。

ところで、jquery / javascript を使用して、html のセクション全体を置き換えて構築することができます。非表示にするためだけに最初にすべてを配置する必要はありません。

于 2013-03-11T20:59:52.877 に答える
0

あなたの質問を正しく理解している場合は、ページをリロードせずに右上隅に div を表示することで、ログインしていることをユーザーに示したいと考えています。

その場合、次のような絶対的な右上の位置で非表示の div を作成できます。

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

上記の ajax リクエストの「success:」部分に、別の ajax リクエストを作成する新しい js 関数への呼び出しを追加して、ログインしているユーザーの表示名と表示するその他の情報を含む json オブジェクトを取得します。そのjsonデータを使用して、それに応じて「ようこそ」divを入力し、表示をブロックに変更できます。

于 2013-03-11T21:17:26.213 に答える