Android Studio应用程序无法使用MySQL登录

问题描述 投票:-1回答:1

我已使用以下代码在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

java php android mysql authentication
1个回答
0
投票

将吐司面包添加到负面条件中以说明问题所在。

使用邮递员检查您的php代码,如果您的php代码成功返回1或返回0

  • 我看了本教程。
  • 现在我的应用程序使用Internet和mysql服务器登录。
  • 登录和注册没有问题。
  • my application's apk file

我可以帮助您。给我发送电子邮件😉

© www.soinside.com 2019 - 2024. All rights reserved.