Login en Android usando PHP y MySQL

banner

Hola amigos de Android, el día de hoy les voy a mostrar cómo hacer una aplicación que simule el ‘logueo’ o identificación en un sistema alojado en la nube como las que usamos todos los días en diversas aplicaciones.

El tutorial estará divido en 2 partes, la parte web la cual describiré a continuación y la de Android. De momento el API de android no provee ningún método que permita ‘conectarse’ a través de internet directamente a una Base de Datos Remota y ejecutar una consulta dentro de ella. Para poder realizar esto se puede utilizar un web service al cuál se pueda acceder a el pasando diversos parámetros nos devuelve ya sea en formato XML o JSON, nuestro trabajo será obtener esa información devuelta y utilizarla en nuestra app.

Antes de seguir recomiendo haber leído los siguientes tutoriales:

http://androideity.com/2011/09/21/trabajando-con-threads-en-android-iii/

http://androideity.com/2012/06/03/consultar-un-servicio-web-en-android-parte-i/

http://androideity.com/2012/05/19/tutorial-de-widget-tercera-parte-3/

http://androideity.com/2011/10/19/intents-en-android-implicitos/

http://androideity.com/2011/10/17/trabajando-con-intents-en-android-overview/

Básicamente el funcionamiento sería algo así. peticion Cuando todo esté funcionando la aplicación debería hacer lo siguiente:

Login

 Parte web

Para realizar la parte web utilicé como lenguaje en la parte de servidor PHP (Version  5.3.1), como Base de Datos MySQL y como servidor Web Apache. Vamos a simular la nube para realizar pruebas de manera local para eso podemos utilizar XAMPP que pueden descargar del sitio oficial, además está disponible para varios sistemas operativo y es de muy fácil instalación y uso. No voy a explicar cómo instalarlo y configurarlo porque no es el objetivo de este tutorial pero si tienen algun consulta pueden visitar su documentación: http://www.apachefriends.org/es/faq-xampp.html

Base de Datos:

Como ya les comente utilizaremos MySQL, podemos aprovechar la utilidad que provee xampp llamada phpmyadmin por lo cual accederemos mediante http://127.0.0.1/phpmyadmin luego de loguearnos. *si tuvieron algún problema pueden verificar la documentación oficial Vamos a crear una BD llamada ‘droid_login‘ como lo muestra la siguiente imagen:

crearbd

 O si vamos a la solapa SQL podemos ejecutar la siguiente consulta:

CREATE DATABASE droid_login;

Al ser  la aplicación solamente un ejemplo y al no tener un uso real crearemos una tabla llamada ‘usuarios‘ en donde guardaremos el nombre de usuario y password juntos.

 En la vida real para dotar de mayor seguridad el password debería guardarse encriptado y tal vez el usuario y password en tablas separadas.

Podemos crear la tabla ejecutando esta simple consulta:

Create Table usuarios( username varchar(10) NOT NULL , passw varchar(20) NOT NULL )

Con esto basta por ahora con la base de datos.

Dentro de la carpeta htdocs crearemos una carpeta llamada ‘droidlogin’ dentro de la cual colocaremos los siguientes archivos que podrán descargar más abajo, estos serán la parte web de nuestro sistema.

Podrán ver el contenido de estos archivos descargándolo de más abajo, recomiendo estudiar el funcionamiento de cada uno para una mayor comprension.

config.php En este se define el nombre de la base de datos su usuario, password y la ip del servidor.

Actualizacion 25/07/12

Es necesario modificar este archivo para poder adecuarlo a la configuracion de la BD de cada uno.

deberan modificar el valor que esta en rojo.

<?php
/**
* Database config variables
*/
DB_HOST Hace referencia a donde se encuentra la BD si es en el mismo equipo utilizaremos localhost o 127.0.0.1 si se encuentra
en otro equipo deberemos colocar su direcciòn IP.
define(“DB_HOST”, “localhost“);
DB_USER cambiar por el nombre de usuario definido en la configuracion de la BD
define(“DB_USER”, “username“);
DB_PASSWORD Modificar por el password elegido
define(“DB_PASSWORD”, “password“);
DB_DATABASE Nombre de la base de datos reemplazar si se utilizo otro diferente al mencionado anteriormente

define(“DB_DATABASE”, “droidlogin”);

?>

 

connectbd.php Provee los métodos para conectarse y desconectarse a la BD.

funciones_bd.php Provee los procedimientos para interactuar con la BD e insertar nuevos usuarios, validar existencia de usuarios y validar un ‘login’

login.html    Mediante esta página podemos ‘loguearnos’ mediante el navegador sirve para observar la respuesta del sistema.

acces.php  Se encarga de devolver en notacion Json si el logueo es valido

 adduser.html Permite realizar alta de usuarios verificando previamente su existencia utiliza adduser.php

Para poder comprobar qué es lo que hará la aplicación podemos verlo a través del navegador pero primero debemos crear un usuario.

Accedemos a http://127.0.0.1/droidlogin/adduser.html

podemos ingrear

usuario: test

password: test01

adduser

Luego al clickear en ‘Agregar’             

Si queremos volver a agregar el mismo usuario, nos mostrará el siguiente mensaje:

Este usuario ya existe ingrese otro diferente!”

por lo que la aplicacion tambien controlara que no halla usuario repetidos.

Podemos verificar directamente desde la BD los usuarios creados: 

verificamos desde la BD

Antes de pasar a la parte de Android vamos a probar si  todo funciona correctamente.

Para lo cual utilizaremos el archivo login.html

Accederemos a  el mediante http://127.0.0.1/droidlogin/login.html

veremos lo siguiente:

droidlogin html

Ingresamos el usuario y password creados anteriormente.

Si configuramos todo correctamente y nada falla deberiamos acceder al archivo acces.php el cual nos devolvera en notacion json si el logueo fue correcto o no.

[{“logstatus”:”0″}]  —> ” logueo invalido” –> debemos verificar que los datos ingresados sean iguales a los creados en la BD.

 [{“logstatus”:”1″}]  —> “logueo valido
Basicamente  esto que nos devuelve el servidor es lo que leera la app de android.
si todo funciono bien pueden seguir con la sig. parte.

Parte Android:

Al proyecto lo llame droidlogin, lo podrán descargar del repositorio.

proyecto

Para la UI he tratado de inspirarme en el contenido link http://inspired-ui.com/tagged/logins aunque son de iOS sirven igual. He creado 2 interfaces para cuando el teléfono se encuentre en posicion horizontal (layout-land)

port-land

  o vertical (layout-port)

 

layout-port

 Para hacer la interfaz más agradable hice que los EditText tengan bordes redondeados, encontré en Stackoverflow un post sobre esto.

La pantalla de login es muy simple tiene un Button y 2 TextView que al presionarlos cada uno hará una acción diferente.

Se encuentran definidos en los siguientes archivos:

/res/layout-port/main.xml

 

layout port main

 

/res/layout-land/main.xml

 

layout land

El xml que utilicé para hacer los bordes redondeados es este:

res/drawable-ldpi/edittext_rounded_corners.xml

xml bordes redondeados

 

Ahora el AndroidManifest.xml.

Como pueden ver hay definidas 2 activities definidos.

Android Manifest

 

Ahora veremos el código principal, comento en cada caso.

/src/test/Droidlogin/Login.java

En la línea número 35 es necesario modificar esa dirección IP y reemplazarla por la del PC en el que esté el servidor web con los archivos descritos anteriormente.

Si van a colocar esto en internet deberían usar el dominio correpospondiente.

Tambien recorriendo revisar el Logcat para entender mejor el funcionamiento.

codigo

Como vemos, utilizo una clase interna asynclogin la cual es una AsyncTask para mostrar el progressdialog hasta que termina de realizarse la validación.

Desde esta clase redirecciono al usuario al HiScreen o en el caso de ser el ‘logueo’ inválido vibramos el teléfono y mostramos el mensaje de error.

También he creado una clase para manejar con mayor facilidad el envío de peticiones a nuestro web service. El manejo de su respuesta se encuentra en: /src/test/Droidlogin/library/Httppostaux.java

Httppostaux

 

Ahora veremos la otra activity a la que seremos redigiridos si el login es correcto.

Para esta también definí dos layouts diferentes para cubrir el cambio de la orientacion de la pantalla.

/res/layout-port/lay_screen.xml

 

 

layout-port-lay_screen

/res/layout-land/lay_screen.xml

layout-land/lay_screen

 

Ahora el código de su clase:

/src/test/Droidlogin/HiScreen.java

clase hiscreen

 

Luego de todo esto,

Si todo fue configurado y funciona correctamente  veremos al HiScreen que comenté anteriormente.

Cuando el usuario presiona Cerrar sesion volvemos a la ventana de logueo.

Pueden bajar el código completo desde nuestro repositorio, podrán acceder clickeando en la imagen más abajo.

En el mismo verán que hay una archivo llamado droidloginweb.zip dentro se encuentran droidlogin. Deberán mover esa carpeta al servidor web en la carpeta htdocs ya que en ella se encuentran todos los archivos para la parte web.

También incluí la carpeta droidlogin suelta.

 

ACTUALIZACIÓN 07/12/12

Dada la cantidad de comentarios en el post he realizado un video en el que les explico paso a paso como hacer andar este ejemplo, espero que les sirva:

Recuerden que si bajan todo el contenido comprimido y lo importan al Eclipse, luego deberán remover las carpetas mencionadas del proyecto.

 Pueden Descargar el codigo utilizado en nuestro tutorial desde nuestro repositorio.

para acceder simplemente den click en la siguiente imagen:

Github

 

Espero que les haya gustado el tutorial. Cualquier consulta o sugerencia no duden en hacerla en el cuadro de comentarios de abajo.

Saludos

Sebastián.

¿Te gustó este tutorial? ¡Compártelo!

 

387 Comments


      1. Hola, disculpa mi comentario, pero menos mal que vos sabéis programar, porque vuestra ortografía en español no es muy adecuada… Se dice Haya, con y…

        El vídeo esta muy genial y os agradezco tan valiosa información…

        Reply

  1. Excelente artículo Sebastián, lo esperaba desde hace mucho, gracias!!

    Reply

  2. Es un tutorial magnífico, nivel de calidad de esta web es increíble.
    Saludos

    Reply

  3. No es que sea haragán y solo haya clonado el código, pero tiene algunos inconvenientes a la hora de correrlo (modo web, la app Android funciona, pero no eh testeado completamente), tienes que revisar la parte de las conexiones, los nombres de las tablas están mal, (donde hace referencia a esta, pone “usuarios” cuando debería ser “usuarios2”, esto en el archivo funciones_bd.php linea 49, mejor dicho el mysql_query el otro es en la linea 67, mejor dicho dentro de la funcion de login), ademas el nombre de la base de datos que esta dentro del archivo config,php hace referencia a una base de datos distinta (“android_login” cuando es “droid_login”)

    No lo digo para que me ayudes (ya lo solucione), sino mas bien, por todos aquellos que son nuevos en esto y que quieren ver el funcionamiento de este código que queda como anillo al dedo para lo que necesito.

    Ademas, veo que tienes algunos de estos errores en esta entrada


    Al ser la aplicación solamente un ejemplo y al no tener un uso real crearemos una tabla llamada ‘usuarios‘ en done guardaremos el nombre de usuario y password juntos.

    Podemos crear la tabla ejecutando esta simple consulta:
    Create Table usuarios2( username varchar(10) NOT NULL , passw varchar(20) NOT NULL )

    Pero te felicito, vuelvo a repetir, esta excelente, solo un novato de los mas novatos no se daría cuenta de estos errores que quizás dejaste a propósito para que aprendamos el arte del codeo, gracias

    Reply

    1. Hola,
      Gracias por tomarte el tiempo en comentar y detectar esos errores en la publicacion no los habia visto, ya modifique el tutorial ahora deberia estar bien.

      Me alegro que te halla gustado!

      Saludos

      Reply

      1. porfa!! pasame el link para descargar el codigo!!! gracias!!!

        Reply

        1. Es muy simple, solo has clic en la imagen que dice GITHUB social coding, cuando te redireccione has clic en el botón de zip (a la par tiene un icono de una nube simbolizando la descarga) y tendras el codigo

          Reply

    2. hola una pregunta como resolviste el problema para que se reciba los datos del mysql con android ya tengo mi bas creado igual mi tabla pero no se conecta me marca error de nombre de usuario o password incorrecta

      Reply

  4. como puedo descargar el codigo?????

    Reply

    1. haciendo clic en la imagen de github

      Reply

  5. Muy Buen tutorial :-)

    Solo he encontrado un error en la parte web:

    Cambiar la línea 8 del fichero config.php de:

    define(“DB_DATABASE”, “android_login”);

    por:

    define(“DB_DATABASE”, “droid_login”);

    Solo hay que quitar “an” de “android_login”.

    Un saludo, y Gracias.

    Reply

      1. Si en parte es correcto hay que modificar esa ip por la de cada uno, tambien deben tener en cuenta que si la direccion ip que tiene su pc es dinamica osea brindada por un servidor DHCP esta puede ser que varie por lo que deberan modificar el codigo cada vez que esta cambie, recomiendo que configuren en su computadora una direccion ip estatica.

        Respecto del código seria en si la linea 35, en la 36 lo que hago es completar la url con la ip de la 35 aunque también se puede reemplazar la variable ‘IP_Server’ de la linea 36 por la ip directamente.

        En si no toma la ip 127.0.0.1 esta es una direccion que hace referencia al propio servidor.( http://es.wikipedia.org/wiki/Loopback) se utiliza para acceder uno mismo a sus propios recursos pero desde el mismo pc osea que si queremos acceder desde otro debemos usar la ip que tenga asignada en la red.
        Me alegra que te halla gustado el tutorial.
        Gracias por haberte tomado el tiempo en comentar y aportar al post.

        Saludos!

        Reply

      2. me salvaste de una gracias =)

        Reply

      3. gracias viejo tenias problemas con el localhost

        Reply

      4. ERES UN DIOS! GRACIAS

        Reply

  6. Muy bueno, sólo una cosa. Recuerda siempre seguir las convenciones del lenguaje Java, parece que hiciste alguna mezcla de convenciones JavaPHP cuando codificabas. Recuerda que los métodos en Java se nombran empezando con minúscula y usando CamelCase, ej: “doPost” o “getUserByIdAndEmail”. Según recuerdo el símbolo “_” se utiliza en constantes únicamente, mismas que se escriben en mayúsculas, ej: “HAS_VALID_ACCOUNT”.

    Fuera de eso, una entrada bastante buena :)

    Reply

  7. Buenas, gracias por el tuto, muy currado si señor.

    Solo tengo una pregunta. Estamos trabajando con tablas ejemplo, y como bien dices las “password” en tablas reales de una bbdd de un foro por ejemplo están codificadas.

    ¿Debemos descodificar la contraseña para poder compararla con la que nos ha metido el usuario y así poderle dar login?

    Un saludo, y muchas por el curre 😉

    Reply

    1. Hola,

      A mi parecer si se deberia descodificar la contraseña que esta almacenada en la BD para poder compararla con la ingresada por el usuario, no conozco ninguna otra forma diferente de hacerlo.

      Saludos.

      Reply

      1. Pero… si están codificadas por algo será xD Bueno, buscaré metodos para hacerlo.

        Gracias, un saludo.

        Reply

        1. Estan codificadas por razones de seguridad, en ningun momento los datos dejan de estar encriptados en la BD, solamente se acccede al pass descodificado de ese usuario para compararlo por q los datos ingresados no estan encriptados.
          No tengo mucha experiencia con encriptacion tal vez halla alguna otra forma que desconozca.

          Podes dar un vistazo a este tutorial en el que los datos si se guardan encriptados, tal vez te ayude.

          http://www.androidhive.info/2012/01/android-login-and-registration-with-php-mysql-and-sqlite/

          Saludos.

          Reply

          1. Muchas gracias Sebastián, estoy empezando a tener mucha documentación acumulada xD.

            Lo dicho, gracias y buen curro con el tuto.

            Un saludo.


          2. No no, en lugar de desencriptar los de la BD, mejor encripta los datos que has pasado, y compara los datos encriptados…


  8. Hola muy buen tuto y buena web para novatos como yo, pero dado mi nula experiencia en php no me salgo, desde el servidor wamp me salen dos errores cuando intento ingresar un usuario nuevo, connectbd.php on line 23 y funciones_bd.php on line 61. Gracias.

    Reply

      1. hola sebastian no soy muy bueno en php y al momento de usar el adduser para mandar el usuario y contraseña me aparecen estos errores

        Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:AppServwwwdroidloginfunciones_bd.php on line 67

        Fatal error: Call to undefined function json_encode() in C:AppServwwwdroidloginacces.php on line 19

        claro yo estoy usando un app server pero no ahi mucha diferencia solo al momento donde seguardaran los archivos php espero y me puedas solucionar mis dudas el porque da ese error ??

        muchas gracias por cierto un 10 con este tutorial

        Reply

        1. Igual me aparece este otro error

          Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwwwdroidloginfunciones_bd.php on line 50
          ha ocurrido un error.

          espero y me puedas ayudar explicando porque sedan estos errores
          gracias

          Reply

          1. Hola,
            Estuve viendo tu problema creo tu problema tal vez se deba a esto:

            1º Fatal error: Call to undefined function json_encode() in C:AppServwwwdroidloginacces.php on line 19

            Puede deberse a que la version de php que utilizes este desactualizada y no incluya Json, que version usas?
            yo uso la 5.3.1, lo podes ver aca http://www.pedroventura.com/php/php-fatal-error-call-to-undefined-function-json_encode/
            si estas usando una version vieja te recomiendo que uses una mas reciente.

            2º Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:AppServwwwdroidloginfunciones_bd.php on line 50

            ¿Modificastes el archivo config.php con los datos de tu BD?
            voy a modificar el post y voy a agregar mas info sobre esto.

            En caso de que si proba creando los usuarios directamente en la base de datos y despues accede mediante el navegador web al formulario de logueo login.html y proba usando el usario y password que creastes manualmente.

            No soy un experto en php pero tal vez eso ayude a resolver el problema o a encaminar una solucion.

            Si alguno conoce alguna solucion diferente es bienvenida!

            espero que sea de ayuda!

            Saludos


          1. Como puedo utilizar esta aplicacion desde internet? he modificado la ip server del programa x a dir publica de mi router y despues e hecho un foorwarding, diriguiendo las peticiones que llegan al router al equipo donde tengo instalado apache al puerto 80, pero se queda pillado en utenticando. Me podria echar alguien una mano? Gracias!


          2. como puedo correrla en android 4.0 porfis


      2. Hola me salen errores por todos lados pero en adduser.html me salen estos dos.

        Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘username’@’localhost’ (using password: YES) in C:wampwwwdroidloginconnectbd.php on line 19

        Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:wampwwwdroidloginfunciones_bd.php on line 51

        Reply

          1. Si, bd user = username y bd password = passw lo pongo como tu ejemplo


          2. ok, por algun motivo esta rechazando la conexion, ¿usando ese usuario y password te podes conectar a la BD? (podes probar usando phpmyadmin o algun cliente de base datos que permita conectarse a mysql)
            podes probar tambien crear otro usuario para acceder a la bd y ver que ocurre.

            Saludos


          3. Me parece justo volver a contestar. El problema como ya dije era que no tenia ni idea de php. Pero ahora se un poquito más i entiendo el código y ya me funciona bien en mi web e incluso le he implementado el registro por imei para un sólo dispositivo-usuario. Gracias por el aporte e intentar ayudar a uno que no tenia ni una pequeña base… a veces se hace imposible ayudar…


    1. A mi me ocurrio lo mismo pero, lo que tuve que hacer fue modificar el config.php debido a que tenia la siguiente linea define(“DB_PASSWORD”, “1234”); con el password como el tiene su base de datos, entonces lo que debes de hacer es colocar la password que tengas, en mi caso mi password es 1234, espero te sirva

      Reply

      1. DB_PASSWORD no deberia ser passw o el nombre que le hayas puesto en esa columna en la bd?

        Reply

  9. Hola Amigo un apregunta en que trabajas tu para hacer este ejemplo? Eclipse o Appccelerator?

    Reply

  10. He actualizado el tutorial, agregue algunas cosas que me di cuenta gracias a sus comentarios que estaban poco explicadas

    sebastian.

    Reply

  11. hola, espero que andes de lo mejor y de paso te felicito es un buen tuto solo queria pasarte un tip o bueno un consejo para los que novatos como yo, lo que pasa es que una vez que inicias sesión en la clase HiScreen tu tienes un metodo que cacha el evento del boton BACK me refiero a este

    //Definimos que para cuando se presione la tecla BACK no volvamos para atras
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) {
    // no hacemos nada.
    return true;
    }

    return super.onKeyDown(keyCode, event);
    }
    a mi parecer siento que no seria como algo correcto hacer que el boton pierda su función para evitar eso lo unico que debes de hacer es finalizar el Activity de login después de iniciar HiScreen tu metodo que realiza dicha función quedaria algo así

    protected void onPostExecute(String result) {

    pDialog.dismiss();//ocultamos progess dialog.
    Log.e(“onPostExecute=”,””+result);

    if (result.equals(“ok”)){

    Intent i=new Intent(Login.this, HiScreen.class);
    i.putExtra(“user”,user);
    startActivity(i);
    finish();

    }else{
    err_login();
    }

    }
    estoy forza a que el Activity de login se cierre y así cuando presiones el boton BACK no haya problema de que se regrese a login pero ojo tambien ahora cuando le des clic en cerrar sesión antes de finalisar HiScreen tienes que iniciar login si no lo que haría seria salirse de la aplicación y el metodo de tu boton cerrar sesión quedaria así

    logoff.setOnClickListener(new View.OnClickListener(){

    public void onClick(View view){
    //’cerrar sesion’ nos regresa a la ventana anterior.
    Intent i=new Intent(HiScreen.this, Login.class);
    startActivity(i);
    finish();
    }
    });

    bueno al menos a mi me funciona de maravilla espero lo tomes en cuenta y lo pruebes saludos.

    Reply

    1. Hola me alegra que te halla gustado el tutorial!,

      Si es cierto no se si es del todo correcto que el boton pierda la funcionalidad, en si lo habia pensado como para que la unica forma de salir de ese activity sea “cerrando sesion” por eso no se puede volver para atras, es posible que esa funcionalidad en ese punto de la app sea algo para analizar si se le va a dar un uso serio, pero para decir verdad al tratarse de un mero ejemplo no es algo en lo que repare mucho queria hacer mas enfasis en el tema de la validacion del login.

      Te agradezco por tomarte tu tiempo, compartir unas lineas de codigo y aportar al mejoramiento del post.

      Saludos.

      Reply

  12. Hola, gracias por tu tutorial, llegue hasta la parte de la base de datos,esa parte corre perfecto, la parte en la que eh tenido problemas es en la parte de la conexion en android, parece que no acepta el ip, puesto que cuando pongo el usuario y contraseña en android, sale un anuncio que dice que la aplicación fue parada (unfortunately, droid login has stopped), por otro lado cuando presiono la opcion registrarse me lleva a la direccion url = “http://”+IP_Server+”/droidlogin/adduser.html”; y eh logrado registrar usuarios.
    Por otro lado eh bajado eh instalado el ksoap para la aplicación siguiendo las instrucciones del anterior tutorial.
    Talvez eh pasado algún detalle por alto, de antemano, muchas gracias por el tutorial

    Reply

    1. Hola,

      Veamos algunas cosas:
      1º Si desde tu computadora donde esta el servidor ingresas a
      http://127.0.0.1/droidlogin/login.html y te logueas usando el usuario y clave que creastes, te devuelve [{“logstatus”:”1″}]? si no probablemente no se halla creado el usuario.

      2ºRespecto de la IP y la conexion con android
      en /src/test/Droidlogin/Login.java en la linea 35 Modificastes la ip que esta puesta por la de tu servidor?
      sobre este error:
      (unfortunately, droid login has stopped)
      no te sabria decir habria que ver que es lo que muestra el Logcat.

      3º Para este tutorial no es necesario ksoap de hecho no lo nombro en ningun momento puse el enlace al principio para que puedan comprender algunos conceptos basicos.

      Espero que te sea de ayuda.

      saludos.

      Reply

  13. Lo que se suele hacer para la contraseña del usuario es cifrarla por ejemplo a un algoritmo de no retorno ( ejemplo: md5 ), es decir que no puedas descifrarlo, entonces a la hora de dar de alta guardas la contraseña en la bbdd con el hash que te da la contraseña cifrándola y entonces al hacer login vuelves a cifrar la contraseña para compararla con la bbdd y si es igual perfecto :). Os dejo función md5:

    public static String md5( String s ) {

    MessageDigest m = null;

    try {
    m = MessageDigest.getInstance( “MD5” );

    } catch( NoSuchAlgorithmException e ){

    e.printStackTrace();
    }

    m.update(s.getBytes(),0,s.length());
    String hash = new BigInteger(1, m.digest()).toString(16);
    return hash;

    }

    Es aconsejable hacer las peticiones por https al menos en el login para que no viajen los datos en plano.

    Nota: Encriptar no existe en castellano (cifrar)

    Reply

  14. Muy buen post, muy interesante.
    Quería comentarte una duda.
    Tengo que realizar una app que guarde datos de personas, junto a su foto….
    La base de datos sera actualizada con frecuéncia por los mismo usuarios y sobre las mismas tablas, y los datos tienen que tener un mínimo de seugridad.
    La mejor manera de realizarlo es mediante este sistema o recomiendas algún otro?
    Gracias!

    Reply

    1. Hola,
      Este es un ejemplo muy basico y no muy seguro ya que la idea era mostrar solamente como se podia realizar esto de una forma sencilla.
      Por lo que no he tenido en cuenta cuestiones de seguridad como evitar SQLinjection o realizar la conexion usando https (un lector aporto codigo sobre esto.)

      Pienso que podría usarse esta forma como para tener idea gral. y modificarlo.
      no te sabria recomendar ninguna otro.

      Tal vez alguno de los lectores pueda aportarte mas sobre esto.
      Saludos

      Reply

  15. otra cuestión….
    es necessario poder acceder via web?
    si solo quiero que se acceda por la aplicación?
    gracias!

    Reply

  16. Hola!

    Me sirvio mucho tu tutorial y quiero darte las gracias por publicarlo!
    Ahora bien, estoy tratando utilizando la libreria HttpPostAux para hacer otra conexion a un mismo servidor desde otra Activity utilizando, por supuesto, AsyncTask.
    A pesar de que tuve mucho cuidado a la hora de modificar los metodos OnPreExecute, doInBackground y onPostExecute; y los metodos err_login, loginstatus y checklogindata, cuando hago la prueba desde mi dispositivo android… en el LogCat se imprime una parranda de errores, que a segun son causados por un NullPointerException en la llamada a getserverdata de el medoto loginstatus.

    A que se puede deber esto?

    Si necesitan que publique mi codigo o sea mas preciso, por favor me lo indican, ya que me vendria muy bien algo de ayuda!

    Saludos y gracias de antemano!

    Reply

    1. Hola
      si para mas o menos poder orientarte habria que ver que fue lo que hicistes.
      si el codigo no es muy largo podes publicarlo en caso de que si lo fuese habria q ver la forma de hacermelo llegar para que la viese como para desvirtuar el post.

      Saludos.

      Reply

  17. Tengo problemas cuando hago el login por android, me sale “Error:Nombre de usuario o password incorrectos”,tengo una duda, en la clase login.java en String IP_Server=”127.0.0.1/”;//IP DE NUESTRO PC, yo lo estoy trabajando localmente, entonces nose si es la IP esa o la de mi pc o q, me imagino q por esto es el error, agradezco me colaboren con eso
    gracias

    Reply

    1. Hola,

      En ‘IP_Server’ debes poner la IP del servidor web, seguramente tengas el servidor web corriendo en la misma pc que usas el eclipse.
      Recorda que el codigo java se ejecuta dentro del emulador/dispositivo android
      por lo que la ip 127.0.0.1 haria referencia a el mismo y no al servidor.
      Tenes que poner la direccion IP que tenga tu PC en tu red.
      ten en cuenta que si tu pc esta conectada a un router y toma la ip automáticamente esta puede variar, por lo que te recomendaría que le asignes una fija.

      Saludos

      Reply

    2. hola no as intentado colocar IP_Server=”10.0.2.2/”; en android reconoce asi el localhost

      Reply

      1. Hola, yo recomendaria imaginar que el emulador de android es un dispositivo por fuera de la pc y utilizar la ip local del pc en lugar de localhost.
        Saludos

        Reply

  18. sebastián muchas gracias por tu aporte me sirve de mucho, en realidad soy un inexperto apenas estoy iniciando en php y android, la pregunta es sobre parte del código que eh bajado de la página pues al momento de entrar al http://localhost/droidlogin/acces.php me manda un error de éste tipo:

    Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:AppServwwwdroidloginfunciones_bd.php on line 68
    [{“logstatus”:”0″}]

    Lo siento si mi pregunta es muy tonta pero es que no logro comprender el error si se supone que el código está bien tal cual lo haz subido.

    De antemano muchas gracias.

    Reply

  19. hola Sebastian disculpa, lo que pasa es q tengo yo una base de datos creada sin embargo el nombre de las tablas es distinto, que es exactamente lo que debería cambiar? solo los php? o tmb modificar el código de android?

    Reply

    1. Hola,
      Deberias modificar el config.php y colocar los datos de correspondientes a tu BD,
      no se como sea pero tene en cuenta que esto funciona con Mysql solamente.

      Tambien deberias modificar en todos las consultas a las bases de datos los nombres de las tablas y el de los campos para cada caso.
      Con eso deberia bastar
      Saludos.

      Reply

  20. Hola, muy buen tutorial. Lo agradezco mucho, pero tengo un problema en la clase MainActivity, especificamente con la clase R, hice el import de test.droidlogin.r pero aun asi me manda error en la linea getMenuInflater().inflate(R.menu.activity_main, menu); y no se por que. Agradezco de antemano a quienquiera desee ayudarme.

    Reply

    1. Hola de nuevo, ya arregle el problema que tenia con MainActivity y resultaba que no necesitaba tal clase. Ahora mi problema es que aunque meta un usuario valido con su respectiva contraseña siempre me devuelve que el usuario o contraseña son invalidos y no se por que. He probado tanto en un Smartphone como en el emulador perteneciente a Eclipse.

      Reply

      1. Hola,
        Revisastes la BD?, realizastes las modificaciones al codigo para adecuarla a tu servidor web.
        Agregastes un usuario?

        Saludos

        Reply

        1. Sí, hice los cambios que me describiste y ahora funciona correctamente. Muchas gracias por el gran tutorial 😀

          Reply

          1. Sino les funcionan, prueben cambiar la ip de 127.0.0.1 a 10.0.2.2… que sería como el localhost del teléfono Android; a mi me funcionó!. Suerte Saludos


          2. que cambios hiciste


          3. Hice los cambios en la base de datos


        2. Hola!,
          primeramente, darte la enhorabuena y sobre todo las gracias por este fantastico manual, me has salvado la vida. XD

          Yo tengo el mismo problema, al hacer el login, siempre me da incorrecto. Me registro, compruebo que se ha actualizado en la base de datos, pero luego no logea.

          Saludos,
          Toñi.

          Reply

          1. Me faltaba cambiar una cosilla en el JSONArray jdata=post.getserverdata(postparameters2send, ….)

            gracias de nuevo.


          2. Perdón, que cambios realizaste. Muchas Gracias.


          3. que cambio se le hace?


          4. que cambio hicieste en esa linea


          5. Disculpa que cambio realizaste?


        3. hola les cuento que tngo el mismo problema, ya puse la direccion de mi servidor en este caso 127.0.0.1 e igual me sale q el usuario y contraseña no son validos así esten bien.. lograron solucionarlo??

          Reply

          1. Hola Sebastian,
            ante todo muchas felicidades y MUCHAS GRACIAS por el post, esta SUPER!! Pero bueno tengo el mismo problema que aunque ponga un usuario correcto, el sistema me responde que es incorrecto. Ya he hecho lo que indicas en las respuestas a estas preguntas: Ya modifique el codigo para mi servicio web, he creado un usuario y lo he comprobado en la BD y he entrado al sistema a traves de la web con el mismo usuario, pero nada. Es que acaso ya existe una solucion?


          2. Hola,
            El Codigo que subi funciona correctamente
            no es bug eso, puede deberse a varias cosas.
            Te dejo para que hagas unas pruebas.
            Desde el navegador del celular ingresa al servicio web y trata loguearte a ver que ocurre. recuerda que en el navegador debes poner la ip de red de tu pc Ej:192.168.xxx.xxx o como fuese no la local 127.0.0.1, si podes logearte todo anda bien debe ser algo del codigo en android que te falto modificar, recorda cambiar la ip en el codigo java tmb.
            Si tampoco anda no te sabria decir habria que verificar todo, podrias bajarte el codigo de nuevo.
            si no te anduvo indicame que version de android usas y que servidor web y os.

            Saludos.


  21. buenaso justo lo que estaba buscando gracias

    Reply

  22. Estimado Sebastian, eh revisado cuidadosamente, varias veces el tutorial y creo encontrar la razón por la que no corre el programa, en el AndroidManifest.xml tu trabajas con la versíon, , actualmelnte estoy trabajando con el version Ice Cream Sandwich, podrías confirmarme con que versión estas trabajando.

    atte
    Ethereal

    Reply

    1. Hola,
      En este tutorial use la version 8.
      Si no te anda deberias modificarlo por el numero de version que corresponda en tu caso segun lo que decis al 15.

      Reply

  23. Hola! Increible explicación..lo malo que no veo el lugar dónde bajar los archivos que comentas en la parte php…

    Dónde estan los links?

    Muchisimas gracias!!

    Y gran aporte!!!

    Reply

  24. hola,

    como se podría realizar el login automático, es decir, la primera vez que me conecto a la app introduzco usuario y contraseña y luego en posteriores conexiones desde el dispositivo no es necesario….Estilo app de facebook

    gracias y salu2.

    Reply

    1. Hola.
      Habria que modificar la aplicacion y la primera vez que se realiza un login existoso,
      guardar el usuario y el password en el telefono ya sea en una BD o en el shared preferences, luego la aplicacion al iniciar deberia buscar esos datos almacenados y realizar el login automaticamente sin solicitarselos nuevamente al usuario.

      saludos.

      Reply

  25. Hola sebastina

    solo quería preguntar si tendrías un tiempo para que me explicaras brevemente como pasar una tabla completa de una BD mysql a android.. y que se muestre ordenada… es mucho trabajo.. es que use tu aplicación para darme una idea para una aplicación que hice y solo me falta esa parte.

    Reply

  26. Hola, muy buena a portacion… me gustaria que me ayudes a enviar notificaciones des de php hacia la aplicacion de android…
    Es decir que al momento en que se aga alguna consulta en php y se guarde en la BD. mande un mensaje de que se a echo dicha transaccion…

    Reply

  27. men en que lado estan los archivos de php para descargar no los veo gracias

    Reply

  28. MUY BUEN APORTE…

    PERO YA REALIZE TODO SIEMPRE ME DEVUELVE QUE EL USUARIO Y EL PASSWORD SON INCORRECTOS…

    QUE PODRE TENER MAL…

    GRACIAS.

    Reply

  29. Hola, soy nueva en esto y quisiera saber si puedo tomar datos de edittext y buscarlos en una base de datos. Es decir ejemplo Colocar en un edittext y coloco computadora y cuando le doy al boton me despliegue todos los diferentes tipos de marcas que hay. Pero quiero que se conecte a una base de datos!
    Que temas puedo buscar para lograr esto??

    Reply

  30. Por cierto muy buenos tutoriales. Gracias por tu esfuerzo y dedicacion!

    Reply

  31. gracias por el aporte, tengo problemas con la aplicación, tengo mi base de datos y página en un host, y al realizar la consulta se cierra la aplicación

    Reply

  32. Todo bien hasta que quiero correr el login en el emulador, el problema es que ya agregué 2 usuarios, cambié mi IP en el código de java y seguí todos los pasos, el problema es que no me reconoce los datos, me dice que el usuario o el password están equivocados, ¿Que debo revisar para corregir esto?

    Reply

  33. Men tengo un problema con tu proyecto todo me sal hasta cuando le doy login para entrar hay se me totea lo hice con la version 2.3.3 api 10 la verdad no se que pasa y me pudieras ayudar aca esta mi correo andrey_201015@hotmail.com gracias

    Reply

  34. hola como estas, muy buen tut, me sirvio, y mas analizando el codigo, me sorprendo aprender y que se tomen la molesta de ayudarnos.
    Bien una duda se puede alojar datos de un webservices de su base de datos se alojen en la mia de sqlite android? espero pudieran hacer tal tutu avanzado

    Reply

  35. bueno te felicito por la aplicacion tengo easyphp y no me corre la aplicacion y no se que hacer

    Reply

  36. fenomenal, no estaria nada mal uno que enviara el registro, si no tiene cuenta xD

    Reply

  37. Como veo que hay demasiados comentarios sobre este post (la mayoria sobre los mismos problemas los cuales suelene ser q omiten algunos pasos), en cuanto pueda voy a subir un video de como configurar todo esto ya que tal vez con la explicacion no alcance.

    Reply

  38. Hola que tal la verdad esta super bn todo muy interesante!! pero tengo un problema con el login siempre me marca error en usuario y password ya revise en las tablas e incluso agregue desde mi cel mas usuarios pero cuando intento entrar me marca error

    Reply

  39. Muyy muy bueno es lo que necesitaba!! muchismas gracias!

    Reply

  40. Muy bueno el post!!! Lo probe pero se me queda en “Autenticando…” Hasta que vuelve a la aplicacion. Que puede ser?

    Reply

    1. Este es el error que me aparece en el logcat: Error in http connection java.net.SocketException: The operation timed out

      Reply

      1. Este error puede deberse a que el servidor tarde mucho tiempo en responder y la conexion caduca, realizastes las modificaciones al codigo como indique?
        si tratas de logearte via web da algun problema?
        las pruebas las haces en un servidor local o lo subistes a internet?
        en caso de que hallas modificado todo y este en internet podes probar modificando el timeout
        http://stackoverflow.com/questions/4470457/java-net-socketexception-the-operation-timed-out-problem-in-android

        espero q sirva saludos.

        Reply

      2. Hola eso puede ser por que el servidor tarde mucho en responder.
        si lo estas corriendo en local proba logeandote via web y ver que pasa.
        si lo subistes a internet y supongamos que esta todo bien podria modificarse el tiempo de timeout

        Reply

  41. Buenas!..excelente tutorial,para los que estamos arrancando con android, realmente muy,muy interesante…felicidades por el tutorial !..

    Reply

  42. Muy bueno aporte, pero necesito una ayuda, en la clase login donde esta la linea de configurar la ip y el “URL_Connect” entiendo que se escribe en el mismo codigo los datos, pero lo que necesito hacer es que la app tenga un menu de opciones con un editText en donde se pueda editar la URL o la IP desde la misma app….es decir el usuario tenga la opcion de cambiar el misma la direccion url de los archivos php sin tener que cambiarlo en el codigo…Espero alguien me pueda dar una ayuda, Saludos

    Reply

  43. como seria el código para registrar un usuario desde la aplicación sin tener la necesidad de usar el navegador?
    gracias

    Reply

  44. Necesito ayuda con la parte php… Cuando ingreso los datos en el adduser o en access, al hacer click en agregar o login, este me redirige a sus respectivos códigos php. Adjunto dos capturas de pantallas para que veas el resultado de intentar agregar o ingresar

    Reply

    1. Hola,
      Vaya que raro nunca me paso algo asi, de seguro debe ser algo con el servidor web que estas usando.
      saludos.

      Reply

    2. Si alguien mas tiene este problema es porque abrio el archivo .php desde el navegador con su ruta de windows, y no debe ser así si nó que en vez de file:///C blabla deben usar http://localhost/droid_login/acces.php

      Saludos

      Reply

  45. Hola Buen Día.

    Excelente manual tengo unos problemas quiero pedir su gran ayuda! les dejo los errores! main cannot be resolved or is not a field setContentView(R.layout.main);

    user= (EditText) findViewById(R.id.edusuario);

    pass= (EditText) findViewById(R.id.edpassword);

    blogin= (Button) findViewById(R.id.Blogin);

    registrar=(TextView) findViewById(R.id.link_to_register); link_to_register cannot be resolved or is not a field

    Reply

    1. Hola, el codigo que hice usa MySql , para poder usar postgres habria que hacer algunas modificaciones seguramente.
      saludos.

      Reply

  46. Al compilarlo me aparece el siguiente error: Package deployment failed with: INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION

    Reply

  47. te consulto xq funciona solamente cuando el celular esta conectado a wifi! y no cuando esta conectado a 3g o 2g o internet del telefono! sabrias la solucion?

    Reply

  48. @twitter-517563286:disqus por que solo funciona con wifi y no cuando el cel esta con otra conexion como 3g 2g etc!

    Reply

    1. por que cuando te conectas con wifi estas dentro de la misma red q esta el servidor, con 3g no. Puede andar con 3g pero en lugar de poner la ip local tenes q poner la ip q te da tu isp.

      Reply

  49. Hola sebastian las librerias de php estan siendo actualizadas .. las cuales en tu tutorial son aquellas.. por lo tanto te pediria que mejoraras eso .. muy bueno el tuto gracias por todo

    Reply

        1. Hola, ok ya entendi lo que querias decir.
          Gracias por aclararlo pero para el ejemplo con ese codigo simple basta no es necesario actualizarlo ya que el tutorial no esta focalizado
          en php si no en android.
          quedaria en cada uno si van a usar ese codigo hacer sus modificaciones.

          saludos.

          Reply

  50. Hola, de primeras felicitarte por el estupendo post ya que es muy útil e intuitivo.

    Pero tengo unos problemas con la App. Android que no acabo de solucionar.

    Para testear el servidor web, he probado a logearme con usuarios previamente guardados en la DB y funciona correctamente, es decir, me devuelve 1 si no hubieron fallos y 0 si sucedió algún error.

    Entonces el problema viene en esta linea de código de la clase httppostaux de la app android:

    if (is!=null){//si obtuvo una respuesta

    getpostresponse();

    return getjsonarray();

    }

    Ese “if” siempre obtengo que “is” es igual a null. Por lo tanto deduzco que ” httppostconnect(parameters,urlwebserver);” no se ha realizado correctamente.

    He debugado hasta esa linea de código, y parece estar bién hasta ahí. A parte, he tenido en cuenta que la IP del server es la IP de mi pc. Y la verdad es que no se que puede estar pasando. Alguna idea?

    gracias

    Reply

      1. Perdona como lo has solventado? Tengo el mismo problema, Gracias!

        Reply

        1. Hola,
          carlos_dmr tiene razon en cuanto dice que
          Ese “if” siempre obtengo que “is” es igual a null. Por lo tanto deduzco que ” httppostconnect(parameters,urlwebserver);” no se ha realizado correctamente.
          de seguro el problema es que hay algun error cuando hace la peticion.
          te recomiendo que revises el logcat y veas si da algun error y tambien que controles si colocaste la ip del servidor correctamente.

          En lo que es referido a codigo funciona bien ya que a muchos le anduvo sin problemas, por lo gral siempre son problemas relacionados con los cambios que hay que hacer para que ande con el servidor como explique en el video.

          Saludos

          Reply

  51. uhm.. hace tiempo use tu aplicacion y pude hacer una aplicacion que agregue , elimine, edite, listar datos de una bd en mysql y sql. Gracias a ti pude hacerlo 😉

    pero ahora resulto un problema, tengo un trabajo que hacer que consiste hacer una solucion multiplataforma (aplicacion web , en escritorio y android), las tres aplicaciones tiene que trabajar con el mismo webservice, ya termine la aplicacion de android y web pero la de escritorio aun no se como hacer que se conecte al webservice, la aplicacion para escritorio quiero hacerla en java pero aun no se como , sabes como puedo hacer para enviar y recibir datos de una aplicación escritorio java al web service, el web service que tengo es el mismo que tu usaste claro con algunas modificaciones , si puedes ver la pagina que subi : http://tallerii.comuf.com/ , por cierto la aplicacion que tengo que hacer es solo el mantenimiento de una tabla no es la gran cosa pero es una tarea :( para guiarnos de ahi y poder hacer un proyecto mucho mas grande.

    Ojala me puedas ayudar nuevamente :)

    Reply

      1. Reply

  52. Sabes cambie la ip en la confguracion android pero cuando inicio sesion con un usuario previamente agregado me sale todo el rato autentificando

    Reply

  53. Hola! se que hace tiempo que nose comenta nada en el post pero bueno… Tengo creada una aplicacion para android y lo unico que me queda es meter los datos que me ingresa el usuario en una base de datos a la cual accedo de manera remota ya que esta alojada en un servidor especifico.

    He probado tu tutorial adaptandolo a mi aplicacion, ala hora de hacer la conexion con el httppostaux me sale el error de Error in http connection org.apache.http.conn.HttpHostConnectException: Connection to http://ip_remota refused.. eso se que quiere decir que no ha realizado la peticion http correctamente, pero nose como solucionarlo.
    Agradeceria tu ayuda, gracias. Muy buen tutorial porcierto!

    Reply

    1. Hola,
      En el error veo algo raro:
      Error in http connection org.apache.http.conn.HttpHostConnectException: Connection to ‘ http://ip_remota ‘ refused..
      Esto esta raro http://ip_remota? ip_remota es una variables? o lo pusistes vos para no poner la ip en el comentario?
      si es una variables entonces es que en lugar de dar el valor de ip que contiene imprime su nombre, si eso ahi esta el error.
      Saludos

      Reply

    2. Hola,
      En el error veo algo raro:
      Error in http connection org.apache.http.conn.HttpHostConnectException: Connection to ‘ http://ip_remota ‘ refused..
      Esto esta raro http://ip_remota? ip_remota es una variables? o lo pusistes vos para no poner la ip en el comentario?
      si es una variables entonces es que en lugar de dar el valor de ip que contiene imprime su nombre, si eso ahi esta el error.
      Saludos

      Reply

      1. Hola!!Muchas gracias por contestar!!! Ya he solucionado el problema, era problema de puertos y que el servidor que no estaba bien configurado! No era problema de codigo.
        Ahora tengo el siguiente problema:
        mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:xampphtdocslogin.php on line 147

        Aunque me supongo yo que es problema de mi login.php, ya lo solucionaré.

        Muchas gracias :-)

        Reply

  54. Hola me tira un error Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:xampphtdocsdroidloginfunciones_bd.php on line 52

    ha ocurrido un error.

    Cuando quiero agregar un usuario en http://localhost/droidlogin/adduser.php

    Reply

    1. Hola puede que sea algun problema con la base de datos.
      Seguistes las instrucciones q comente en el video?
      Proba agregando el usuario directamente en la BD y trata de loguearte desde login.html

      Reply

  55. Hola,

    Tengo hecha una app que funciona en android 2.3.7, pero que si la corro en un 4 o 4.1 o 4.2 no se conecta. En aquel momento, vimos que era un tema de seguridad de android 4, pero no se puso que habia que variar para que te dejara autentificar y llegar al servidor asi como recibir datos el teléfono. ¿alguien me puede dar una pista?

    Gracias.

    Reply

      1. tienes por casualidad el proyecto completo a ver si puedo probarlo con lo que yo tengo hecho sin tener que picarme todo a mano?
        Gracias…

        Reply

          1. es verdad, que despiste… probaré tu versión a ver si varía el resultado… gracias!


      2. ME lo voy a a bajar completo ahora y el finde lo pruebo con los datos de mi base de datos a ver si es que use otra cosa para conectar con mysql… Gracias por este lugar de aprendizaje y a a ti por estar por ahí siempre…

        Reply

      3. Cierto, la tuya funciona perfectamente en 4.2.2. Eres un fiera. Una pregunta, ¿si fusilamos parte o todo tu codigo para una app (cambiando dibujos o no), deberemos incluir alguna mención o algo? ¿es correcto?

        Reply

        1. Hola, jaja gracias.
          hice el codigo con propositos de aprendizaje y para el que lo quiera usar pueda sentirse libre de usarlo pero todo el contenido de androideity esta bajo la licencia Creative Commons (ver este link http://creativecommons.org/licenses/by-nc-sa/2.5/mx/) por lo que pueden copiarlo distribuir, ejecutar y comunicar públicamente la obra y hacer obras derivadas pero si deben incluir una mencion a la fuente original del codigo.

          Una aclaracion importante como habras visto el codigo tanto de android y php es muy simple por lo cual es hipervulnerable y no inclui ningun tipo de validacion ni conceptos de seguirdad si se van a basar en este para una app van a tener q modificar la mayoria (o buena parte) del codigo y hacerlo un poco mas robusto por q seria muy simple de vulnerar, ademas puede haber algun que otro bug ya q no lo probe mucho, no se olviden de eso para evitar problemas en el futuro.

          Saludos.

          Reply

  56. Muy bueno el tutorial todas mis felicitaciones sebastian, pero me gustaria preguntarte como se podria hacer una aplicacion, por ejemplo un tabla de ciudades que contiene una foto y el nombre de la ciudad, de una base de datos mysql y usando php. Espero que tenga respuestas :)

    Reply

      1. Perdón Sebastian cipolat pero creo que no me exprese bien, o no entendí bien, yo quiero es por ejemplo sacar un listado de ciudades donde apareciera el nombre y una foto de la ciudad, usando php y mysql, por ejemplo:

        España:
        Madrid
        Barcelona


        Portugal:
        Lisboa

        Fracia:
        Páris

        Como se podría hacer.

        Reply

        1. Hola,

          Para ese caso yo haria algun codigo en php que por ejemplo cuando le pases como parametro españa o el nombre del pais te devuelva en JSON el listado de ciudades y por ejemplo para cada ciudad halla una referencia con la url de la imagen de cada ciudad.
          La aplicacion en android lo que deberia hacer es leer la respuesta del servidor, parsearlo y agregarlo a un listview por ejemplo.

          y lo que te decia de la imagen es que en ese json que devuelva dentro de cada ciudad la url de la imagen asi la app de android la saca de ahi.
          te dejo este link tal vez te sirva
          http://www.androidhive.info/2012/01/android-json-parsing-tutorial
          Saludos.

          Reply

  57. Hay un pequeño error en el fichero config.php, lo cierto es que si se sigue los pasos, y nos descargamos los ficheros fuente, hay una incongruencia en los nombres define(“DB_DATABASE”, “droidlogin”).

    En cambio al principio de este tutorial (muy bueno!!) se sugiere el nombre de droid_login, nótese que lleva una barra_baja.

    A mi este pequeño detalle me ha llevado un buen rato jeje.

    Reply

  58. MAGISTRAL!!

    una pregunta.

    tengo un cpanel (El Ejm no corre), por lo que veo, creo que es necesario un servidor Linux (VPS), en donde tenga una BDD mysql, para levantar servicios.

    Reply

    1. Hola,
      En este caso lo pense como para probarlo uno mismo con su propia pc, pero es correcto si quisieramos q esto funcione en internet deberia estar en un hosting o vps.

      Reply

  59. Muy interesante, he aprendido mucho. Gracias por tu dedicacion.

    Reply

  60. Muchas gracias de nuevo por el tutorial tengo una pequeña duda, si por ejemplo en la tabla usuarios agregara una columna que almacenara otro dato por decir promedio y quedara así mi tabla (username,passw,prom) como puedo desplegar el dato prom en la pantalla lay_screen(HiScreen), ya le moví a php, también creando nuevas variables en java y xml y nada mas no me visualiza el dato en la pantalla

    Reply

    1. Hola,
      Lo que deberias hacer es leer del Json que devuelve php el valor prom, de la misma forma que utilize para leer “logstatus” en el metodo loginstatus pero con ese valor.
      luego para pasarselo a HiScreen se lo podes pasar mediante un intent como hice con el user.

      espero q te sirva.
      Saludos

      Reply

        1. Hola,
          lo que devuelve todo ese php es correcto? esa parte anda bien?
          en caso de que si te recomiendo que debuges la app y veas linea a linea los valores que va tomando y por que no anda.

          Reply

          1. si cuando hago inicio de sesión con login.htm me devuelve [{“logstatus”:”1″},{“promstatus”:”1″}] en acces.php pero nada mas no en la app


      1. Saludos de nuevo perdón por las molestes.Mira así me quedo: mi tabla es:no_control,clave,promedio

        en funciones_bd.php en login quedo asi:

        public function login($user,$passw,$prom){

        $result=mysql_query(“SELECT COUNT(*) FROM inicio WHERE no_control=’$user’ AND clave=’$passw’ “);

        $count = mysql_fetch_row($result);

        $result2=mysql_query(“SELECT COUNT(*) FROM inicio WHERE promedio=’$prom’ “);

        $count2 = mysql_fetch_row($result2);

        en acces.php quedo:

        $prom = $_POST[‘promedio’];

        require_once ‘funciones_bd.php’;

        $db = new funciones_BD();

        if($db->login($usuario,$passw)){

        $resultado[0]=array(“logstatus”=>”0”);

        $resultado[1]=array(“promstatus”=>”0”);

        }else{

        $resultado[0]=array(“logstatus”=>”1”);

        $resultado[1]=array(“promstatus”=>”1”);

        }echo json_encode($resultado);

        Cree un nuevo método llamado promestatus y tiene lo mismo que loginstatus solo cambiando los valores para que sea promestatus y promstatus.

        creo un nuevo

        protected String doInBackground2(String… params) {

        prom=params[0];

        if (promestatus(prom)==true){

        return “ok”;

        }else{

        return “err”;

        }

        }

        y prom lo mando a onPostExecute para que en HiScreen lo mande a esta linea user = extras.getString(“prom”);//usuario

        Gracias de antemano.

        Reply

  61. Hola, primero agradeciéndote por tu tutorial, es muy bueno. Quizá la pregunta sea muy tonta pero se necesita bajar algo además de lo que mencionas, algo de Java? Es que al momento de importar tu proyecto me salen muchos errores en el Httppostaux.java.

    Muchas gracias de antemano, saludos.

    Reply

    1. Hola,
      Para que esto ande obviamente es necesario tener instalado el plugin de android para eclipse y por supuesto tenes instalado el sdk de android.
      con eso deberia estar fijate que es lo dicen los errores, si no podes probar apretando ctrl+shift+o para que resuelva las dependecias solo eclipse.
      saludos.

      Reply

      1. tambien fijate si en el proyecto no hay una carpeta llamada droidlogin que tiene archivos php adentro, si esta esa carpeta sacala de ahi.
        podes probar tambien, haciendo un clean al proyecto en eclipse

        Reply

  62. Funciona este Login en Android si la Base de Datos esta en un servidor externo? (no local), en otras palabras, habrá problema con el acceso a la Base de Datos de manera remota? Gracias!… me gusto mucho el tutorial!

    Reply

    1. Hola, deberia funcionar bien tanto local como en un servidor externo,
      lo unico al ser externo por supuesto habra mas delay.

      Reply

  63. que tal amigo muy buen tutorial y muy entendible para usuarios super novatos como yo jeje disculpa una pregunta donde dice que IP_Server pongo la dirección ip del servidor web en donde tengo mis archivos a consultar y me manda el siguiente error:

    E/AndroidRuntime(1979): FATAL EXCEPTION: main
    E/AndroidRuntime(1979): java.lang.SecurityException: Requires VIBRATE permission

    como podría resolver esos errores es que al momento de ingresar el usuario y contraseña dice autentificando y después de un rato se cierra la aplicación de ante mano gracias por el tutorial y la ayuda

    Reply

    1. IP_Server puede ser exactamente la ip, o simplemente agrega la direccion (de estar en la web), pero tu problema no es ese, si no que no has dado permiso en el manifiesto

      agrega esa linea a tu manifiesto

      Reply

        1. de nada, gracias a ti por el gran aporte, me ha servido mucho

          Reply

  64. Tengo el mismo problema que @jcgandroid:disqus me corre perfecto en versiones anteriores a la 4.0, pero en esa version no me funciona.. como puedo solucionar ese problema..?

    Reply

    1. Hola que raro eso no te sabria decir de momento, voy a probarlo para ver si me ocurre lo mismo y si encuentro como modificarlo actualizo el post.
      Saludos.

      Reply

    2. a mi me funciona perfecto, es mas lo he probado en mi telefono y tablet … las dos arriba de 4.0

      Reply

  65. Esta muy bueno tu tutorial eh (Y) pero tengo una pequeña duda. Me funciono de manera perfecta en el emulador pero cuando corro la aplicacion desde el celular, no me da paso al saludo. Sabes cual es la razon de eso? Espero tu respuesta ya que es muy importante esto para mi, utilizare esta aplicacion para titularme en mi escuela :)

    Reply

    1. Hola, no te sabria decir por que pasa eso,
      en los telefonos en los que lo probe anduvo bien,
      yo probaria tratar de debugear la aplicacion y ver paso a paso que es lo que hace de seguro descubris el motivo.

      Saludos.

      Reply

    2. lo hiciste en un servidor local?, si es asi, el dispositivo debe estar en la misma red … si el servidor es en la web, verifica si en el manifiesto esta el permiso para acceder a internet

      Reply

      1. Hola, es correcto, verifica si la ip que estas utilizando es correcto.
        tmb te recomiendo que debuges la app para ver que lo que ocurre.

        Reply

        1. asi es, una vez lo hizo bien pero despues ya no funciono :/ pero ya lo movi al servidor de mi escuela y funciona de manera perfecta, te lo agradezco me servira de mucho ya que lo utilizare para mi proyecto de titulacion

          Reply

  66. Hola antes que nada muy buen tutorial solo que tengo una duda, si en mi caso tengo una pagina Web ya en internet como puedo haser consultas a lbase de datos pero desde el movil. es parecido a este ejemplo?..

    Reply

    1. Hola, si podria hacerse de la misma forma q hice aca, ojo no quiero decir que todo el codigo de la parte web que este aca te sirva ,pero como idea sirve.

      Reply

    2. depende de la consulta, si quieres enviar una imagen, o quieres recibir mas datos es un poco diferente …

      Reply

    3. Hola, el principio de funcionamiento es similar a este, lo unico depende de lo que quieras hacer el codigo sera diferente obviamente.

      Reply

  67. Muchisimas gracias excelente aporte :)

    Reply

  68. Enorme Solución !!!! Muchísimas gracias por compartir esto 😉

    Reply

  69. Su reproductor tutorial está muy bien, me ha gustado mucho, más que hice todo lo que has dicho, he cambiado la ip a mi ip y localhost 127.0.0.1:8080 también cambió en more’m config.php no tener acceso … ¿Qué no lo sé, yo no sé mucho acerca de ArrayJSON y uno de los errores del LogCat y por la misma! Gracias de antemano si se puede ayudar a que venga.

    Reply

  70. Buenas noches, excelente tutorial, tengo una pregunta tu crees que sea posible realizar una conexión hacia sql server 2008??. Saludos

    Reply

    1. Hola, no directamente como ya explique en el tutorial pero si por medio de algun webservice por asi llamarlo como hice aca.

      Reply

  71. Demasiadas Gracias, estoy aprendiendo Android y a la vez desarrollando mi proyecto de titutlación y estos tutoriales han sido de mucha ayuda, que bkn contar con este tipo de comodines.
    saludos!

    Reply

    1. De nada me alegro de que te sea util.

      Reply

  72. Buenas tardes, primero que nada unas grandísimas felicitaciones por tu trabajo, veo que te tomas el tiempo para responder a cada una de los cientos de comentarios y apoyos que te piden.

    Te pido apoyo por que tengo una duda en la parte del SDK, mi servidor php responde perfectamente a la solicitud con un [{“logstatus”:”1″}] pero lamentablemente cuando la requisición la hace la aplicación, el log me responde con el siguiente error:

    04-27 18:04:30.757: E/log_tag(570): Error parsing data org.json.JSONException: End of input at character 0 of

    Si tienes tiempo apreciaría mucho tu apoyo.

    Reply

    1. podrias colocar algo de codigo, de lo que estas haciendo …

      Reply

      1. Hola antes de parsearlo al json fijate que es lo que esta tomando la app del servidor.

        es raro si no modificastes el codigo original no deberia darte problemas.

        por ahora nunca me tope con ese error, habria que hacer pruebas.

        date un vistazo a estos links tal vez te sirvan

        http://stackoverflow.com/questions/12089861/error-parsing-data-org-json-jsonexception-end-of-input-at-character-1-of

        http://stackoverflow.com/questions/15323098/error-parsing-data-org-json-jsonexception-end-of-input-at-character

        http://androidforums.com/application-development/217771-parsing-data-using-json-php-but-receiving-error-parsing-data-org-json-exception.html

        Reply

  73. hola soy nuvo en php y bueno tengo este error
    mysql_num_rows () espera parámetro 1 sea de recursos, boolean given en C: wamp www droidlogin funciones_bd.php on line 51

    a que se debe??

    Reply

    1. Hola, seguistes las intrucciones del video?
      revisa los comentarios anteriores que creo q alguien ya pregunto eso.
      saludos

      Reply

  74. amigooo una pregunta , me descargue el codigo y me funciono perfectamente , pero si kisiera por ejemplo una ves q haya inciado la sesion me diriga hacia otra ventana donde me permita agregar usuarios o tal ves nose con otra nueva tabla agregar datos de cualquier tipo como se podria hacer eso amigo de antemano muchas gracias

    Reply

  75. Hola, muchas gracias por este tutorial.

    Quisiera saber si tienes un tutorial o me puedes aconsejar en cuanto a ingresar datos a una base de datos desde android. De antemano muchas gracias

    Reply

    1. Hola, eso se puede hacer como hicimos aca pasandole los datos a un webservice y que este sea el que se comunique con la bd.
      segun tengo entendido no hay ninguna forma en android de ejecutar una query directamente en una BD.

      Reply

  76. Que tal viejo, la aplicación corrió a la perfección en el simulador y en mi dispositivo estando conectado a mi wifi, pero he ahí mi pregunta, cuando cambié a la red de datos móviles no funcionó, se quedo cargando, te agradecería que pudieras explicarme a que se debe eso?

    Reply

    1. Hola, en uno de los comentarios anteriores ya me preguntaron y explique sobre eso, basicamente es xq cuandote conectas por 3g ya no estas en la misma red con tu pc.
      saludos.

      Reply

  77. Hola, muy bueno el tutorial me ha sido de gran ayuda. Quisiera saber si tienes un tutorial en el que completes las acciones ya que en el ejemplo das dos opciones más Registrarse y olvidó su contraseña. En cuanto al primero (registrarse) si no es mucha molestia te agradezco cualquier tipo de información que me permitiera esto; pues me ha costado mucho trabajo el ingresar datos a una base de datos alojada en un servidor.
    De antemano muchas gracias

    Reply

    1. Hola yo haria eso de la misma forma que hicimos aca llamando a un webservice por asi decirlo y pasarle los parametros por post o get como si fuese una llamada ajax por ej, la parte del servidor es la que se va a encargar de leer los paremtros q recibe analizarlos y agregarlos a la bd.

      Para este tipo de apps es mejor pensarlas como si fuese una web que usa ajax.

      saludos

      Reply

  78. Buen día Sebastián.. Excelente post

    Tengo una pregunta.. Tengo que subir un aplicativo desarrollado en android con la misma funcionalidad (accedo al archivo php para que se conecte a mysql y me retorne una respuesta) en un hosting gratis.. Esto quiere decir acceder al archivo php desde mi móvil vía internet ej: http://www.mihosting.histingratis.com/acces.php, subi los archivos al hosting y al acceder desde el móvil me genera error.. Quisiera saber si tengo que realizar otro proceso o si lo que estoy haciendo si se puede hacer??

    Reply

    1. Hola con subir el archivo al hosting bastaria, si desde tu pc podes acceder y se ve bien desde el movil tambien deberia funcionar.
      no se cual es el error genera, depende de eso la solucion.

      Saludos

      Reply

  79. Muchas gracias; realmente necesitaba un ejemplo como este!!, me funcionó perfecto!!!

    Reply

  80. eres el mostro hermano.. gracias.. como muchos por aqui hablo ingles a la perfeccion, y bueno he buscado tutoriales por todos lados en ingles y español y este es por lejos el mejor … explicación clara y sencilla para todos los que necesitamos saber de donde sale cada variable :) saludos y continua con esos aportes..

    Reply

  81. Lo primero agradecerte este tutorial, es de lejos el que mejor he entendido.
    Tengo un problema en la parte del Registro. Tengo creada la función y los archivos necesarios en php para realizar el registro. Si lo pruebo desde navegador funciona todo correcto, pero el problema viene al ejecutarlo desde android….. La aplicación muere cuando llega a esta linea:

    JSONArray jdata=post.getserverdata(postparameters2send, ruta);

    Me he asegurado de que postparameters2send contenga los 3 valores correctamente agregados que necesita el formulario en php, y me he asegurado de que ruta apunte correctamente al archivo adduser.php

    Tienes alguna idea de porque muere la aplicación ahi ??? En el logcat me devuelve:

    threadid=9: thread exiting with uncaught exception (group=0x40018578)

    Un saludo

    Reply

  82. por favor, me puedes ayudar con el siguiente error?
    no tengo permisos de acceso al archivo acces.php, en el documento le doy acceso total y nada… ayuda por favor

    Reply

    1. Hola, No se que OS y servidor estes usando por lo q no te puedo ayudar, te recomiendo que veas los permisos que tiene el archivo y el directorio en el que este, si no puedes crear otro archivo en ese mismo directorio con el mismo contenido y ver q ocurre-

      Saludos.

      Reply

  83. Hola, esto creo que es una pregunta para Sebastian… estoy usando parte del codigo como base, llevo mucho avanzado, pero no consigo saber como hacer un insert en la base de datos de 2 campos adicionales a un user. Tengo el php creo que correcto, pero no se que poner en java, supongo que algo jnson, pero no lo entiendo bien. Ya he pasado la parte de verificar user y pass y ahora me he pasado el user y pass mediante un bundle a otra pantalla y quiero rellenar 2 campos más. Pero no lo veo… ¿me dais alguna idea? como llamo al fichero adddatosnuevos.php y le paso los 4 campos??

    Reply

    1. Este seria el adddatosnuevos.php

      db = new DB_Connect();
      $this->db->connect();

      }

      // destructor
      function __destruct() {

      }

      /**
      * agregar coordenadas
      */
      public function addcoord($lib1, $lib2, $username, $password) {

      $result = mysql_query(“INSERT INTO usuarios(username,lib1,lib2,passw) VALUES( ‘$username’, ‘$lib1’, ‘$lib2’, ‘$password’ )”);

      // check for successful store

      if ($result) {

      return true;

      } else {

      return false;
      }

      }

      }

      ?>

      Reply

      1. y este el adddatos por llamarlos de alguna manera:

        Reply

        1. bueno, sino sebastian, cualquiera que sepa como hacerlo. La parte php la tengo relativamente clara, o por lo menos se por donde tirar, pero la parte android, aunque me funciona la conexion y escribir datos en la base de datos. Durante el layout de login. Ahora en el segundo layout no no se replicarlo, de hecho me gustaria solo escribir, no tengo que hacer controles como en el login y supongo que el codigo es mas corto, pero no lo he entendido bien en el login porque no soy capaz de replicar los necesario en el segundo layout… ¿alquien puede darme algunas pinceladas? Gracias.

          Reply

      2. Si vas a llamar al adddatosnuevos.php directamente desde la app de android esta mal lo que pusistes ya que en ninguna parte toma los parametros que le pasas por POST/GET y se los pasa a addcoord(), creo que la cosa va por ese lado.
        Saludos.

        Reply

    2. Hola, eso lo podes hacer facilmente usando el codigo que hice, lo unico que tenes que hacer es crear un archivo en tu servidor web (con el nombre que quieras) y este reciba por parametros lo datos que me comentas, este php sera el que tendra la logica para conectarse a la bd y realizar el insert y desde la app android lo que debes hacer es llamar a ese archivo y pasarle los parametros que quieras. si tenes dudas con esto te recomiendo que lo leas varias veces al tutorial.
      Tambien podes leer este link que te va a ser util.http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/
      Saludos

      Reply

  84. Hola queria saber si me peude ayudar tengo un aplicativo web una cuenta ftp donde esta toda mi informacion ahora deseo hacer una version de esa web en adroid es posible y si es asi podrias ayudarme a tener una idea de como comenzar?

    Reply

  85. Hola, gracias por el tutorial, solo preguntarte una cosa, sabrías decirme como puedo hacer para que además del acceso a la base de datos mysql, se creara una base de datos en el propio móvil. Es decir que se sincronizen

    Reply

    1. Hola,
      para crear una bd en el telefono, podes usar SqLite, busca en el blgo que ya hay un post sobre eso.
      Ahora para que se sincronizen eso ya es mas dificil, una vez que la crees deberias llenarla con los datos que sacas de la de mysql.
      dale un vistazo al tutorial q te mencione, te va a servir
      saludos

      Reply

  86. cuando lo quiero correr en android version 4 me dice que usuario y contraseña incorrecto
    la pregunta es se puede utilizar en versiones recientes del android

    Reply

    1. les agradecería me puedan ayudar

      Reply

  87. Ya lo volví a intentar y corre perfecto gracias ahora solo hay que adaptarlo para poder insertar pero con la conexión fue mucha ayuda gracias

    Reply

  88. Excelente tutorial, se te agradece un buen

    Reply

  89. Excelente tutorial. Bien redactado y muy bien planteado en todos los puntos. Perfectas las descargas. Muy bien, de verdad, muy buen trabajo. Enhorabuena. Seguid así. Y muchas gracias.

    Reply

  90. Muy buen post!! gracias por el aporte, tengo un problema con letras con tilde. Por ejemplo si tengo “canción” en la tabla, cuando leo el json y mando ese texto me lo muestra como “canción” no como “canción”. Si pongo “canción” en la tabla el json se me regresa como Null. ¿cómo podría corregir esto para que interprete las tildes y cualquier otro caracter?.

    Gracias desde ya

    Reply

  91. Excelente amigo! Lo explicas muy bien lo hice sin problemas..

    A ver si me puedes ayudar un poco 😀 lo que pasa es que lo estoy haciendo para una pagina externa.. Pero cuando pulso el boton de entrar me da error, ¿porque? porque en la pagina no me muestra si es [{“logstatus”:”1″}] o [{“logstatus”:”0″}], como podría verificar de otra manera si me logueo? Supongo que podría leer parte del código fuente o el titulo de la pagina, pero como lo haría? si me podrías ayudar por favor 😀

    Muchas gracias!

    Reply

  92. Excelente tutorial Sebastián, me has aclarado muchas cosas acerca de la conexión a mysql.

    Espero me puedas ayudar con una dificultad que me surgió, paso que configure todo lo necesario para echar a andar el proyecto e incluso puedo ingresar usuarios desde la aplicación Android a la base de datos, pero no los reconoce para logear; al ejecutar el login.html en el navegador me da el siguiente error

    Fatal error: Call to undefined function json_encode() in C:Program Files (x86)xampphtdocsdroidloginacces.php on line 20

    Y este es el código que tengo en acces.php:

    login($usuario,$passw)){

    $resultado[]=array(“logstatus”=>”0”);
    }
    else

    {

    $resultado[]=array(“logstatus”=>”1”);

    }

    echo json_encode($resultado);

    ?>

    Tendrás idea de como solucionarlo Sebastián? (=

    Reply

  93. Hola,

    gracias por este tutorial. Me parece muy útil.

    Después de insertar el login me aparece un error de JSON.
    Adjunto una captura de pantalla del registro por si me podeis echar un cable para solucionarlo.

    Muchas gracias.

    Reply

  94. Muchas gracias por todo! Me ha ayudado mucho!
    Una consulta sólamente…el tema de la seguridad, para que quien vea el codigo no note la dirección php para luego acceder al archivo, como se puede hacer?
    Se hace por redirección del servidor? Gracias!!!

    Reply

    1. Hola, en el codigo siempre tiene que estar la url presente no se me ocurre ninguna forma de ocultarlo,
      la parte de seguridad deberia estar del lado del servidor.
      tal vez habria que ver si se puede obfuscar el codigo o algo asi.

      Saludos

      Reply

  95. Muy bueno el tutorial, una consulta como puedo pasar en parametro del text de usuario a otra actividad segun tu codigo de login?

    Agradezco de antemano.

    Reply

  96. Holas,lo primero me encanta tu post, soy novatillo en esto y me cuesta pero voy haciendo. La cosa es que me ocurre como muchos y es que cuando enciendo el emulador con el programa acabado pongo como usuario “test” y pass “test01” tal y como haces en el video me salta el error de que el Usuario y la Pass no son validos.

    La BD tiene el nombre correcto, la TD también y tengo el usuario test con su passw test01. El archivo.php (config.php) està correctamente modificado con el usuario de phpmyadmin (root) predeterminado. (He mirado por internet y me parece que podría ser por problemas de privilegos, no tengo ni idea voy muy perdido)

    Mire el logcat por ver que ocurría y dice:

    ——————————————————————————————————–

    08-24 13:40:22.222: E/getpostresponse(822):

    08-24 13:40:22.222: E/getpostresponse(822): 403 Forbidden

    08-24 13:40:22.222: E/getpostresponse(822):

    08-24 13:40:22.222: E/getpostresponse(822): Forbidden

    08-24 13:40:22.222: E/getpostresponse(822): You don’t have permission to access /droidlogin/acces.php

    08-24 13:40:22.222: E/getpostresponse(822): on this server.

    08-24 13:40:22.222: E/getpostresponse(822):

    08-24 13:40:22.233: E/log_tag(822): Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONArray

    08-24 13:40:23.217: E/JSON(822): ERROR

    08-24 13:40:23.217: E/onPostExecute=(822): err

    ——————————————————————————————————–

    La ip que puse es la de mi PC y no la del localhost ya que tambien me tira error.

    No se que hacer la verdad podrias contestar aunque sea un poco tarde para el post?

    Reply

  97. 08-24 13:40:23.217: E/JSON(822): ERROR

    08-24 13:40:23.217: E/onPostExecute=(822): err

    ———————————————————————————————————–
    Sigo con mi comentario al parecer no me sale todo en el otro que puse.

    Pues eso, la verdad no se que ocurre puede que sea una tonteria.
    Salu2

    Reply

  98. hola, muy buen tutorial. trate de hacerlo con Android Studio y compila sin errores pero cuando lo ejecuto la app me sale un cartel que dice “unfortunately app has stopped”. Es porque uso Android Studio en vez de Eclipse

    Reply

  99. Valla exelente ejemplo me ha funcionado muy bien ya he creado una aplicación muy similar para control de accseoso :) muchas gracias

    Reply

  100. Muy buen tutorial amigo, gracias por el aporte

    Reply

  101. hola, excelente post, pero me he trabado en las primeras lineas,cuando quiero ingresar un de prueba “test”, contraseña “test01”, me aparece este error

    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:xampphtdocsdroidloginfunciones_bd.php on line 51
    ha ocurrido un error.

    Reply

    1. Hola, de seguro te falto modificar algo.

      Reply

    2. Me salia un mensaje similar y era porque no había creado la tabla usuario.

      Reply

  102. Muy bien explicado, se agradece mucho,ahora mi problema es como mantener al usuario logueado para seguir haciendo mas consultas a la DB, si tienen alguna data x donde seguir investigando se agradece, Saludos!!

    Reply

    1. Hola, el codigo que hice no tiene ningun Timeout asi que siempre esta logueado, eso depende del caso seria algo a mejorar

      Reply

  103. Sebastian excelente tuto.. queria hacerte una pregunta, yo lo segui paso a paso y tengo un problema y es que siempre me sale el error de login y ya vi si creo bn el usuario y contraseña, todo esta bn, porque pasa esto?

    Reply

    1. Hola, no te lo sabria decir pueden ser muchas cosas, repasa el video por si te falto algo.

      Reply

  104. Estos aportes son los que enriquecen internet. Gracias!!

    Reply

  105. Hola Sebastian, te habla Carlos de Venezuela. Estaba viendo tu excelente tutorial de login en android usando php y mysql. En la parte web todo me sirve prefectamente, inclusive puedo acceder a esa parte desde el browser de mi celular con la ip de mi localhost. Pero cuando corro la app con esa misma ip, no funciona, me dice usuario incorrecto.

    Reply

    1. Hola, Gracias.
      Es bastante raro eso xq si podes acceder desde el navegador del telefono la aplicacion tambien deberia poder acceder ya que la peticion es por http, dale un vistazo al LogCat y ver si da algun error tmb fijate si no modificastes nada en el codigo.

      Saludos.

      Reply

    2. Hola, revisa el codigo algo mal debe haber,
      podes debuguear la app y ver si esta tomando bien lo que ingresas en los camposde texto.

      Reply

  106. Como puedo hacer para crear un web service para poder subir mi apliacion que estoy creando en android eclipse

    Reply

    1. Hola, lo siento pero no puedo explicarte eso escapa el foco del tutorial, hay muchas formas de hacerlo.

      Reply

  107. tengo el mismo error que paul antes que Adrian Vizcaino espero me puedas ayudar a resolverlo

    Reply

  108. tengo el mismo error que Paul como lo puedo resolver

    Reply

  109. el ultimo loguin del tutorial que se hace desde una maquina virtual android se puede subir a un servidor o web o solo es una aplicacion que tenemos que instalar en nuestro android para loguearnos

    Reply

  110. el ultimo loguin del tutorial no lo podemos subir a ningun servidor es una aplicacion que tenemos que instalar en nuestro android para loguearnos. eclipse no hace no hace aplicaciones para web sino aplicaciones de escritorio

    Reply

  111. Estimados:
    los felicito buen aporte a los que nos gusta el tema. Mi pregunta como hago para recoger de la lectura hecha a la base de datos varios datos de una tabla y presentarlos como consulta en el movil que tiene android, ya que solo tiene un ok
    recogido. gracias de antemano

    Juan Urdaneta

    Reply

    1. Hola,
      En este caso eso debe hacerse del lado de php, osea en lugar de devolver en json ok deberia devolver la informacion obtenida.
      Saludos.

      Reply

  112. Belo toturial.

    mas tenho aqui um problema

    aparece este error e nao conecta ao webservice.

    11-27 14:08:55.202: E/getpostresponse(337): result=
    11-27 14:08:55.202: E/getpostresponse(337):
    11-27 14:08:55.202: E/getpostresponse(337): 403 Forbidden
    11-27 14:08:55.202: E/getpostresponse(337):
    11-27 14:08:55.202: E/getpostresponse(337): Forbidden
    11-27 14:08:55.202: E/getpostresponse(337): You don’t have permission to access /droidlogin/acces.php
    11-27 14:08:55.202: E/getpostresponse(337): on this server.
    11-27 14:08:55.202: E/getpostresponse(337):
    11-27 14:08:55.223: E/log_tag(337): Error parsing data org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONArray
    11-27 14:08:56.241: E/JSON(337): ERROR
    11-27 14:08:56.261: E/onPostExecute=(337): err

    como posso resolvelo….

    Reply

    1. Por favor comentarios en español solamente.
      Ver comentarios previos que ya se hablo sobre ese problema.

      Reply

  113. Hola, tengo una duda, estoy usando WAMP server para hacer la prueba pero cuando ejecuto el adduser.html y agrego el nuevo usuario, el explorador se queda cargando y nunca termina ni arroja ningun error.
    Gracias

    Reply

  114. Esta muy bueno este tutorial… Saludos a sebastiancipolat !! Lo compartiré

    Reply

  115. excelente aporte solo una petición, tendrás algún tutorial para la parte de registro de usuarios saludos

    Reply

  116. Buen día Mi nombre es Mario y soy de Colombia estoy analizando y haciendo los pasos pero al importar el proyecto me sale un error en la clase Httppostaux hay algo que se deba tener?

    Reply

  117. Excelente! Único método que realmente funciona. Aplausos

    Reply

  118. Hola sebastian tengo un problema muy importante eh usado tu tutorial para hacer exactamente lo que hiciste que es un simple login. Lo segui y funciono perfectamente ehe stado usandolo como la parte inicial de mi app que para iniciar una secion pero desde ayer me tira este error “Error parsing data org.json.JSONException: End of input at character 0 of” y no se que puede ser no eh modificado absolutamente nada de tu codigo y ademas estaba funcionando perfecto solo q un dia queria ver una cosa y puff no podia entrar eh debugeado todo el codigo y la unica parte donde tira error es en
    BufferedReader reader = new BufferedReader(new InputStreamReader(is,”iso-8859-1″),8);
    StringBuilder sb = new StringBuilder();
    String line = null;
    while ((line = reader.readLine()) != null) {

    Jamas entra al while porque line nunca deja de ser null al parecer por lo que creo me esta tirando error al descodificarlo o lo esta bajando mal al json porq hay veses muy pocas donde entra perfecto y las otras tira ese error.
    Si me podrias ayudar te lo agradeseria porque este error a frenado todo el desarrollo que estaba haciendo desde ya gracias un saludo

    Reply

  119. hola, hice los cambios necesarios y cuando ingreso en la aplicacion usuario y contraseña me dice que son incorrectos, como soluciono esto ??

    Reply

  120. Ya he hecho lo que indicas en las respuestas a estas preguntas: Ya
    modifique el codigo para mi servicio web, he creado un usuario y lo he
    comprobado en la BD y he entrado al sistema a traves de la web con el
    mismo usuario, pero nada.
    ¿Es que acaso ya existe una solucion? Por que no la veo publicada por ningun lado.

    Reply

  121. el usuario y el password estan correctos pero en android me sigue indicando lo contrario. Descubri que el objeto JSON queda siempre en null

    Reply

    1. Hola debe ser algo de tu servidor a muchas personas le anduvo lo que indica que el codigo esta bien. saludos

      Reply

    2. Solucionaste ese error?? yo estoy en las mismas …el objeto JSON queda siempre nulo

      Reply

  122. Si funciona solo que en windows sino se conecta pero desde debian si muy buen aporte gracias

    Reply

    1. Hola, yo uso linux, pero en windows deberia andar bien tmb si le da problemas tienen que revisar la configuracion de su servidor local.
      saludos

      Reply

  123. Perdona la molestia, pero cuando lo ejecuto tanto en mi movil como en mi pc aparece que la clave o el usuario son incorrectos, en el eclipse aparece un error que dice algo como

    04-29 14:06:26.363: E/getpostresponse(6042): You don’t have permission to access /droidlogin/acces.php

    con otros errores, todo me funciono normal hasta el momento de correr la api, en ese momento manda esos errores. Espero puedas ayudarme.

    Reply

  124. Hola apenas vi tu publicacion, realmente me sirvio de mucho gracias.

    Reply

  125. Si alguno de ustedes tuvo este error “Unable to resolve target ‘android-8′” se soluciona instalando la api 8 desde el sdk manager

    Reply

    1. Muchas gracias por compartir el codigo

      Reply

  126. tengo este incoveniente:
    Fatal error: Call to undefined function json_encode() in C:AppServwwwdroidloginacces.php on line 20

    Reply

  127. me sale todo el lado de PHP, pero cuando lo ejecuto en la Aplicacion, siempre me sale un error dando a entender que me confundi en el usuario o la contraseña.

    Reply

  128. hola que tal,si quiero probarlo en un telefono solo basta con cambiar la ip o que as hay que cambiar??

    Reply

  129. Respecto al boton de back para volver a la pantalla de login, creo que lo mejor sería que una vez pulsado el boton actuase como el boton home así nos aseguramos de que solo entre en la pantalla login por el acceso de HiScreen

    @Override
    public void onBackPressed() {
    Intent backtoHome = new Intent(Intent.ACTION_MAIN);
    backtoHome.addCategory(Intent.CATEGORY_HOME);
    backtoHome.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(backtoHome);
    }

    Reply

  130. Disculpa al registrar a un usuario tengo este error.

    Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in /home/mustafa/Escritorio/WebDesign/droidlogin/funciones_bd.php on line 41

    Ha ocurrido un error.

    Reply

  131. tego prblemas con esta linea en la R
    setContentView(R.layout.lay_screen);

    Reply

  132. Buenos Dias,

    Buenisimo el aporte, muchas gracias Sebastian!
    Me gustaria saber si se podria utilizar el metodo getserverdata de Httppostaux sin pasarle parametros, simplemente para obtener unos datos y actualizar un BD local.

    un saludo.

    Reply

  133. Hola esta muy bueno el tutorial, ¿de que manera puedo implementar esto con un servidor http y una base de datos postgresql?. De ante mano gracias.

    Reply

  134. Hola,primero decirte que tu tutorial esta muy bueno, esta muy claro todo. lo que si tengo una duda. Como soy nuevo en esto recien aprendiendo del tema y no entiendo lo siguiente. Probe tu aplicacion en mi emulador del pc y ningun problema, despues lo probe en mi celular y no me muestra la informacion. como lo puedo hacer para que funcione y se conecte desde mi celular? Saludos

    Reply

  135. Perfecto el ejemplo, lo descargue y lo configure para PostgreSQL y funciona a la perfección. Muchas gracias ya con esto puedo hacer muchas más cosas.
    Disculpa que “reviva” un post de hace 2 años :p

    Reply

  136. ¿Como puedo usar los datos de la base de datos, “nombre y apellido” y mostrarlos en el TextView?….

    Reply

  137. Buenísimo que bueno que hay personas que comparten su conocimiento, con una pregunta no tendras algun post en el que enseñes a hacer juegos y animaciones en android? de antemano gracias saludos desde Guatemala…

    Reply

  138. Hola Sebastian, se pudo arreglar lo del Usuario y Password incorrecto ?? La verdad es que no se me ocurre como arreglarlo. Ya intente casi todo.

    Saludos.

    Reply

  139. Buenas, alguien con un error parecido …favor de responder

    Reply

  140. Hola un excelente post y muy útil, estuve tratando de hacer una
    conexión de una DB siguiendo los pasos que tu das, la parte de php
    me funciona muy bien al momento de hacer la validaciones.

    Pero en la parte de android tengo un problema me sale el mensaje
    de que usuario o claves incorrectos, le hice una debug al código de
    android para ver por que siempre me sale ese mensaje asi el usuario y
    la clave estén bien por que cuando pruebo con el login de php me
    devuelve [{“logstatus”:”1″}] y el error es en la
    librería httppostaux en la linea HttpResponse
    _response = _httpcliente.execute(_Httppost); aca se devuelve al
    catch(Exception
    e), no pasa de esta linea si de pronto tienes una idea uy me puede
    colaborar q lo agradezco

    Reply

    1. Hola, no se que excepcion esta devolviendo como para guiarte, pero en esa linea es cuando se hace la peticion al servidor, te recomiendo
      que trates de ver por que se genera la excepcion en ese punto.
      saludos

      Reply

    2. Hola, yo lo que hice cuando no me funcionaba el logeo, fue resolver algunos detalles del archivo httpd.conf especificamente hablando en la parte donde dice ejemplo “require local” eso debes desactivarlo, y también debes tener en cuenta de que el celular se deba conectar desde el browser a tu localhost, con la IP, ejemplo 127.0.0.1, espero que se haya entendido, soy malo explicando pero cualquier duda me avisas.

      Reply

  141. La verdad muy buen tutorial para comenzar a entender el mundo Android con servicios REST, y lo mejor de todo es que hayas dejado todo el código!

    Un totorial de los buenos tiene que tener su respectivo repo en github

    Reply

  142. hola muchas gracias primeramente, a mi me sale todo perfecto, pero yo lo testeo en mi movil version android 4.4w y solamente se queda esperando y en logcat me dice que error al conectarse al http… refused sabes si es por la version???

    Reply

  143. Excelente tutorial, amigo un favor como hacer lo mismo pero con Java o netbeans es decir el Webservice tiene un tutorial muchas gracias

    Reply

  144. Estimado
    Muy bueno el tutorial…
    soy principiante en PHP y me indica que las consultas estan deprecadas mysql_query() y todas las que corresponden…
    Me puedes ayudar con eso por favor…
    Gracias

    Reply

    1. utiliza mysqli_ hay mucha info sobre eso.

      Reply

    2. buenas, etngo el mismo problema que tu, también principiante, y con NameValuePair y BasicNameValuePair obsoletos… pudistes solucionarlo?

      muchisimas gracias!

      Reply

  145. Excelente tutorial, lo probe en una aplicacion que tengo y esta genial, lo unico que quisiera saber es porque tengo que acceder con wifi desde mi smatphone y luego si con los datos osea a la primera no accede con los datos , sera alguna libreria que falta para las peticiones http post, porque deshabilite firewall si sabe que podria ser le agradeceria me indicara pues me funciona desde cualquier parte pero siempre activando primero wifi y necesito que no haya necesidad pues el internet de mi plan o de cualquier plan lo deberia tomar. Gracias de antemano

    Reply

    1. verifica que tu proveedor de internet te permita hacer conexiones de entrada. como se en mi caso (fibertel) no te deja, ARNET si lo hace.

      Reply

  146. em ‘acces.php’ como eu valido a conexao com o banco? Si la conexión existe o no? tks!

    Reply

    1. $this->oCnx = new mysqli(DB_HOST1, DB_USUARIO, DB_PASSWORD, DB_DB);

      if ($this->oCnx->connect_errno) {

      return false;

      } else {

      return true;

      }

      Reply

  147. hola. a ver si es por las nuevas versiones, pero a mi nome esta dando la suma en este codigo y te explico lo que pienso que puede ser:
    (por favor si podes ponerte en contacto conmigo, asi por ahi te paso el codigo cuando lo termine y lo actualizas. esta bueno el tutorial). En si tengo varias preguntas:
    vamos a la principal. por lo visto vos creas dos Clases. pero una “fuera de la otra” y al momento de utilizar (linea 180) pDialog pega el grito el compilador porque dice que no esta definida. Buscando en google veo que “supuestamente” la clase asynclogin (para mi por norma tendria que ser AsyncLoogin) debe estar dentro de “la clase Login”

    public class Login extends Activity {

    class AsyncLogin extends AsyncTask… {
    }

    }

    otra cuestioon que veo es en la misma linea 180 donde pones
    ProgressDialog(Login.this) aca mi pregunta “Login” es el nombre de la clase principal? o sea la que empieza en la linea 26?

    gracias.

    Reply

  148. Y si quisiera modificarlo para usarlo con Oracle? que tendria que hacer?

    Reply

  149. Siempre me dice que el usuario ya existe :( ..ya no se que mas hacer

    Reply

  150. hola señores tengo el siguiente problema agradeceria cualquier ayuda

    02-21 19:22:46.829 15343-15386/com.example.danilo.app_blog E/AndroidRuntime? FATAL EXCEPTION: AsyncTask #5

    Process: com.example.danilo.app_blog, PID: 15343

    java.lang.RuntimeException: An error occured while executing doInBackground()

    at android.os.AsyncTask$3.done(AsyncTask.java:300)

    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)

    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)

    at java.util.concurrent.FutureTask.run(FutureTask.java:242)

    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)

    at java.lang.Thread.run(Thread.java:841)

    Caused by: java.lang.NullPointerException

    at com.example.danilo.app_blog.Login.loginstatus(Login.java:156)

    at com.example.danilo.app_blog.Login$asynclogin.doInBackground(Login.java:241)

    at com.example.danilo.app_blog.Login$asynclogin.doInBackground(Login.java:220)

    at android.os.AsyncTask$2.call(AsyncTask.java:288)

    at java.util.concurrent.FutureTask.run(FutureTask.java:237)

    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)

    at java.lang.Thread.run(Thread.java:841)

    02-21 19:22:48.981 15343-15343/com.example.danilo.app_blog E/WindowManager? android.view.WindowLeaked: Activity com.example.danilo.app_blog.Login has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{4480e0a8 V.E….. R……D 0,0-1026,288} that was originally added here

    at android.view.ViewRootImpl.(ViewRootImpl.java:350)

    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)

    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)

    at android.app.Dialog.show(Dialog.java:294)

    at com.example.danilo.app_blog.Login$asynclogin.onPreExecute(Login.java:229)

    at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)

    at android.os.AsyncTask.execute(AsyncTask.java:535)

    at com.example.danilo.app_blog.Login.onClick(Login.java:104)

    at android.view.View.performClick(View.java:4569)

    at android.view.View$PerformClick.run(View.java:18570)

    at android.os.Handler.handleCallback(Handler.java:733)

    at android.os.Handler.dispatchMessage(Handler.java:95)

    at android.os.Looper.loop(Looper.java:212)

    at android.app.ActivityThread.main(ActivityThread.java:5135)

    at java.lang.reflect.Method.invokeNative(Native Method)

    at java.lang.reflect.Method.invoke(Method.java:515)

    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

    at dalvik.system.NativeStart.main(Native Method)

    Reply

  151. Tengo el siguiente problema agradeceria cualquier ayuda

    10678-11232/com.example.danilo.app_blog E/AndroidRuntime? FATAL EXCEPTION: AsyncTask #3

    Process: com.example.danilo.app_blog, PID: 10678

    java.lang.RuntimeException: An error occured while executing doInBackground()

    at android.os.AsyncTask$3.done(AsyncTask.java:300)

    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)

    at java.util.concurrent.FutureTask.setException(FutureTask.java:222)

    at java.util.concurrent.FutureTask.run(FutureTask.java:242)

    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)

    at java.lang.Thread.run(Thread.java:841)

    Caused by: java.lang.NullPointerException

    at com.example.danilo.app_blog.Login$AttemptLogin.doInBackground(Login.java:140)

    at com.example.danilo.app_blog.Login$AttemptLogin.doInBackground(Login.java:108)

    at android.os.AsyncTask$2.call(AsyncTask.java:288)

    at java.util.concurrent.FutureTask.run(FutureTask.java:237)

    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)

    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)

    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)

    at java.lang.Thread.run(Thread.java:841)

    02-22 17:07:47.602 10678-10678/com.example.danilo.app_blog E/WindowManager? android.view.WindowLeaked: Activity com.example.danilo.app_blog.Login has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{4480bd80 V.E….. R……D 0,0-1026,288} that was originally added here

    at android.view.ViewRootImpl.(ViewRootImpl.java:350)

    at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:248)

    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:69)

    at android.app.Dialog.show(Dialog.java:294)

    at com.example.danilo.app_blog.Login$AttemptLogin.onPreExecute(Login.java:122)

    at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:587)

    at android.os.AsyncTask.execute(AsyncTask.java:535)

    at com.example.danilo.app_blog.Login.onClick(Login.java:96)

    at android.view.View.performClick(View.java:4569)

    at android.view.View$PerformClick.run(View.java:18570)

    at android.os.Handler.handleCallback(Handler.java:733)

    at android.os.Handler.dispatchMessage(Handler.java:95)

    at android.os.Looper.loop(Looper.java:212)

    at android.app.ActivityThread.main(ActivityThread.java:5135)

    at java.lang.reflect.Method.invokeNative(Native Method)

    at java.lang.reflect.Method.invoke(Method.java:515)

    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:878)

    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)

    at dalvik.system.NativeStart.main(Native Method)

    Reply

  152. Amigo no me funciona a la hora de logearme ya en la aplicacion de android ya seguí los pasos que pusiste, paso por paso. y no me funciona. ayudame por favor si

    Reply

  153. amigo no me funciona, a la hora de intentar conectarme ya en la aplicación android me dice que la contraseña y el usuario es incorrecto, yo siento que es por la Ip_server o por URL_connect pero no se como solucionarlo, te agradeceria mucho si me ayudaras.

    Reply

  154. He probado el codigo de manera local y funciona perfectamente; pero he subido el mismo codigo a mi servidor web con mi hosting http://www.midominio.com y hasta ahora no he podido hacer que funcione.

    Reply

  155. Hola buenas! Muy bueno el tutorial, me ha servido para entencer todos los conceptos. Donde se puede observar el código del acces.php que no lo localizo. Gracias
    Un saludo

    Reply

  156. ayuda!!!
    cuando me logueo o agrego usuario sale esto

    Reply

  157. Hola! Enhorabuena por el post, llevaré más de 10 visitas aquí pero nunca había comentado. Molaría una actualización/revisión/edición a la API 22 para aquellos que se topan con métodos ya extinguidos. Lo dejo en tus manos la decisión, entiendo que te será una faena pero bueno, personas como yo que van con dudas por mi reciente zambullida en un mezcladillo de Java, PHP, JSON y MySQL te lo agradecerían, supongo no?

    Bueno, un placer de todas formas, me alegra que haya gente dedicada a compartir lo que sabe! Por por comments decían que tenías una mente brillante, quien sabe 😛 lo seguro es pilotas más que los que pasan por este post en busca de resolver algunas dudas 😉

    Saludos desde Valencia,
    – Salva

    Reply

  158. por que los :

    import org.apache.http.NameValuePair;
    import org.apache.http.message.BasicNameValuePair;

    me los marca como deprecated y como se soluciona?

    Reply

  159. Hola cuando colocas esta librería como la creas

    import test.Droidlogin.library.Httppostaux;

    Reply

  160. En primer lugar, muchas gracias por este gran tutorial. He conseguido que funcione el login cuando ejecuto la aplicación en el emulador de Android Studio, pero cuando intento lanzarla en un dispositivo real, me devuelve el error de usuario y contraseña inválidos, ¿alguien podría ayudarme?

    Reply

  161. Estoy trabajanado con Wammp donde encuentro la carpeta htdocs, a donde los puedo poner los archivos php??

    Reply

  162. ¿ Alguien sabe como cambiar el puerto de escucha de Servicio IIS de windows ?
    Tengo el problema que al instalar WAMP Server hace que escuche por el puerto 80 también y eso provoca incompatibilidad , cambié el puerto de escucha de WAMP server al 82 en la configuracion de config.php pero cuando intento crear un usuario o logguearme , me da error.

    Solo necesito cambiar el puerto de escucha de IIS del puerto 80 al 8080 u otro parecido.

    Gracias por el tutorial , esta genial.

    Reply

  163. muchachos como conecta ustedes la base de dtaos mysql con el eclisep.

    Reply

    1. Eso se debe hacer a través de un servicio web que es la capa que se encarga de hacer esa conexión. Una aplicación Android nunca accede directamente a esa información porque estamos hablando de contextos diferentes. Saludos.

      Reply

  164. no logro comprender que en el script de android solo se conecta a la base de datos por la ip de computador o hay una base de datos o que.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *