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

     }

登录.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
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 回答
0

最好的方法是使用 $.ajax() 并使用“XML”类型。然后让 login.php 返回一个 XML 文件,其中包含您需要的任何参数(用户 ID、错误消息(如果有)、用户名等)。然后,您可以使用 jQuery 解析 XML 文件以立即使用这些变量。无论如何,在后端处理错误更安全。

于 2013-03-25T11:34:16.050 回答