注册新帐户失败

时间:2018-04-09 15:12:22

标签: java php android database-connection

下面是一个注册表单,用户可以注册一个新帐户,但是当我尝试注册它时连接到服务器,但由于某种原因它无法注册!
来自php文件的消息(嗯看起来像用户已经存在...)但是我确信用户不存在于数据库表中!

RegisterActivity.java

public class RegisterActivity extends AppCompatActivity {
TextView sign_in_text;
EditText Name,Email,Pass,ConPass;
Button reg_button;
AlertDialog.Builder mBuilder;

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

    sign_in_text = (TextView) findViewById(R.id.sign_in);
    sign_in_text.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            startActivity(new Intent(RegisterActivity.this,LoginActivity.class));
        }
    });

    Name = (EditText) findViewById(R.id.user_name);
    Email = (EditText) findViewById(R.id.email_register);
    Pass = (EditText) findViewById(R.id.password_register);
    ConPass = (EditText) findViewById(R.id.password_conf);
    reg_button = (Button) findViewById(R.id.reg_button);
    reg_button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            if(Name.getText().toString().equals("")|| Email.getText().toString().equals("")|| Pass.getText().toString().equals("")){

                mBuilder = new AlertDialog.Builder(RegisterActivity.this);
                mBuilder.setTitle("Oops something went wrong!");
                mBuilder.setMessage("Please fill all the fields");
                mBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.dismiss();
                    }
                });

                AlertDialog alertDialog = mBuilder.create();
                alertDialog.show();

            }
            else if (!(Pass.getText().toString().equals(ConPass.getText().toString()))){


                mBuilder = new AlertDialog.Builder(RegisterActivity.this);
                mBuilder.setTitle("Oops something went wrong!");
                mBuilder.setMessage("Your passwords are not matching");
                mBuilder.setPositiveButton("ok", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.dismiss();
                        Pass.setText("");
                        ConPass.setText("");
                    }
                });

                AlertDialog alertDialog = mBuilder.create();
                alertDialog.show();

            }

            else {

                BackgroundTask backgroundTask = new BackgroundTask(RegisterActivity.this);
                backgroundTask.execute("register",Name.getText().toString(),Email.getText().toString(),Pass.getText().toString());


            }
        }
    });
}
}

这是我连接到服务器的后台任务

BackgroundTask.java

   public class BackgroundTask extends AsyncTask<String, String, String> {
    String register_url ="http://justawesome.net/ozone_registration/register.php";

    String login_url ="http://justawesome.net/ozone_registration/login.php";
    Context ctx;
    ProgressDialog mProgressDialog;
    Activity activity;
    AlertDialog.Builder mBuilder;

    public BackgroundTask(Context ctx){

        this.ctx = ctx;
        activity = (Activity) ctx;
    }

    @Override
    protected void onPreExecute() {
        mBuilder = new AlertDialog.Builder(activity);
        mProgressDialog = new ProgressDialog(ctx);
        mProgressDialog.setTitle("Please wait");
        mProgressDialog.setMessage("Connecting to server....");
        mProgressDialog.setIndeterminate(true);
        mProgressDialog.setCancelable(false);
        mProgressDialog.show();

    }

    @Override
    protected String  doInBackground(String... params) {

        String method = params[0];

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

            try {
                URL url = new URL(register_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 name = params[1];
                String email = params[2];
                String password = params[3];

                String data = URLEncoder.encode("name", "UTF-8")+"-"+URLEncoder.encode(name,"UTF-8")+"&"+
                        URLEncoder.encode("email", "UTF-8")+"-"+URLEncoder.encode(email,"UTF-8")+"&"+
                        URLEncoder.encode("password", "UTF-8")+"-"+URLEncoder.encode(password,"UTF-8");

                bufferedWriter.write(data);
                bufferedWriter.flush();
                bufferedWriter.close();
                outputStream.close();

                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                StringBuilder stringBuilder = new StringBuilder();

                String line = "";
                while ((line=bufferedReader.readLine()) != null){

                    stringBuilder.append(line+"\n");
                }

                httpURLConnection.disconnect();
                Thread.sleep(5000);
                return stringBuilder.toString().trim();


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

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

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

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

            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 email,password;
                email = params[1];
                password = params[2];

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

                bufferedWriter.write(data);
                bufferedWriter.flush();
                bufferedWriter.close();
                outputStream.close();



                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                StringBuilder stringBuilder = new StringBuilder();

                String line = "";
                while ((line=bufferedReader.readLine()) != null){

                    stringBuilder.append(line+"\n");
                }

                httpURLConnection.disconnect();
                Thread.sleep(5000);
                return stringBuilder.toString().trim();


            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (UnsupportedEncodingException e) {
                e.printStackTrace();
            } catch (ProtocolException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(String... values) {
        super.onProgressUpdate(values);
    }

    @Override
    protected void onPostExecute(String json) {
        mProgressDialog.dismiss();

        try {
            JSONObject jsonObject = new JSONObject(json.substring(json.indexOf("{"), json.lastIndexOf("}") + 1));
            //JSONObject jsonObject = new JSONObject(json);
            //String response = jsonObject.getString("server_response");
            JSONArray jsonArray = jsonObject.getJSONArray("server_response");
            //JSONArray jsonArray = new JSONArray(response);
            JSONObject Jo = jsonArray.getJSONObject(0);
            String code = Jo.getString("code");
            Log.d("code0", code);
            String message = Jo.getString("message");
            Log.d("message", message);

            if(code.equals("reg_true")){

                showDialog("Registration Success", message,code);
                Log.d("code1", code);
            }
            else if(code.equals("reg_false")){

                showDialog("Registration Failed", message,code);
                Log.d("code2", code);
            }

            else if (code.equals("login_true")){

                Intent intent = new Intent(activity, AccountActivity.class );
                intent.putExtra("message", message);
                activity.startActivity(intent);
            }
            else if (code.equals("login_false")){

                showDialog("Login Error...",message,code);
            }

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

    }

这是php文件。

P.S。:我测试了后端,它工作正常。

<?php

 $name = $_POST["name"];
 $email = $_POST["email"];
 $password = $_POST["password"];
 require "init.php";

 $query = "SELECT * FROM userdb WHERE email like '$email';";
 $result = mysqli_query($con,$query);

    if (mysqli_num_rows($result)>0){

        $response = array();
        $code = "reg_false";
        $message = "Hmmm Look Like User Already Exist...";
        array_push($response,array("code"=>$code,"message"=>$message));
        echo json_encode(array("server_response"=>$response));
    }
    else{
        $query = "INSERT INTO userdb(name,email,password)values('$name','$email','$password');";
        $result = mysqli_query($con,$query);


        if(!$result){

        $response = array();
        $code = "reg_false";
        $message = "Some server error occourred.  Try again... ";
        array_push($response,array("code"=>$code,"message"=>$message));
        echo json_encode(array("server_response"=>$response));

        }else{

            $response = array();
            $code = "reg_true";
            $message = "Yuoohooo Registration Success... Thank you";
            array_push($response,array("code"=>$code,"message"=>$message));
            echo json_encode(array("server_response"=>$response));

        }
    }

 mysqli_close($con);

?>

感谢您的帮助

0 个答案:

没有答案