【发布时间】:2018-07-13 18:57:38
【问题描述】:
我正在使用带有 MySQL 数据库的 xampp 服务器制作一个简单的登录页面。我不断收到上面的错误,不幸的是,找不到正确的答案。我使用的是真正的安卓手机而不是模拟器。日志框似乎没有显示任何类型的错误,所以我不确定出了什么问题。在此先感谢
LoginActivity.java
public class LoginActivity extends AppCompatActivity {
private static String LOGIN_URL = "http://192.168.43.231/Login/login.php";
public static final String KEY_USERNAME = "username";
public static final String KEY_PASSWORD = "password";
@Override
protected void onCreate(Bundle savedInstanceState) {
.....
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
final String usernameS = username.getText().toString().trim();
final String passwordS = password.getText().toString().trim();
if (usernameS.isEmpty() || passwordS.isEmpty()) {
Toast.makeText(LoginActivity.this, "Enter Valid Username & Password", Toast.LENGTH_SHORT).show();
} else {
StringRequest stringRequest = new StringRequest(Request.Method.POST, LOGIN_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
boolean responseStatus = jsonObject.getBoolean("success");
if (responseStatus) {
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
LoginActivity.this.startActivity(intent);
} else {
Toast.makeText(LoginActivity.this, "Invalid Username or Password", Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
e.printStackTrace();
Toast.makeText(LoginActivity.this,"Error" + e.toString(), Toast.LENGTH_LONG).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(LoginActivity.this, error.toString(), Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<String, String>();
params.put(KEY_USERNAME, usernameS);
params.put(KEY_PASSWORD, passwordS);
return params;
}
};
RequestQueue requestQueue =Volley.newRequestQueue(LoginActivity.this);
requestQueue.add(stringRequest);
}
}
});
}
}
PHP 代码
<?php
$con=mysqli_connect("localhost","root","","blast");
$username=$_POST['username']);
$password=$_POST['password']);
$sql=mysqli_prepare($con,"SELECT * from blast_user where username = '$username' and password = '$password'");
mysqli_stmt_bind_param($sql,"sss",$username,$password);
mysqli_stmt_execute($sql);
mysqli_stmt_store_result($sql);
mysqli_stmt_bind_result($sql,$username,$password);
$response=array();
$response["success"]=true;
echo json_encode($response);
>?
【问题讨论】:
-
您是否检查过您的 php 脚本的原始响应是什么?我猜输出中有一些 php 警告或通知,因此污染了应该是纯 json 的内容。
-
"JSONException: Value
<br 看起来您的 PHP 代码正在生成 html 输出(可能是一个通知).. 这个>?在de PHP 代码应该是?> -
-
您正在尝试使用准备好的语句,但也没有提供任何占位符来绑定。你的 SQL 应该是
SELECT * from blast_user where username = ? and password = ?...随后你只需要两个s在mysqli_stmt_bind_param($sql,"ss",$username,$password);