首页 > 解决方案 > 如何使用 android studio 和 php mysql 验证登录用户

问题描述

嗨,这是我用来登录 myqsl 的代码,它用于注册

但是当我点击登录时,它会使我的应用程序崩溃,并出现以下错误。

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.net.URLEncoder;


public class BackgroundTask extends AsyncTask<String,Void,String> 
{

    AlertDialog alertDialog;

    Context ctx;

    public BackgroundTask(Context ctx) {

        this.ctx=ctx;

    }

    @Override

    protected void onPreExecute() {

        alertDialog=  new AlertDialog.Builder(ctx).create();

        alertDialog.setTitle("LOg in information");

    }

    @Override

    protected String doInBackground(String... params) {

        String reg_url="http://10.0.2.2/webApp/register.php";

        String login_url="http://10.0.2.2/webApp/login.php";

        String method=params[0];

        if (method.equals("register")){

            String name=params[1];

            String user_name=params[2];

            String user_pass=params[3];

            try {

                URL url= new URL(reg_url);

                HttpURLConnection httpURLConnection = (HttpURLConnection)url.openConnection();

                httpURLConnection.setRequestMethod("POST");

                httpURLConnection.setDoOutput(true);

                //to write the information

                OutputStream os= httpURLConnection.getOutputStream();

                BufferedWriter bufferedWriter = new BufferedWriter(new 

OutputStreamWriter(os,"UTF-8"));


            String data= URLEncoder.encode("user","UTF-8")+"="+ URLEncoder.encode(name,"UTF-8")+ "&"+
                URLEncoder.encode("user_name","UTF-8")+"="+ URLEncoder.encode(user_name,"UTF-8")+ "&"+
                    URLEncoder.encode("user_pass","UTF-8")+"="+ URLEncoder.encode(user_pass,"UTF-8");

            bufferedWriter.write(data);

            bufferedWriter.flush();

            bufferedWriter.close();

            os.close();

                InputStream is= httpURLConnection.getInputStream();

                is.close();

                return "Registration Sucess";

            } catch (MalformedURLException e) {

                e.printStackTrace();

            } catch (IOException e) {

                e.printStackTrace();

            }

        }

        else if (method.equals("login"))

         {

            String login_name=params[1];

            String login_pass=params[2];

            try {

                URL url=new URL(login_url);

                HttpURLConnection httpURLConnection= (HttpURLConnection) url.openConnection();

                httpURLConnection.setRequestMethod("POST");

                httpURLConnection.setDoOutput(true);

                httpURLConnection.setDoInput(true);

                OutputStream outputStream= httpURLConnection.getOutputStream();

                BufferedWriter bufferedWriter= new BufferedWriter(new OutputStreamWriter(outputStream,"UTF-8"));


            String data= URLEncoder.encode("login_name","UTF-8")+"="+URLEncoder.encode(login_name,"UTF-8")+"&"+ 
                    URLEncoder.encode("login_pass","UTF-8")+"="+URLEncoder.encode(login_pass,"UTF-8");

                bufferedWriter.write(data);

                bufferedWriter.flush();

                bufferedWriter.close();

                outputStream.close();

                InputStream inputStream= httpURLConnection.getInputStream();

                BufferedReader bufferedReader= new BufferedReader(new InputStreamReader(inputStream,"iso-8859-1"));
                bufferedReader.close();

                inputStream.close();

                httpURLConnection.disconnect();
                return "login Sucess";

            } catch (MalformedURLException e) {

                e.printStackTrace();

            } catch (IOException e) {

                e.printStackTrace();

            }
        }

        return null;

    }
    @Override

    protected void onProgressUpdate(Void... values) {

        super.onProgressUpdate(values);

    }
    @Override

    protected void onPostExecute(String result) {

        if (result.equals("Registration Sucess")){

            Toast.makeText(ctx, result, Toast.LENGTH_SHORT).show();

        }

        else if (result.equals("login Sucess")){

            Toast.makeText(ctx, result, Toast.LENGTH_SHORT).show();

        }

    }

}

错误日志猫:

2020-05-10 15:09:44.194 8130-8130/com.manith.mysqlapp E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.manith.mysqlapp, PID: 8130
    java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
        at com.manith.mysqlapp.BackgroundTask.onPostExecute(BackgroundTask.java:124)
        at com.manith.mysqlapp.BackgroundTask.onPostExecute(BackgroundTask.java:22)
        at android.os.AsyncTask.finish(AsyncTask.java:695)
        at android.os.AsyncTask.-wrap1(Unknown Source:0)
        at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:712)
        at android.os.Handler.dispatchMessage(Handler.java:105)
        at android.os.Looper.loop(Looper.java:164)
        at android.app.ActivityThread.main(ActivityThread.java:6541)
        at java.lang.reflect.Method.invoke(Native Method)
        at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

登录PHP代码:

 <?php

include"init.php";

session_start();

$user_name=$_POST["login_name"];

$user_pass=$_POST["login_pass"];

$sql_query = "select name from user_info where user_name like '$user_name' 

and user_pass like '$user_pass';";

$result =mysqli_query($conn,$sql_query);

if(mysqli_num_rows($result)>0)

{
$row=mysqli_fetch_assoc($result);


$name =$row["name"];

echo "Login Sucess... Welcome ".$name.";

}

else
{

echo "Login Failed.. Try Again";

}

标签: javaphpandroidmysql

解决方案


推荐阅读