我使用首先需要登录的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>
我可以马上看到一些问题:
- 您正在测试
isset($_POST['username']) && isset($_POST['password'])
,但实际上并没有捕捉到它们未设置的情况,而是继续执行具有null/empty值的代码 - 我在对你的问题的评论中提到了SQL注入问题,你永远不应该让这个代码在面向公众的网站上可见
如果没有更多的细节,我无法判断问题是HTML、PHP还是JavaScript。
我会在测试用户名/密码时更改if/else,以便在未设置用户名/密码的情况下返回类似于:$data = array('status'=>'failure','Error' => 'Invalid username/password');
的内容。
我希望这能有所帮助。