0
So, guys, I’m trying to perform the login feature on my Adroid app. I am using android native Java, mysql and php, but I can not login to the application, and Android Studio does not return me any error.
Could someone take a look at my code and point out what might be wrong, or missing?
Loginactivity.java
package com.pedido.meu.telas_meu_pedido.controller;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import com.pedido.meu.telas_meu_pedido.R;
import com.pedido.meu.telas_meu_pedido.modelo.AssyncLogin;
public class LoginActivity extends AppCompatActivity
{
private EditText editTextUsername, editTextPassword;
private Button btnLogin;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
editTextUsername = findViewById(R.id.txtLogin);
editTextPassword = findViewById(R.id.txtPassword);
btnLogin = findViewById(R.id.btnLogin);
btnLogin.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final String username = editTextUsername.getText().toString();
final String password = editTextPassword.getText().toString();
new AssyncLogin(LoginActivity.this).execute(username, password);
}
});
}
}
Assynclogin.java.
package com.pedido.meu.telas_meu_pedido.modelo;
import com.pedido.meu.telas_meu_pedido.controller.ListaProdutosActivity;
import com.pedido.meu.telas_meu_pedido.controller.LoginActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.AsyncTask;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
public class AssyncLogin extends AsyncTask<String, String, String>
{
private LoginActivity loginActivity;
HttpURLConnection conn;
URL url = null;
public AssyncLogin(LoginActivity loginActivity) {
this.loginActivity = loginActivity;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected String doInBackground(String... params) {
try {
url = new URL("http://192.168.15.12/magnero/login.php");
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return "exception";
}
try {
// Setup HttpURLConnection class to send and receive data from php and mysql
conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(15000);
conn.setConnectTimeout(10000);
conn.setRequestMethod("POST");
// setDoInput and setDoOutput method depict handling of both send and receive
conn.setDoInput(true);
conn.setDoOutput(true);
// Append parameters to URL
Uri.Builder builder = new Uri.Builder()
.appendQueryParameter("username", params[0])
.appendQueryParameter("password", params[1]);
String query = builder.build().getEncodedQuery();
// Open connection for sending data
OutputStream os = conn.getOutputStream();
BufferedWriter writer = new BufferedWriter(
new OutputStreamWriter(os, "UTF-8"));
writer.write(query);
writer.flush();
writer.close();
os.close();
conn.connect();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
return "exception";
}
try {
int response_code = conn.getResponseCode();
// Check if successful connection made
if (response_code == HttpURLConnection.HTTP_OK) {
// Read data sent from server
InputStream input = conn.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
StringBuilder result = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
result.append(line);
}
// Pass data to onPostExecute method
return (result.toString());
} else {
return ("unsuccessful");
}
} catch (IOException e) {
e.printStackTrace();
return "exception";
} finally {
conn.disconnect();
}
}
@Override
protected void onPostExecute(String result) {
if (result.equalsIgnoreCase("true")) {
Intent intent = new Intent(loginActivity, ListaProdutosActivity.class);
loginActivity.startActivity(intent);
loginActivity.finish();
} else if (result.equalsIgnoreCase("false")) {
// If username and password does not match display a error message
Toast.makeText(loginActivity, "Invalid userename or password", Toast.LENGTH_LONG);
} else if (result.equalsIgnoreCase("exception") || result.equalsIgnoreCase("unsuccessful")) {
Toast.makeText(loginActivity, "OOPs! Something went wrong. Connection Problem.", Toast.LENGTH_LONG);
}
}
}
activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
android:layout_height="match_parent"
android:layout_width="match_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"
android:orientation="vertical"
>
<!-- Título da tela -->
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/ic_login"
android:layout_gravity="center"
android:layout_marginBottom="20dp"
/>
<TextView
android:id="@+id/txtTituloLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/txtTituloLogin"
android:textColor="@color/colorPrimary"
android:layout_gravity="center"
android:textStyle="bold"
android:textSize="30dp"
android:layout_marginBottom="50dp"
/>
<!-- Formulário da tela -->
<EditText
android:id="@+id/txtLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/login"
android:inputType="text"
/>
<EditText
android:id="@+id/txtPassword"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/senha"
android:inputType="textPassword"
/>
<Button
android:id="@+id/btnLogin"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/btnEntrar"
android:background="@color/colorBtnLogin"
android:textColor="@color/colorTxtLogin"
android:textSize="17dp"
android:padding="20dp"
android:layout_marginTop="8dp"
android:textStyle="bold"
/>
</LinearLayout>
</ScrollView>
login.php
<?php
include 'conexao.php';
$result='';
if(isset($_POST['username']) && isset($_POST['password']))
{
$username = $_POST['username'];
$password = $_POST['password'];
$sql = 'SELECT * FROM afiliado WHERE email = :username AND senha = :password';
$stmt = $conn->prepare($sql);
$stmt->bindParam(':email', $username, PDO::PARAM_STR);
$stmt->bindParam(':senha', $password, PDO::PARAM_STR);
$stmt->execute();
if($stmt->rowCount())
{
$result="true";
}
elseif(!$stmt->rowCount())
{
$result="false";
}
echo $result;
}
?>
php connection.
<?php
define('hostname', 'https://auth-db100.hostinger.com.br/index.php');
define('user', 'user');
define('password', 'password');
define('databaseName', 'datababase_mysql');
$connect = mysqli_connect(hostname, user, password, databaseName);
?>
already debugged the code to see where it goes? Maybe it goes through
unsuccessful
, maybe, in PHP, some of the tested variables are not set... To solve this, just debugging...– Leonardo Alves Machado
It seems that you are mixing mysqli with PDO, test your PHP code in a Postman or something, if it is working pass to android
– Costamilam