我目前在Android注册过程中发现问题,验证似乎无法正常工作。我的意思是,当有一个空白字段,然后单击注册时,它直接在我的数据库中注册了空白字段。我不确定是什么导致它,我希望有人可以帮助我。下面是我的android java + php代码
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();
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);
}
});
}
}
答案 0 :(得分:0)
只需使用以下代码检查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);
}
}
答案 1 :(得分:0)
尝试关注此代码段
按钮点击活动
if(et_Username.isEmpty() || etUsername.length() == 0 || etUsername.equals("") || etUsername == null){
Toast.makeText(SignUpActivity.this, "Field is empty",Toast.LENGTH_SHORT).show();}
else
{
SignUp();
}
创建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);
}