我已使用以下代码在Android Studio上创建了一个登录模块
loginActivity.java
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class loginActivity extends AppCompatActivity {
private EditText username,password;
private Button btn_login, btn_debug;
private TextView register;
private ProgressBar loading;
private static String URL_LOGIN = "http://192.168.137.1/userv1/login.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
loading = findViewById(R.id.loading);
username= findViewById(R.id.usernameBox);
password= findViewById(R.id.passwordBox);
btn_login= findViewById(R.id.btn_login);
btn_debug= findViewById(R.id.debugLogin);
register = findViewById(R.id.tvRegister);
btn_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String mUsername = username.getText().toString();
String mPassword = password.getText().toString();
if (!mUsername.isEmpty() || !mPassword.isEmpty()) {
Login(mUsername, mPassword);
} else {
username.setError("Please insert email");
password.setError("Please insert password");
}
}
});
register.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick (View v){
Intent i = new Intent(loginActivity.this,MainActivity.class);
startActivity(i);
}
});
btn_debug.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick (View v){
Intent i = new Intent(loginActivity.this,ApplicantHome.class);
startActivity(i);
}
});
}
private void Login(final String username, final String password) {
loading.setVisibility(View.VISIBLE);
btn_login.setVisibility(View.GONE);
StringRequest stringRequest = new StringRequest(Request.Method.POST, URL_LOGIN,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
try {
JSONObject jsonObject = new JSONObject(response);
String success = jsonObject.getString("success");
JSONArray jsonArray = jsonObject.getJSONArray("login");
if (success.equals("1")) {
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject object = jsonArray.getJSONObject(i);
String username = object.getString("username");
Toast.makeText(loginActivity.this, "Success login \nUsername : " + username, Toast.LENGTH_SHORT).show();
loading.setVisibility(View.GONE);
}
}
} catch (JSONException e) {
e.printStackTrace();
loading.setVisibility(View.GONE);
btn_login.setVisibility(View.VISIBLE);
Toast.makeText(loginActivity.this, "Error " +e.toString(), Toast.LENGTH_SHORT).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
loading.setVisibility(View.GONE);
btn_login.setVisibility(View.VISIBLE);
Toast.makeText(loginActivity.this, "Error " +error.toString(), Toast.LENGTH_SHORT).show();
}
}
)
{
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> params = new HashMap<>();
params.put("username", username);
params.put("password", password);
return params;
}
};
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}
}
这是我的SQL代码
<?php
if ($_SERVER['REQUEST_METHOD']=='POST') {
$username = $_POST['username'];
$password = $_POST['password'];
$sql = "SELECT * FROM applicant WHERE username='$username' ";
require_once 'connect.php';
$response = mysqli_query($conn, $sql);
$result = array();
$result['login'] = array();
if ( mysqli_num_rows($response) === 1 ) {
$row = mysqli_fetch_assoc($response);
if ( password_verify($password, $row['password']) ) {
$index['username'] = $row['username'];
$index['id'] = $row['id'];
array_push($result['login'], $index);
$result['success'] = "1";
$result['message'] = "success";
echo json_encode($result);
mysqli_close($conn);
} else {
$result['success'] = "0";
$result['message'] = "error";
echo json_encode($result);
mysqli_close($conn);
}
}
}
?>
现在,运行该应用程序后,即使使用正确的用户名和密码,它也永远不允许我超过登录名。它应该显示带有用户名“成功登录”的祝酒词。但是使用登录按钮时没有任何反应。这很奇怪,因为我的注册活动与类似的编码工作良好。它允许我将数据输入数据库。user table with some usernames
将吐司面包添加到负面条件中以说明问题所在。
使用邮递员检查您的php代码,如果您的php代码成功返回1或返回0
我可以帮助您。给我发送电子邮件😉