Performrequest: неожиданный код ответа 500
Я пытаюсь узнать, как создать систему регистрации с помощью онлайн-базы данных phpMyAdmin для моего приложения для Android. Я использовал это это(https://000webhost.com) для предоставления онлайн-базы данных, и я продолжаю получать эту ошибку при запуске моего приложения. BasicNetwork.performRequest: неожиданный код ответа 500 для
мой RegisterActivity :
public class RegisterActivity extends AppCompatActivity { private static final String KEY_STATUS = "status"; private static final String KEY_MESSAGE = "message"; private static final String KEY_FULL_NAME = "full_name"; private static final String KEY_EMAIL = "email"; private static final String KEY_PASSWORD = "password"; private static final String KEY_EMPTY = ""; private EditText etEmail; private EditText etPassword; private EditText etConfirmPassword; private EditText etFullName; private String email; private String password; private String confirmPassword; private String fullName; private ProgressDialog pDialog; private String register_url = "https://xxx.000webhostapp.com/register.php"; private SessionHandler session; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); session = new SessionHandler(getApplicationContext()); setContentView(R.layout.activity_register); etEmail = findViewById(R.id.etEmail); etPassword = findViewById(R.id.etPassword); etConfirmPassword = findViewById(R.id.etConfirmPassword); etFullName = findViewById(R.id.etFullName); Button login = findViewById(R.id.btnRegisterLogin); Button register = findViewById(R.id.btnRegister); //Launch Login screen when Login Button is clicked login.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(RegisterActivity.this, LoginActivity.class); startActivity(i); finish(); } }); register.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Retrieve the data entered in the edit texts email = etEmail.getText().toString().toLowerCase().trim(); password = etPassword.getText().toString().trim(); confirmPassword = etConfirmPassword.getText().toString().trim(); fullName = etFullName.getText().toString().trim(); if (validateInputs()) { registerUser(); } } }); } /** * Display Progress bar while registering */ private void displayLoader() { pDialog = new ProgressDialog(RegisterActivity.this); pDialog.setMessage("Signing Up.. Please wait..."); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } /** * Launch Dashboard Activity on Successful Sign Up */ private void loadDashboard() { Intent i = new Intent(getApplicationContext(), DashboardActivity.class); startActivity(i); finish(); } private void registerUser() { displayLoader(); JSONObject request = new JSONObject(); try { //Populate the request parameters request.put(KEY_EMAIL, email); request.put(KEY_PASSWORD, password); request.put(KEY_FULL_NAME, fullName); } catch (JSONException e) { e.printStackTrace(); } JsonObjectRequest jsArrayRequest = new JsonObjectRequest (Request.Method.POST, register_url, request, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { pDialog.dismiss(); try { //Check if user got registered successfully if (response.getInt(KEY_STATUS) == 0) { //Set the user session session.loginUser(email,fullName); loadDashboard(); }else if(response.getInt(KEY_STATUS) == 1){ //Display error message if email is already existsing etEmail.setError("Email already taken!"); etEmail.requestFocus(); }else{ Toast.makeText(getApplicationContext(), response.getString(KEY_MESSAGE), Toast.LENGTH_SHORT).show(); } } catch (JSONException e) { e.printStackTrace(); } } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { pDialog.dismiss(); //Display error message whenever an error occurs Toast.makeText(getApplicationContext(), error.getMessage(), Toast.LENGTH_SHORT).show(); } }); // Access the RequestQueue through your singleton class. MySingleton.getInstance(this).addToRequestQueue(jsArrayRequest); } /** * Validates inputs and shows error if any * @return */ private boolean validateInputs() { if (KEY_EMPTY.equals(fullName)) { etFullName.setError("Full Name cannot be empty"); etFullName.requestFocus(); return false; } if (KEY_EMPTY.equals(email)) { etEmail.setError("Email cannot be empty"); etEmail.requestFocus(); return false; } if (KEY_EMPTY.equals(password)) { etPassword.setError("Password cannot be empty"); etPassword.requestFocus(); return false; } if (KEY_EMPTY.equals(confirmPassword)) { etConfirmPassword.setError("Confirm Password cannot be empty"); etConfirmPassword.requestFocus(); return false; } if (!password.equals(confirmPassword)) { etConfirmPassword.setError("Password and Confirm Password does not match"); etConfirmPassword.requestFocus(); return false; } return true; } }
мой register.php:
<?php $response = array(); include 'db/db_connect.php'; include 'functions.php'; //Get the input request parameters $inputJSON = file_get_contents('php://input'); $input = json_decode($inputJSON, TRUE); //convert JSON into array //Check for Mandatory parameters if(isset($input['email']) && isset($input['password']) && isset($input['full_name'])){ $email = $input['email']; $password = $input['password']; $fullName = $input['full_name']; //Check if user already exist if(!userExists($email)){ //Get a unique Salt $salt = getSalt(); //Generate a unique password Hash $passwordHash = password_hash(concatPasswordWithSalt($password,$salt),PASSWORD_DEFAULT); //Query to register new user $insertQuery = "INSERT INTO member(email, full_name, password_hash, salt) VALUES (?,?,?,?)"; if($stmt = $con->prepare($insertQuery)){ $stmt->bind_param("ssss",$email,$fullName,$passwordHash,$salt); $stmt->execute(); $response["status"] = 0; $response["message"] = "User created"; $stmt->close(); } } else{ $response["status"] = 1; $response["message"] = "User exists"; } } else{ $response["status"] = 2; $response["message"] = "Missing mandatory parameters"; } echo json_encode($response); ?>
Что я уже пробовал:
проверьте информацию о моем подключении в poth my app и php сервисе
Richard Deeming
Код состояния 500 обычно означает, что произошла ошибка при запуске кода на стороне сервера. Вам нужно будет проверить содержимое ответа или журналы на вашем сервере, чтобы узнать, что это была за ошибка.
NB: То хэш пароля[^] функция уже добавляет соль, которая хранится внутри возвращаемого значения и используется пользователем. функцию password_verify[^].