[英]Android volley login registration with password confirmation
我目前在我的android注冊過程中發現問題,驗證似乎無法正常進行。 我的意思是,當有一個空白字段並單擊“注冊”時,它直接在我的數據庫中注冊了空白字段。 我不確定是什么原因引起的,希望有人能幫助我。 下面是我的Android Java + PHP代碼
注冊.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
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
<?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);
?>
更新了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);
}
});
}
}
只需使用以下代碼檢查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);
}
}
嘗試遵循此片段
按鈕單擊事件
if(et_Username.isEmpty() || etUsername.length() == 0 || etUsername.equals("") || etUsername == null){
Toast.makeText(SignUpActivity.this, "Field is empty",Toast.LENGTH_SHORT).show();}
else
{
SignUp();
}
創建注冊方法
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.