剑道UI登录功能


Kendo UI login functionality

我目前正在使用Kendo UI制作iPhone应用程序,我正在通过手机间隙运行以在我的iPhone上进行测试。

设计都很好地绘制出来,我正在掌握剑道框架。我正在尝试制作一些功能,以便他们登录帐户。

我的外部PHP文件运行查询并返回JSON:

<?php
   $arr = array();
//Takes the username and password from the login form and queries the database to find out if they have access to the site.

        //Cleanse inputs
        $username = $_GET['username'];
        $password = md5_base64($_GET['password']);
        $stmt = $memberMysqli->prepare("SELECT id, firstname, dob, sex, recordingWeight, blocked, enabled FROM member WHERE email = ? AND password = ?");
        $stmt->bind_param('ss', $username, $password);
        $stmt->execute();
        $stmt->bind_result($memberid, $firstname, $dob, $sex, $recordingWeight, $blocked, $enabled);
        $stmt->store_result();  
        session_start();
        while ($stmt->fetch())
        {
            $userIsBlocked = $blocked;
            $enabled = $enabled;
        }   
        if(($numRows = $stmt->num_rows) > 0)  //If num rows is  1 the combination exists therefore it is a succesful login
        {   
            if($userIsBlocked)
            {
                $arr['status'] = "error";
                $arr['message'] = "Sorry, your account isnt active. Please contact us to re-activate it.";
            }
            else if(!$enabled)
            {
                $arr['status'] = "error";
                $arr['message'] = "Sorry, your account isn't enabled. Please contact us.";
            }
            else
            {
                    $_SESSION['memberid'] = $memberid;
                    $_SESSION['memberFirstname'] = $firstname;
                    $_SESSION['dob'] = $dob;
                    $_SESSION['sex'] = $sex;
                    $_SESSION['recordingWeight'] = $recordingWeight;
                    $arr['status'] = "success";
                    $arr['message'] = "Logged in";
            }
        }
        else
        {
            $arr['status'] = "error";
            $arr['message'] = "Sorry, Wrong Username/Password Combination";                 
        }
header("Content-type: application/json");   
echo json_encode($arr);
/* close connection */
function md5_base64 ( $data ) 
{ 
    return preg_replace('/=+$/','',base64_encode(md5($data,true))); 
} 

?>

所以这返回成功,登录或抱歉错误的用户名/密码组合。

这是我的表单代码:

<form>
            <fieldset>
                <p><label style="color:white;" for="email">E-mail address</label></p>
                <p><input type="email" id="email" value=""></p> 
                <p><label style="color:white; font" for="password">Password</label></p>
                <p><input type="password" id="password" value=""></p> 
                <p><input type="submit" value="Sign In"></p>
            </fieldset>

和JS:

<script>
        $("form").on("submit", function() {
        var username = document.getElementById('email').value;
        var password = document.getElementById('password').value;
        var dataSource = new kendo.data.DataSource({
          transport: {
            read:  {
             url: 'http://myurl.co.uk/appqueries/login.php?username='+username+'&password='+password,
             dataType: "json" 
          }
          }
        });
        //alert("Your username is "+username+" and your password is: "+password);
        });
    </script>

任何人都可以帮助我获取 PHP 文件返回的 JSON,然后在登录成功时让用户进入应用程序,或者如果他们不成功,则显示一条消息。

我认为您不需要为此使用数据源(可以这样做,但数据源需要来自读取操作的对象数组),除非有其他要求。

如果这是您的 HTML:

<input id='username' type='text' value='user'></input>
<input id='password' type='text' value='password'></input>
<button id='loginbutton'>Login</button>
<div id='loginresult'></div>

然后你可以使用jQuery(我假设你正在使用它,因为它是Kendo UI的要求):

function loginClick() {
    var username = $("#username").val();
    var password = $("#password").val();
    var loginUrl = 'http://myurl.co.uk/appqueries/login.php?username='+username+'&password='+password;
    $.ajax({
        url: loginUrl,
        type: 'GET',
        dataType: 'json',
        success: function (data) {
            handleLoginResult(data);
        }
    });
}
$(document).on("click", "#loginbutton", loginClick);
function handleLoginResult(data) {
    var status = data.status;
    var message = data.message;
    if (status === "success") {
        // do whatever needs to be done after successful login
        $("#loginresult").html(message);
    }
}

在这里查看一个工作示例(有一些差异,因为这使用的是 jsfiddle 的 echo api): http://jsfiddle.net/lhoeppner/9TGJd/

这几乎与剑道移动版的工作方式相同,只是您将使用移动按钮和数据单击绑定:

  <a id="loginbutton" data-role="button" data-click="loginClick">Login!</a>

您不应该在剑道移动应用程序中使用表单提交,因为剑道移动应用程序基本上是一个单页应用程序。您需要做的是有一个 Kendo 按钮,并在单击事件处理程序上触发 JSON 调用。您可以在此处查看剑道按钮点击事件的演示:http://demos.kendoui.com/mobile/button/events.html#/