将数据库数据检索到JSON-移动登录表单


Retrieving Database Data to JSON - Mobile Login Form

我使用首先需要登录的Phonegap创建移动应用程序。如果登录成功,它将把数据检索到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>

我可以马上看到一些问题:

  1. 您正在测试isset($_POST['username']) && isset($_POST['password']),但实际上并没有捕捉到它们未设置的情况,而是继续执行具有null/empty值的代码
  2. 我在对你的问题的评论中提到了SQL注入问题,你永远不应该让这个代码在面向公众的网站上可见

如果没有更多的细节,我无法判断问题是HTML、PHP还是JavaScript。

我会在测试用户名/密码时更改if/else,以便在未设置用户名/密码的情况下返回类似于:$data = array('status'=>'failure','Error' => 'Invalid username/password');的内容。

我希望这能有所帮助。