0

ログインページをhtmlを使用するように変換し、jqueryとphpを使用して結果を取得して処理しようとしています。理由は、プロジェクトでモバイルに移行したい場合は、もうすぐそこにいるからです。

私が抱えている問題は、変数をphpからjqueryに戻し、同時に表示することです。

私の例index.html

<!DOCTYPE HTML>
<html>
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1">    
    <meta http-equiv="Content-type" content="text/html; charset=utf-8">
    <title>Auth Demo 2</title>
    <script src="jquery/jquery-1.7.2.min.js"></script>
    <script src="main.js"></script>
</head>

<body onload="handleLogin()">

        <form id="loginForm">

            <label for="email">Email:</label>
            <input type="text" name="email" id="email" value="" placeholder="email" />



            <label for="password">Password:</label>
            <input type="password" name="password" id="password" value="" placeholder="Password" />


        <input type="submit" value="Login" id="submitButton">
        </form>

</body>
</html> 

main.js

    function handleLogin(){

        var form = $("#loginForm");
        var u = $("#email", form).val();
        var p = $("#password", form).val();

        if(u!= '' && p!= '') {
             $.post("http://www.mysite.co.uk/login.php",{ 
                        email:$('#email', form).val(),
                        password:$('#password', form).val(),
                        rand:Math.random() 
                      } ,function(data)
                          {
                             if(data=='yes') //if correct login detail
                             {
                                 alert( "Request success: ");
                             }
                             else
                             {  
                                  //add reason in alert box here
                                  alert ("failed reason")
                              }
                   });
        } else {
                    alert( "Username/password empty");
               }
         return false;//not to post the  form physically

     }

login.php

<?//get the posted values
require_once("../backend/functions.php");
dbconn(true);


if ($_POST["email"] && $_POST["password"]) {
    $password = passhash($_POST["password"]);

    if (!empty($_POST["email"]) && !empty($_POST["password"])) {
        $res = SQL_Query_exec("SELECT id, password, secret, status, enabled FROM users WHERE email = " . sqlesc($_POST["email"]) . "");
        $row = mysql_fetch_assoc($res);

        if ( ! $row || $row["password"] != $password )
            $message = "Wrong password";
        elseif ($row["status"] == "pending")
            $message = "Account Pending";
        elseif ($row["enabled"] == "no")
            $message = "Account Suspened";
    } else
        $message = "No Username/password added";

    if (!$message){
        logincookie($row["id"], $row["password"], $row["secret"]);
        if (!empty($_POST["returnto"])) {
            header("Refresh: 0; url=" . $_POST["returnto"]);
            die();
        }
        else {
            echo  "yes";
            die();
        }
    }else{
        echo $message;
    }
}

logoutcookie();

ログインが失敗したときにわかるように、さまざまな理由でアラートボックスに戻したいと思います。これについて行くための最良の方法は何ですか

4

4 に答える 4

1

アラートデータのみ

  if(data=='yes') //if correct login detail
  {
      alert( "Request success: ");
  } 
  else{
        alert (data)
   }

ただし、応答をJSONとして取得することをお勧めします。

if(u!= '' && p!= '') {
     $.post("http://www.mysite.co.uk/login.php",{ 
               email:$('#email', form).val(),
               password:$('#password', form).val(),
               rand:Math.random() 
         } ,function(data)
             {
                if(data=='yes') //if correct login detail
                {
                    alert( "Request success: ");
                }
                else
                {                                                      //add reason in alert box here
                    alert (data)
                 }
           });

  } else {
         alert( "Username/password empty");
  }

     return false;//not to post the  form physically
  }
于 2013-03-25T11:35:16.953 に答える
1

JSONを使用してみてください。

JSON.stringify(your_object, null, 2);

これを使用してPHPでPOSTをキャッチし、配列を元に戻します:http ://www.php.net/manual/en/function.json-decode.php

$data = json_decode($_POST);

PHPが完了すると、配列データのエンコードされたJSON文字列をエコーバックします:http ://www.php.net/manual/en/function.json-encode.php

echo json_encode($return_data);

jQueryでは、テスト用に行います。

console.log(data);
console.log(data.yes);
于 2013-03-25T11:35:30.380 に答える
0

これを行う最良の方法は、$。ajax()を使用し、「XML」タイプを使用することです。次に、login.phpに、必要なパラメーター(ユーザーID、エラーメッセージがある場合はエラーメッセージ、ユーザー名など)を含むXMLファイルを返してもらいます。次に、jQueryを使用してXMLファイルを解析し、これらの変数をすぐに使用できます。とにかく、バックエンドでエラーを処理する方が安全です。

于 2013-03-25T11:34:16.050 に答える
0
function handleLogin(){

    var form = $("#loginForm");
    var u = $("#email", form).val();
    var p = $("#password", form).val();

    if(u!= '' && p!= '') {

        jQuery.ajax({
             type: "POST", 
             url: "http://www.mysite.co.uk/login.php", 
             data: 'username='+u+'&password='+p+'&rand='+Math.random(),
             complete: function(data){

                 if(data.responseText == 'yes'){
                    alert( "Request success: ");
                 }else{
                    alert( "failed: ");
                 }

         });

    } else {

        alert( "Username/password empty"); 

    }

     return false;//not to post the  form physically

 }
于 2013-03-25T12:11:45.797 に答える