Popular

Obten claves web y navega gratis Router keygen para Android

Error 403 Forbidden con phpmyadmin y WAMP Server

Realizar suma, resta y división con javascript

Login en Android con conexión a mysql.

Hola, bueno les escribo una forma sencilla de crear un login y conectarnos a mysql para verificar si el usuario existe como hacemos esto muy sencillo primero que nada crearemos el XML para el diseño de la aplicación:


<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <EditText 
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:hint="Usuario" 
        android:id="@+id/etUsuario"
        />
    
    <EditText
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content"
        android:hint="Contraseña"
        android:id="@+id/etContrasena"
        android:password="true"
        />
    
    <Button 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Ingresar"
    android:id="@+id/btIngresar"/>

</LinearLayout>

Ahora para conectarnos utilizaremos el método POST de PHP para esto creamos una calse que nos permita conectarnos "POST.JAVA"

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;

import android.util.Log;

public class Post {
  private InputStream is = null;
     private String respuesta = "";
     
     private void conectaPost(ArrayList parametros, String URL) {
      ArrayList nameValuePairs;
      try {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost(URL);
        nameValuePairs = new ArrayList();
        
        if (parametros != null) {
          for (int i = 0; i < parametros.size() - 1; i += 2) {
              nameValuePairs.add(new BasicNameValuePair((String)parametros.get(i), (String)parametros.get(i + 1)));
         }
         httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
        }
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();
      } catch (Exception e) {
       Log.e("log_tag", "Error in http connection " + e.toString());
      } finally {
      }
     }
     
     private void getRespuestaPost() {
      try {
       BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
       StringBuilder sb = new StringBuilder();
       String line = null;
       while ((line = reader.readLine()) != null) {
        sb.append(line + "\n");
       }
       is.close();
       respuesta = sb.toString();
       Log.e("log_tag", "Cadena JSon " + respuesta);
      } catch (Exception e) {
       Log.e("log_tag", "Error converting result " + e.toString());
      }
     }
     @SuppressWarnings("finally")
     private JSONArray getJsonArray() {
      JSONArray jArray = null;
      try {
        jArray = new JSONArray(respuesta);
      } catch (Exception e) {
       
      } finally {
       return jArray;
      }
     }
     
     public JSONArray getServerData(ArrayList parametros, String URL) {
      conectaPost(parametros, URL);
      if (is != null) {
       getRespuestaPost();
      }
      if (respuesta != null && respuesta.trim() != "") {
       return getJsonArray();
      }
       else {
        return null;
       }
     } 
}

Ahora crearemos en en la clase mainActivity detectarmos si es correcto el usuario en base al boton y el usuario ingresado, mediante un servicio PHP. 

import java.util.ArrayList;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class LoginzroxActivity extends Activity implements OnClickListener {
 EditText txtUsuario, txtPassword;
 Button connectar;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        connectar = (Button)findViewById(R.id.btIngresar);
        txtUsuario = (EditText) findViewById(R.id.etUsuario); 
        txtPassword = (EditText) findViewById(R.id.etContrasena);
        
        connectar.setOnClickListener(this);
    }

 public void onClick(View v) {
  // TODO Auto-generated method stub
  switch (v.getId()) {
  case R.id.btIngresar:
   if (txtUsuario.getText().toString().equals("")
   || txtPassword.getText().toString().equals("")) {
   Toast toast = Toast.makeText(this, "Verifica tus datos",
    Toast.LENGTH_LONG);
    toast.show();
   } else {
    ArrayList parametros = new ArrayList();
    parametros.add("Usuario");
    parametros.add(txtUsuario.getText().toString());
    parametros.add("Password");
    parametros.add(txtPassword.getText().toString());

    // Llamada al servidor web php
    try {
    Post post = new Post();
    String server_ip = "http://192.168.1.74//";                           JSONArray datos = post.getServerData(parametros, server_ip
       + "Proyecto_socialITAAndroid/hacerLogin.php");
     if (datos != null && datos.length() > 0) {
                            JSONObject json_data = datos.getJSONObject(0);
   int numdevueltos = json_data.getInt("cve_usuario");
    if (numdevueltos > 0) {
                   Toast.makeText(getBaseContext(), "Usuario Correcto...",
      Toast.LENGTH_SHORT).show();
     }
    } else {
                          Toast.makeText(getBaseContext(),
    "Usuario o Contraseña inválida",
     Toast.LENGTH_SHORT).show();
     }
    } catch (JSONException e) {
     Toast.makeText(getBaseContext(),      "Error al conectar con el servidor. ",
      Toast.LENGTH_SHORT).show();
    }
   }
   break;
  }
 }
}

El servicio PHP sería algo así: 
<?php
//hacerLogin.php
$user = $_POST['Usuario'];
$pass = $_POST['Password'];

$link = mysql_connect('localhost', 'root', '');
if (!$link) {
    die('No pudo conectar: ' . mysql_error());
}

mysql_select_db("dsc");

$q=mysql_query("SELECT * FROM usuarios 
           WHERE usuario='{user}' AND password='{pass}' ");

while($datos=mysql_fetch_assoc($q))

              $output[]=$datos;

      print(json_encode($output));

mysql_close($link);
?>

Descargar

Comentarios

jose ha dicho que…
muchas grax:D pero tengo una duda
"Proyecto_socialITAAndroid/hacerLogin2.php"); cual es ese no entiendo no es el mismoProyecto_socialITAAndroid/hacerLogin.php"); por otra parte la aplicacion me corre pero me dice puro clave o usuario invalido XD y yo mismo toy insertando los datos jajaja q son jose de user y pass 1234 para provar pero igual no dice invalido XD
jose ha dicho que…
nombre bd dsc
nombre de la tabla usuarios
1 usuario varchar(20) latin1_swedish_ci No Ninguna Cambiar Eliminar Más
2 password varchar(20) latin1_swedish_ci No Ninguna Cambiar Eliminar Más
aqui esta la esctructura de la base de datos como la estoy usando abra algo mal o.o ya me percate q el codigo q postiaste no esta hacerlogin2 y le acomode pero igual solo me dice user o pass invalidos XD q error estare cometiendo
jose ha dicho que…
04-23 03:11:11.034: W/KeyCharacterMap(278): No keyboard for id 0

04-23 03:11:11.034: W/KeyCharacterMap(278): Using default keymap: /system/usr/keychars/qwerty.kcm.bin

04-23 03:11:19.474: E/log_tag(278): Cadena JSon


04-23 03:11:19.474: E/log_tag(278): Notice: Undefined variable: output in C:\xampp\htdocs\Proyecto_socialITAAndroid\hacerLogin.php on line 21


04-23 03:11:19.474: E/log_tag(278): null
esos son lo errores o.o
Anónimo ha dicho que…
Yo también acabo de probar el codigo en eclipse con un emulador para android o con mi propio movil y siempre me dice q el usuario no existe y yo mismo lo he creado en la base de datos. Creo que se puede deber a la linea de url que no la coge bien y he probado con mi ip, con 10.0.0.2 y 10.0.2.2 y Nada tampoco va. Una ayuda por favor necesito correr esta aplicacion.
Manuel ha dicho que…
hola yo tambien lo intento usar y no funciona sale el mismo error ayudarian a revizar que sucede
Anónimo ha dicho que…
hola soy jose mi pana logre aser algo parecido a esto grax x el aporte ahora tengo una pregunta mira yo estoy tratando de conectar un dispositivo bluetooth ya que estoy haciendo una app para monitoreo cardiaco a travez de una banda polar wearlink plus con tecnologia bluetooth pero de verdad q estoy mal con lo de conectarle con la app este dispositivo necesito realmente ayuda ya q es para mi proyecto de fin de semestre y estoy realmente necesitando ayuda para esto ya que casi no hay ejemplos de este tipo de programacion x favor seria de gran ayuda que me recomendaras algunos ejemplos ya ni se que hacer de verdad y de verdad me esta gustando hacer cosas en android u.u ayuda x favor
TIntelligence ha dicho que…
@MarcosEspero te ayude suerte saludos.... Gracias por tu comentario es muy importante para nosotros...
Anónimo ha dicho que…
hola, con le codigo si hay conexión aunque parezca el error de "Usuario o Contraseña inválida", para esto se debe dar los permisos de Internet y tener en cuenta que para superiores no funciona correctamen (android:minSdkVersion="8"), lo que aun no entiendo es como lee los datos de el servidor web, ya que no lo esta haciendo correctamente.

por favor me podrías ayudar revisando el codigo y explicandome como lo de la lectura de los datos.
TIntelligence ha dicho que…
@Anónimolo hace a través de la clase JSONArray y así es si gustas ponte en contacto conmigo y lo analizamos.

Que tengas un excelente día Saludos.
TIntelligence ha dicho que…
@Carlos GarzonHola, lo he probado con una versión 2.3 y me ha funcionado perfectamente no creo que hubiera inconveniente.
TIntelligence ha dicho que…
@Carlos GarzonHola, lo he probado con una versión 2.3 y me ha funcionado perfectamente no creo que hubiera inconveniente.
Celso Puma ha dicho que…
Saludos, si me indican de donde sale este nombre "cve_usuario"..

Esta en esta línea:
int numdevueltos = json_data.getInt("cve_usuario");

Unknown ha dicho que…
@Celso Puma

Yo tambien quiero saber esto, favor alguien que responda!!!!
TIntelligence ha dicho que…
@David Reyeshttp://www.youtube.com/watch?v=GipKwMGO6Nc en esté video se explica algo similar...

Entradas populares de este blog

Error 403 Forbidden con phpmyadmin y WAMP Server

Número de filas afectadas por instrucción PL/SQL en Oracle [Utilidades].

Como truncar un número decimal en C# sin redondear.