How to make a login screen and password

0

I'm doing my first app and would like to know how I can make the login screen so that the user only accesses a certain area if they have a previously registered email and password.

    
asked by anonymous 13.07.2016 / 21:10

1 answer

3

You have several ways to do this I will show you how to do using PHP (server side), MYSQL (database) Java (android) and the Volley library. In your gradient add:

  

compile 'com.mcxiaoke.volley: library-aar: 1.0.0'

DATABASE CONNECTION (dbConnect.php)

<?php
define('HOST', 'ENDEREÇO DO SEU BANCO DE DADOS');
define('USER', 'NOME DE USUÁRIO DO BANCO DE DADOS CRIADO');
define('PASSWORD', 'SENHA DO BANCO DE DADOS CRIADO');
define('DB','NOME DO BANCO DE DADOS CRIADO');

$con = mysqli_connect(HOST,USER,PASSWORD,DB) or die('Não foi possível conectar!');
?>

SERVER SIDE LOGIN (login.php)

  

Remembering that you should have a table in your database containing the "login" and "password" fields.

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){

$username = $_POST['usuario'];
$password = $_POST['senha'];

$sql = "SELECT * FROM nome_da_tabela WHERE login='$username' AND senha='$password'";

require_once('dbConnect.php');

$result = mysqli_query($con,$sql);

$check = mysqli_fetch_array($result);

if (isset($check)) 
    echo "success"; 
else 
    echo "failure";

mysqli_close($con);
}
?>

Configuration Class (Android)

public class Config {
public static final String LOGIN_URL = "http://SUA_URL/login.php";

public static final String USUARIO = "usuario";
public static final String SENHA = "senha";

public static final String LOGIN_SUCCESS = "success";

public static final String SHARED_PREF_NAME = "myloginapp";

public static final String USUARIO_SHARED_PREF = "usuario";

public static final String LOGGEDIN_SHARED_PREF = "logado";
}

Login class (Android)

  

You should create an xml (activity_login) layout with the components for entering the login and password (EditText) and a button to validate (AppCompatButton or Button).

public class LoginActivity extends AppCompatActivity {

private EditText editTextUsuario;
private EditText editTextSenha;
private AppCompatButton buttonLogin;
private boolean loggedIn = false;
private SharedPreferences.Editor editor;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_login);

    SharedPreferences sharedPreferences = LoginActivity.this.getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE);
    editor = sharedPreferences.edit();

    editTextUsuario = (EditText) findViewById(R.id.editTextUsuario);
    editTextSenha = (EditText) findViewById(R.id.editTextSenha);

    buttonLogin = (AppCompatButton) findViewById(R.id.buttonLogin);
    buttonLogin.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            login();
        }
    });
}

@Override
protected void onResume() {
    super.onResume();
    SharedPreferences sharedPreferences = getSharedPreferences(Config.SHARED_PREF_NAME, Context.MODE_PRIVATE);

    loggedIn = sharedPreferences.getBoolean(Config.LOGGEDIN_SHARED_PREF, false);

    if(loggedIn){
        // SE ESTIVER LOGADO ENTÃO AO ENTRAR NA APLICAÇÃO VAI PARA TELA SEGUINTE
        Intent intent = new Intent(LoginActivity.this, SUA_ACTIVITY.class);
        startActivity(intent);
    }
}

private void login(){
    final String usuario = editTextUsuario.getText().toString().trim();
    final String senha = editTextSenha.getText().toString().trim();

    StringRequest stringRequest = new StringRequest(Request.Method.POST, Config.LOGIN_URL,
            new Response.Listener<String>() {
                @Override
                public void onResponse(String response) {
                    if(response.equalsIgnoreCase(Config.LOGIN_SUCCESS)){
                        editor.putBoolean(Config.LOGGEDIN_SHARED_PREF, true);
                        editor.putString(Config.USUARIO_SHARED_PREF, usuario);
                        editor.commit();

                        Intent intent = new Intent(LoginActivity.this, SUA_ACTIVITY.class);
 //SE O LOGIN E SENHA FOR IGUAL AO QUE CONSTA NA TABELA DO BANCO DE DADOS ENTÃO VAI PARA OUTRA TELA                         
 startActivity(intent);
                    }else{
                        Toast.makeText(LoginActivity.this, "Usuário ou senha inválidos!", Toast.LENGTH_LONG).show();
                    }
                }
            },
            new Response.ErrorListener() {
                @Override
                public void onErrorResponse(VolleyError error) {}
            }){
        @Override
        protected Map<String, String> getParams() throws AuthFailureError {
            Map<String,String> params = new HashMap<>();
            params.put(Config.USUARIO, usuario);
            params.put(Config.SENHA, senha);
            return params;
        }
    };
    RequestQueue requestQueue = Volley.newRequestQueue(this);
    requestQueue.add(stringRequest);
}
}
    
13.07.2016 / 22:35