Не удается войти в Php MySQL Android

Я пытаюсь создать приложение, которое имеет функцию запоминания входа в систему, что означает, что если пользователь вошел в мое приложение, ему не нужно снова входить в систему. Я имею в виду это руководство

Но проблема в том, что я получаю invalid username or password сообщение, даже если я введу правильное имя и пароль. Я что-то пропустил?

MainActivity.java

 private void login(final String username, final String password) {

//Creating a string request
StringRequest stringRequest = new StringRequest(Request.Method.POST, Configs.LOGIN_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
//If we are getting success from server
if(response.equalsIgnoreCase(Configs.LOGIN_SUCCESS)){
//Creating a shared preference
SharedPreferences sharedPreferences = MainActivity.this.getSharedPreferences(Configs.SHARED_PREF_NAME, Context.MODE_PRIVATE);

//Creating editor to store values to shared preferences
SharedPreferences.Editor editor = sharedPreferences.edit();

//Adding values to editor
editor.putBoolean(Configs.LOGGEDIN_SHARED_PREF, true);
editor.putString(Configs.NAME_SHARED_PREF, username);

//Saving values to editor
editor.commit();

//Starting profile activity
Intent intent = new Intent(MainActivity.this, HomePage.class);
startActivity(intent);
}else{
//If the server response is not success
//Displaying an error message on toast
Toast.makeText(MainActivity.this, "Invalid username or password", Toast.LENGTH_LONG).show();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
//You can handle error here if you want
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> params = new HashMap<>();
//Adding parameters to request
params.put(Configs.KEY_USER_NAME, username);
params.put(Configs.KEY_PASSWORD, password);

//returning parameter
return params;
}
};

//Adding the string request to the queue
RequestQueue requestQueue = Volley.newRequestQueue(this);
requestQueue.add(stringRequest);
}

Configs

    public static final String LOGIN_SUCCESS = "success";
public static final String SHARED_PREF_NAME = "myloginapp";
public static final String LOGGEDIN_SHARED_PREF = "loggedin";
public static final String NAME_SHARED_PREF = "name";

Php

<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
$username = $_POST['username'];
$password = $_POST['password'];

require_once('dbConnect.php');

$sql = "select * from users where name='$username' and password='$password'";

$check = mysqli_fetch_array(mysqli_query($con,$sql));

if(isset($check)){
echo "success";
}else{
echo "Invalid Username or Password";
}

}else{
echo "error try again";
}

Я реализовал другую функцию входа в систему и использовал тот же URL

  private void login(final String username, String password) {

class UserLoginClass extends AsyncTask<String,Void,String>{
ProgressDialog loading;
@Override
protected void onPreExecute() {
super.onPreExecute();
loading = ProgressDialog.show(MainActivity.this,"Please Wait",null,true,true);
}

@Override
protected void onPostExecute(String s) {
super.onPostExecute(s);
loading.dismiss();
if(s.equalsIgnoreCase("success")){
Intent intent = new Intent(MainActivity.this,HomePage.class);
intent.putExtra("name",username);
startActivity(intent);
}else{
Toast.makeText(MainActivity.this,s,Toast.LENGTH_LONG).show();
}
}

@Override
protected String doInBackground(String... params) {
HashMap<String,String> data = new HashMap<>();
data.put("username", params[0]);
data.put("password",params[1]);

RequestHandler ruc = new RequestHandler();

String result = ruc.sendPostRequest(Configs.LOGIN_URL,data);

return result;
}
}
UserLoginClass ulc = new UserLoginClass();
ulc.execute(username, password);
}

Оно работает. Но если я изменю код на SharedPreferences, это не работает.

0

Решение

попробуй это

<?php
if($_SERVER['REQUEST_METHOD']=='POST'){
$username = $_POST['username'];
$password = $_POST['password'];

require_once('dbConnect.php');
$con = new database ("localhost","username","password","database");$sql = "select * from users where name='$username' and password='$password'";

$check = mysqli_fetch_array(mysqli_query($con,$sql));

if(isset($check)){
echo "success";
}else{
echo "Invalid Username or Password";
}

}else{
echo "error try again";
}

пожалуйста, назовите свой класс базы данных как $con = new yourclass name("localhost","username","password","database");

1

Другие решения

Проверьте сторону android по charles, проверьте сторону php с помощью Chrome’s Postman (Post mothod) и проверьте фразу Mysql by sql.

1

хорошо, я решил это.

Configs.KEY_USER_NAME должно быть равно username , но я определил это как name в Configs учебный класс .

0
По вопросам рекламы [email protected]