有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android如何检查php消息以验证登录

我想了解如何使用php消息响应验证登录,以下是我的登录php:

<?php 
    include 'connectdb.php';

    $data = json_decode(file_get_contents('php://input'), true);

    $kodeDosen =$data["kodeDosen"];
    $password = $data["password"];

    $message = array("message"=>"Data found");
    $failure = array("mesage"=>"Data not found");

    if ($stmt = mysqli_prepare($conn, "SELECT kodeDosen, namaDosen, email, telepon FROM tbl_dosen WHERE kodeDosen =? and password = ?")) {

       /* bind parameters for markers */
       mysqli_stmt_bind_param($stmt, "ss", $kodeDosen,$password);

       /* execute query */
       mysqli_stmt_execute($stmt);

       /* store result */
       mysqli_stmt_store_result($stmt);

       if(mysqli_stmt_num_rows($stmt) > 0) {
          echo json_encode($message);
       }else {
          echo json_encode($failure);
       }

    }

?>

下面是我登录java的练习:

public class loginDosen extends AppCompatActivity {
    EditText txKodeDosen,txPassword;
    String KodeDosen,password;
    RequestQueue requestQueue;
    String loginURL ="http://192.168.43.217/test/DosenPublikasi/registerDosen.php";
    StringRequest request;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_login_dosen);

        txKodeDosen = (EditText)findViewById(R.id.txKodeDosen);
        txPassword = (EditText)findViewById(R.id.txPassword);
        requestQueue = Volley.newRequestQueue(loginDosen.this);
    }

    public void Login(View view) {

        if (txKodeDosen.getText().toString().equals("")) {
            Toast.makeText(this, "Kode Dosen Field is empty", Toast.LENGTH_SHORT).show();
        } else if (txKodeDosen.getText().toString().charAt(0) != 'D') {
            Toast.makeText(this, "Must have D in the start", Toast.LENGTH_SHORT).show();
        } else if (txKodeDosen.length() != 5) {
            Toast.makeText(this, "Must be 5 characters long", Toast.LENGTH_SHORT).show();
        } else if (txPassword.getText().toString().equals("")) {
            Toast.makeText(this, "Password Field is empty", Toast.LENGTH_SHORT).show();
        } else {
            JSONObject Login = new JSONObject();
            try {
                Login.put("kodeDosen", txKodeDosen.getText().toString());
                Login.put("password", txPassword.getText().toString());

            } catch (JSONException e) {
                e.printStackTrace();
            }

            JsonObjectRequest jsonobjectrequest = new JsonObjectRequest(Request.Method.POST, loginURL, Login,
                    new Response.Listener<JSONObject>()

                    {
                        @Override
                        public void onResponse(JSONObject response) {
                            Toast.makeText(loginDosen.this, response.toString(), Toast.LENGTH_SHORT).show();
                            SharedPreferences DataDosen = getSharedPreferences("Dosen", Context.MODE_PRIVATE);
                            SharedPreferences.Editor editor = DataDosen.edit();
                            editor.putString("kodeDosen", txKodeDosen.getText().toString());
                            editor.putString("password", txPassword.getText().toString());
                            editor.commit();
                            Intent intent = new Intent(loginDosen.this, homepageDosen.class);
                            startActivity(intent);
                        }
                    },
                    new Response.ErrorListener() {
                        @Override
                        public void onErrorResponse(VolleyError error) {
                            Toast.makeText(loginDosen.this, error.toString(), Toast.LENGTH_LONG).show();
                        }

                    });
            requestQueue.add(jsonobjectrequest);


        }
    }

从我问的另一个问题来看,他们说我仍然使用了php的响应,并将其放在祝酒词上,但没有对其做任何处理。我想找到一种方法来使用php响应来验证我的登录提示,因为当我尝试使用其他用户给我的代码时,它导致了一个未经处理的表达式错误


共 (1) 个答案

  1. # 1 楼答案

    有很多方法可以解决这个问题。最好的建议方法是设置响应头。例如,在成功登录的情况下,如果登录失败,您可以将响应代码设置为200或401

    您可以这样设置头(就在echo之前):

    header("HTTP/1.1 200 OK");
    header('Content-Type: application/json');
    

    然后在您的客户端,即Android,您可以检查响应代码,并根据响应代码计划您的操作