台灣最大程式設計社群網站
線上人數
1647
 
會員總數:242665
討論主題:187629
歡迎您免費加入會員
討論區列表 >> AJAX / JSON / jQuery >> 用AJAX串接PHP作手機APP之會員登入系統失敗
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
用AJAX串接PHP作手機APP之會員登入系統失敗
價值 : 50 QP  點閱數:364 回應數:3

樓主

Fish Small
門外漢
0 1
8 1
發送站內信

不好意思 是個新手 想用HTML5 CSS3 AJAX +PHP MYSQL +PhoneGap/Cordova, 做一個手機APP
但 會員登入驗證成功後 眺轉至下一頁 卡關很久 不知道哪裡出錯了 請各位大神幫忙


1. 登入畫面 (index.html)
<div id="login" data-role="page" data-theme="a">
<div data-role="header" data-position="fixed" data-theme="b">
<h3>會員登入</h3>
</div>
<div role="main" class="ui-content">
<form id="loginform" method="post">
<div class="ui-field-contain" ">
<label for="username">請輸入您的帳號:</label>
<input type="text" name="username" id="username">
</div>
<div class="ui-field-contain" style="margin-top:-10px; border:none;">
<label for="userpwd">請輸入您的密碼:</label>
<input type="password" name="userpwd" id="userpwd" >
</div>
<div data-rode="ui-field-contain">
<button id="loginbtn" type="submit">登入</button>
</div>
</form>
</div>
</div>

2. jQuery (AJAX)

$(document).on('click', '#loginbtn', function (evt) {
var loginData = $("#loginform").serialize();
//序列化表格
$.ajax({
type: "POST", //定義提交方法
url: "http://localhost/webapp/login.php", //定義登錄驗證程式
cache: false, //定義不要快取
data: loginData, //定義發送的表單格式
//taType: "json",
//ync: false,
success: function (msg) {
msg = $.trim(msg);
if (msg = "true") {
username = $('#username').val(); //獲取帳號
userpwd = $('#userpwd').val(); //獲取密碼
logined = true; //改變都登入狀態為true
$.mobile.changePage('#home', {
'transition': 'slide'
});
} else {
alert('驗證失敗,請檢查用戶名或密碼');
}
},
error: function (jqXHR, textStatus, errorThrwon) {
alert('AJAX處理錯誤');
}
});
return true;
});

3. 後端PHP(連線+驗證)

<?php

function login($userID="",$userPwd="")
{
try
{
//建立PDO
$dbh=new PDO("mysql:host=localhost;port=3306;dbname=userapp","root","1234");
//建立出錯模式
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$dbh->exec("SET CHARACTER SET utf8");
//準備處理陳述式
$sth = $dbh->prepare("SELECT * FROM users WHERE" . "username = ? AND userpwd = ?" );

//準備參數
$sth->bindParam(1,$userID, PDO::PARAM_STR, strlen($userID));
$sth->bindParam(2,$userPwd, PDO::PARAM_STR, strlen($userPwd));
//執行預處理陳述式,並把結果保留在$sth
$sth->execute();
$row = $sth->fetch();
if(!empty($row)){return true;}
else{return false;}
$dbh=NULL;
}
catch (PDOException $err)
{
error_log($err->getMessage());
die();
}
}


if(isset($_REQUEST["username"]))
{ $userID = trim($_REQUEST["username"]);}
if(isset($_REQUEST["userpwd"]))
{ $userPwd = trim($_REQUEST["userpwd"]);}
if(login($userID,$userPwd)) echo "true"; //驗證成功
else echo "false";//驗證失敗



?>

搜尋相關Tags的文章: [ HTML5 ] , [ CSS3 ] , [ AJAX ] , [ PHP ] , [ MYSQL ] , [ PhoneGap ] ,
本篇文章發表於2017-12-12 18:29
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
會失敗的原因。
你用post的方式傳資料進去,但確是用$_REQUEST來接值??
你覺得這樣接的到值嗎??
本篇文章回覆於2017-12-13 10:00
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

Fish Small
檢舉此回應
我改回$_POST 依舊不行呀
本篇文章回覆於2017-12-13 16:25
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
那你先看一下你輸出的值是什麼吧。

還有~~~請善用程式標簽來排版。並盡量不要用簡寫的方式。
你輸出一下你ajax傳回的值看看就知道原因了。
本篇文章回覆於2017-12-14 18:29
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.