2013-10-07 121 views
2

我目前正在使用Kendo UI製作iPhone應用程序,我正在通過手機間隙運行iPhone以測試它。Kendo UI登錄功能

設計都很好地映射出來,我正在掌握Kendo框架。我正在嘗試使用某些功能登錄帳戶。

它運行查詢,並返回JSON我的外部PHP文件:

<?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> 

任何人可以幫助我得到什麼了JSON的PHP文件的回報,然後讓用戶到應用程序,如果登錄成功,或者如果他們不顯示的消息。

回答

2

我不認爲你想爲此DataSource(它可以完成,但DataSource期望讀取操作中的對象數組),除非有是附加要求。

如果這是你的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(我假設你正在使用,因爲它是劍道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的回聲api):http://jsfiddle.net/lhoeppner/9TGJd/

這對於劍道移動幾乎相同,除了你會使用移動按鈕和th e數據點擊綁定:

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

我已經實施登錄..但每次我打開應用程序頁面,它再次要求登錄。你能告訴我如何讓用戶保持登錄狀態嗎?當他打開應用程序時,他會從登錄頁面進入主頁 –

1

您不應該在Kendo Mobile應用程序中使用表單提交,因爲Kendo移動應用程序基本上是單頁應用程序。你需要做的是有一個Kendo按鈕,並在點擊事件處理程序中,觸發JSON調用。你可以在這裏看到Kendo Button的點擊事件演示:http://demos.kendoui.com/mobile/button/events.html#/

+0

謝謝,有關如何使用按鈕事件與數據庫來確定和成功登錄或沒有任何想法? –

+0

基本上,你在按鈕點擊事件中觸發ajax調用。在ajax調用中,您可以將用戶憑據發送到後端服務。後端服務將檢查登錄是否成功,並返回一個布爾值,指示將在您的ajax回調中可用的狀態。根據這個值,你可以告訴用戶他們的登錄是否成功。這在我的Kendo Mobile書中顯示,「使用Kendo UI Mobile和ASP.NET Web API構建移動應用程序」。我打算將代碼上傳到Git。一旦完成就會發送你的鏈接。 – Whizkid747

+0

感謝您的幫助,這將是完美的 –