下面是一个注册表单,用户可以注册一个新帐户,但是当我尝试注册它时连接到服务器,但由于某种原因它无法注册!
来自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);
?>
感谢您的帮助