2014-10-27 66 views
0

我使用Phonegap創建移動應用程序,首先需要登錄。如果登錄成功它會將數據檢索到JSON。檢索數據庫數據到JSON - 移動登錄表

這是連接到移動站點並檢索數據的PHP頁面。

<?php 
$con = mysqli_connect($mysql_hostname, $mysql_user, $mysql_password,$mysql_database); 
if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
}else{ 
    //echo 'ok'; 
} 

if(isset($_POST['username']) && isset($_POST['password'])){ 
    $username = $_POST['username']; 
    $password = $_POST['password']; 
} 

$sql = "SELECT * FROM member WHERE username = '$username' AND password = '$password'"; 
$result = mysqli_query($con,$sql); 

if (!$result) { 
    //die('Error: ' . mysqli_error($con)); 
    $data = array('status'=>'failure','Error: ' . mysqli_error($con)); 
}else { 
    //$result = mysqli_query($con,$sql); 
    $row = mysqli_fetch_array($result); 
    $details = array(
         'id'=>$row['id'], 
         'username'=>$row['username'], 
         'email'=>$row['email'], 
         'password'=>$row['password'], 
         'repassword'=>$row['repassword'], 
        ); 
    $data = array('status'=>'success','data'=>$details); 
} 
echo json_encode($data); 
mysqli_close($con); 
?> 

但它無法正常工作。 我正在關注我的講師代碼。但我覺得他錯過了一些

我在這裏的HTML內容

<script> 
    function login(){ 

var uName=$("#loginID").val(); 
var pwd=$("#pwdID").val(); 

$.post("http://boost.meximas.com/mobile/verifying.php", { username: uName, password: pwd }, 
    function(json){ 
console.log(json); 
var obj = jQuery.parseJSON(json); 
console.log(obj.status); 
if(obj.login == "success"){ 
alert("success"); 
} 
else 
alert("Incorrect user name or password"); 
}); 
} 
    </script> 


<div data-role="content"> 
       <Table> 
    <tr><td>Login</td> 
    <td><input class="fld" id="loginID" name="txtNum1" type="text" value="" /></td></tr> 
    <tr><td>Password</td> 
    <td><input class="fld" id="pwdID" name="txtNum1" type="text" value="" /></td></tr> 

</Table> 
    <a class="ui-button" data-role="button" onClick="login();" data-transition="slide" id="flipid" >Login</a> 
     </div> 
+0

您有任何錯誤訊息?在登錄POST後$ data的價值是什麼 - 也是不相關的,這段代碼不應該在面向公衆的web服務器上,它可以成功應用於SQL注入。 IE:如果我發佈密碼爲「'或'1'='1',您的代碼將返回任何密碼的有效用戶。 - 在將其發送到數據庫之前,您需要轉義任何用戶輸入。 – logikal 2014-10-27 21:44:01

+0

是的,我知道。這是很初級的編碼。但我想要做的是在這裏是檢索到該JSON對象的數據庫數據,你可以通過單擊http://boost.meximas.com/mobile/verifying.php看到我的網址我得到一些空值..但我是指我的講師鏈接,它不會給出結果http://talenweave.com/LeaveApp/login.php – CadeLewis 2014-10-27 21:47:39

+0

你有鏈接到HTML? – logikal 2014-10-27 22:00:17

回答

0

有幾個問題,我可以看到蝙蝠:

  1. 如果isset($_POST['username']) && isset($_POST['password'])您正在測試,但你是不是實際上捕捉未設置的情況,並且您繼續使用null /空值執行代碼。
  2. 我在你的問題的評論中提到的SQL注入問題,你不應該讓這個代碼在面向公衆的網站上可見。

沒有更多的細節,我不能說如果問題在於HTML,PHP或JavaScript。

當測試用戶名/密碼返回類似如下內容時,我會更改if/else:$data = array('status'=>'failure','Error' => 'Invalid username/password');未設置用戶名/密碼時。

我希望這會有所幫助。