简体   繁体   English

带有密码确认的Android Volley登录注册

[英]Android volley login registration with password confirmation

I'm currently found a problem in my android registration process, the validation seems not working fine. 我目前在我的android注册过程中发现问题,验证似乎无法正常进行。 What i mean is that, when there is a blank field, and click register, it straight registered on my database with blank field. 我的意思是,当有一个空白字段并单击“注册”时,它直接在我的数据库中注册了空白字段。 I'm not sure what causes it, i hope someone can help me. 我不确定是什么原因引起的,希望有人能帮助我。 Below is my android java + php code 下面是我的Android Java + PHP代码

Register.java 注册.java

public class RegisterActivity extends AppCompatActivity {

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


    final EditText etUsername = (EditText) findViewById(R.id.etUsername);
    final EditText etPassword = (EditText) findViewById(R.id.etPassword);
    final EditText etPassword2 = (EditText) findViewById(R.id.etPassword2);
    final Button bNext = (Button) findViewById(R.id.bNext);
    final Button bBLogin = (Button) findViewById(R.id.bBLogin);

    bNext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            final String Username = etUsername.getText().toString().trim();
            final String Acc_Pass = etPassword.getText().toString().trim();
            final String Acc_Pass2 = etPassword2.getText().toString().trim();

            Response.Listener<String> responeListener = new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    try {
                        JSONObject jsonRespone = new JSONObject(response);
                        boolean success = jsonRespone.getBoolean("success");

                        if (TextUtils.isEmpty(Username) || Username.length() < 6){
                            if (TextUtils.isEmpty(Username))
                            {
                                etUsername.setError("You are required to enter a username");
                            }

                            else if (Username.length() < 6)
                            {
                                etUsername.setError("Your username is too short, minimum character is 6. Please re-enter");
                            }

                            return;

                        } if (TextUtils.isEmpty(Acc_Pass) || Acc_Pass.length() < 6){
                            if (TextUtils.isEmpty(Acc_Pass))
                            {
                                etPassword.setError("Your password is empty. Please try again");
                            }

                            else if (Acc_Pass.length() < 6)
                            {
                                etPassword.setError("Your password is too short, minimum character is 6. Please re-enter");
                            }

                            return;

                        } if (TextUtils.isEmpty(Acc_Pass2) || !Acc_Pass2.equals(Acc_Pass)){
                            if (TextUtils.isEmpty(Acc_Pass2))
                            {
                                etPassword2.setError("Your password is empty. Please try again");
                            }

                            else if (!Acc_Pass2.equals(Acc_Pass))
                            {
                                etPassword2.setError("Password mismatch. Please try again");
                            }

                            return;

                        } else if (!success){

                            AlertDialog.Builder builder = new AlertDialog.Builder(RegisterActivity.this);
                            builder.setMessage("Register Failed Username Unavailable")
                                    .setNegativeButton("Retry", null)
                                    .create()
                                    .show();
                            return;

                        } else {

                            Intent intent = new Intent(RegisterActivity.this, RegisterActivity2.class);
                            RegisterActivity.this.startActivity(intent);
                            return;
                        }

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

            RegisterRequest registerRequest = new RegisterRequest(Username, Acc_Pass, Acc_Pass2, responeListener);
            RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);
            queue.add(registerRequest);

        }
    });

    bBLogin.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
            RegisterActivity.this.startActivity(intent);
        }
    });

}
}

RegisterRequest.java RegisterRequest.java

public class RegisterRequest extends StringRequest {

private static final String REGISTER_REQUEST_URL = "http://192.168.1.2/AppRegister.php";
private Map<String, String> params;

public RegisterRequest(String Username, String Acc_Pass, String Acc_Pass2, Response.Listener<String> listener){
    super (Method.POST, REGISTER_REQUEST_URL, listener, null);
    params = new HashMap<>();
    params.put("Username", Username);
    params.put("Acc_Pass", Acc_Pass);
    params.put("Acc_Pass2", Acc_Pass2);
}

@Override
public Map<String, String> getParams() {
    return params;
}
}

AppRegister.php AppRegister.php

<?php

$connect = mysqli_connect("localhost", "root", "", "registering");

$Username = $_POST["Username"];
$Acc_Pass = $_POST["Acc_Pass"];
$Acc_Pass2 = $_POST["Acc_Pass2"];


 function registerUser() {
    global $connect, $Username, $Acc_Pass, $Acc_Pass2;
    $statement = mysqli_prepare($connect, "INSERT INTO account_details (Username, Acc_Pass, Acc_Pass2) VALUES (?, ?, ?)");
    mysqli_stmt_bind_param($statement, "sss", $Username, $Acc_Pass, $Acc_Pass2);
    mysqli_stmt_execute($statement);
    mysqli_stmt_close($statement);     
}



function usernameAvailable() {
    global $connect, $Username;
    $statement = mysqli_prepare($connect, "SELECT * FROM account_details WHERE Username = ?"); 
    mysqli_stmt_bind_param($statement, "s", $Username);
    mysqli_stmt_execute($statement);
    mysqli_stmt_store_result($statement);
    $count = mysqli_stmt_num_rows($statement);
    mysqli_stmt_close($statement); 
    if ($count < 1){
        return true; 
    }else {
        return false; 
    }
}

$response = array();
$response["success"] = false;  

if (usernameAvailable()){
    registerUser();
    $response["success"] = true;  
}

echo json_encode($response);
mysqli_close($con);
?>

Updated Register.java 更新了Register.java

public class RegisterActivity extends AppCompatActivity {

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

    final EditText etUsername = (EditText) findViewById(R.id.etUsername);
    final EditText etPassword = (EditText) findViewById(R.id.etPassword);
    final EditText etPassword2 = (EditText) findViewById(R.id.etPassword2);
    final Button bNext = (Button) findViewById(R.id.bNext);
    final Button bBLogin = (Button) findViewById(R.id.bBLogin);

    bNext.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            final String Username = etUsername.getText().toString().trim();
            final String Acc_Pass = etPassword.getText().toString().trim();
            final String Acc_Pass2 = etPassword2.getText().toString().trim();

            if (etUsername.getText().toString().matches("") || etPassword.getText().toString().matches("") || etPassword2.getText().toString().matches("")) {
                if (TextUtils.isEmpty(Username) || Username.length() < 6) {
                    if (TextUtils.isEmpty(Username))
                    {
                        etUsername.setError("You are required to enter a username");
                    }

                    else if (Username.length() < 6)
                    {
                        etUsername.setError("Your username is too short, minimum character is 6. Please re-enter");
                    }

                } if (TextUtils.isEmpty(Acc_Pass) || Acc_Pass.length() < 6) {
                    if (TextUtils.isEmpty(Acc_Pass))
                    {
                        etPassword.setError("Your password is empty. Please try again");
                    }

                    else if (Acc_Pass.length() < 6)
                    {
                        etPassword.setError("Your password is too short, minimum character is 6. Please re-enter");
                    }

                } if (TextUtils.isEmpty(Acc_Pass2) || !Acc_Pass2.equals(Acc_Pass)) {
                    if (TextUtils.isEmpty(Acc_Pass2))
                    {
                        etPassword2.setError("Your password is empty. Please try again");
                    }

                    else if (!Acc_Pass2.equals(Acc_Pass))
                    {
                        etPassword2.setError("Password mismatch. Please try again");
                    }
                }

            } else {

                Response.Listener<String> responeListener = new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        try {
                            JSONObject jsonRespone = new JSONObject(response);
                            boolean success = jsonRespone.getBoolean("success");

                            Intent intent = new Intent(RegisterActivity.this, RegisterActivity2.class);
                            RegisterActivity.this.startActivity(intent);

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

                RegisterRequest registerRequest = new RegisterRequest(Username, Acc_Pass, Acc_Pass2, responeListener);
                RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);
                queue.add(registerRequest);

            }
        }
    });

    bBLogin.setOnClickListener(new View.OnClickListener(){

        @Override
        public void onClick(View v) {
            Intent intent = new Intent(RegisterActivity.this, LoginActivity.class);
            RegisterActivity.this.startActivity(intent);
        }
    });

}
}

Simply check edittext is empty or not by using following code; 只需使用以下代码检查edittext是否为空;

 if( etUsername.getText().toString().matches("") || etPassword.getText().toString().matches("")  || etPassword2.getText().toString().matches("")  )
 {
 Toast.makeText(getApplicationContext(),"Please enter all fields....",Toast.LENGTH_SHORT).show();
 }
 else if( ! etPassword.getText().toString().matches(etPassword2.getText().toString()))
 {
 Toast.makeText(getApplicationContext(),"Please enter same both password fields....",Toast.LENGTH_SHORT).show();
 }

  else
  {
        Response.Listener<String> responeListener = new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                try {
                    JSONObject jsonRespone = new JSONObject(response);
                    boolean success = jsonRespone.getBoolean("success");


                        Intent intent = new Intent(RegisterActivity.this, RegisterActivity2.class);
                        RegisterActivity.this.startActivity(intent);


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

        RegisterRequest registerRequest = new RegisterRequest(Username, Acc_Pass, Acc_Pass2, responeListener);
        RequestQueue queue = Volley.newRequestQueue(RegisterActivity.this);
        queue.add(registerRequest);

    }
   }

Try to follow this snippet 尝试遵循此片段

On Button Click Event 按钮单击事件

    if(et_Username.isEmpty() || etUsername.length() == 0 || etUsername.equals("") || etUsername == null){
    Toast.makeText(SignUpActivity.this, "Field is empty",Toast.LENGTH_SHORT).show();}
else 
    {
    SignUp(); 
    }

Create SignUp method 创建注册方法

public void SignUp() {

        final String Username = etUsername.getText().toString().trim();
        final String Acc_pass = etPassword.getText().toString().trim();
        final String Acc_pass2 = etPassword2.getText().toString().trim();


        StringRequest stringRequest = new StringRequest(Request.Method.POST, REGISTER_URL,
                new Response.Listener<String>() {
                    @Override
                    public void onResponse(String response) {
                        Log.e("RESPONSE", response);

                        JSONObject jObj = null;
                        try {
                            jObj = new JSONObject(response);
                            String success = jObj.getString("success");
                            String errorMessage = jObj.getString("message");

                            } else {
                                Toast.makeText(SignUpActivity.this, errorMessage, Toast.LENGTH_LONG).show();
                            }

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


                        //  Toast.makeText(SignUpActivity.this, response, Toast.LENGTH_LONG).show();
                    }
                },
                new Response.ErrorListener() {
                    @Override
                    public void onErrorResponse(VolleyError error) {
                        Toast.makeText(SignUpActivity.this, error.toString(), Toast.LENGTH_LONG).show();
                    }
                }) {
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                params.put("Username", Username);
                params.put("password", Acc_pass);
                params.put("password2", Acc_pass2);

                return params;
            }

        };

        RequestQueue requestQueue = Volley.newRequestQueue(this);
        requestQueue.add(stringRequest);
    }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM