Hola, bueno les escribo una forma sencilla de crear un login y conectarnos a mysql para verificar si el usuario existe como hacemos esto muy sencillo primero que nada crearemos el XML para el diseño de la aplicación:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Usuario"
android:id="@+id/etUsuario"
/>
<EditText
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="Contraseña"
android:id="@+id/etContrasena"
android:password="true"
/>
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Ingresar"
android:id="@+id/btIngresar"/>
</LinearLayout>
Ahora para conectarnos utilizaremos el método POST de PHP para esto creamos una calse que nos permita conectarnos "POST.JAVA"
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import android.util.Log;
public class Post {
private InputStream is = null;
private String respuesta = "";
private void conectaPost(ArrayList parametros, String URL) {
ArrayList nameValuePairs;
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(URL);
nameValuePairs = new ArrayList();
if (parametros != null) {
for (int i = 0; i < parametros.size() - 1; i += 2) {
nameValuePairs.add(new BasicNameValuePair((String)parametros.get(i), (String)parametros.get(i + 1)));
}
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
}
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
} finally {
}
}
private void getRespuestaPost() {
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
respuesta = sb.toString();
Log.e("log_tag", "Cadena JSon " + respuesta);
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
}
@SuppressWarnings("finally")
private JSONArray getJsonArray() {
JSONArray jArray = null;
try {
jArray = new JSONArray(respuesta);
} catch (Exception e) {
} finally {
return jArray;
}
}
public JSONArray getServerData(ArrayList parametros, String URL) {
conectaPost(parametros, URL);
if (is != null) {
getRespuestaPost();
}
if (respuesta != null && respuesta.trim() != "") {
return getJsonArray();
}
else {
return null;
}
}
}
Ahora crearemos en en la clase mainActivity detectarmos si es correcto el usuario en base al boton y el usuario ingresado, mediante un servicio PHP.
import java.util.ArrayList;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class LoginzroxActivity extends Activity implements OnClickListener {
EditText txtUsuario, txtPassword;
Button connectar;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
connectar = (Button)findViewById(R.id.btIngresar);
txtUsuario = (EditText) findViewById(R.id.etUsuario);
txtPassword = (EditText) findViewById(R.id.etContrasena);
connectar.setOnClickListener(this);
}
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btIngresar:
if (txtUsuario.getText().toString().equals("")
|| txtPassword.getText().toString().equals("")) {
Toast toast = Toast.makeText(this, "Verifica tus datos",
Toast.LENGTH_LONG);
toast.show();
} else {
ArrayList parametros = new ArrayList();
parametros.add("Usuario");
parametros.add(txtUsuario.getText().toString());
parametros.add("Password");
parametros.add(txtPassword.getText().toString());
// Llamada al servidor web php
try {
Post post = new Post();
String server_ip = "http://192.168.1.74//"; JSONArray datos = post.getServerData(parametros, server_ip
+ "Proyecto_socialITAAndroid/hacerLogin.php");
if (datos != null && datos.length() > 0) {
JSONObject json_data = datos.getJSONObject(0);
int numdevueltos = json_data.getInt("cve_usuario");
if (numdevueltos > 0) {
Toast.makeText(getBaseContext(), "Usuario Correcto...",
Toast.LENGTH_SHORT).show();
}
} else {
Toast.makeText(getBaseContext(),
"Usuario o Contraseña inválida",
Toast.LENGTH_SHORT).show();
}
} catch (JSONException e) {
Toast.makeText(getBaseContext(), "Error al conectar con el servidor. ",
Toast.LENGTH_SHORT).show();
}
}
break;
}
}
}
El servicio PHP sería algo así:
<?php
//hacerLogin.php
$user = $_POST['Usuario'];
$pass = $_POST['Password'];
$link = mysql_connect('localhost', 'root', '');
if (!$link) {
die('No pudo conectar: ' . mysql_error());
}
mysql_select_db("dsc");
$q=mysql_query("SELECT * FROM usuarios
WHERE usuario='{user}' AND password='{pass}' ");
while($datos=mysql_fetch_assoc($q))
$output[]=$datos;
print(json_encode($output));
mysql_close($link);
?>
Descargar
Comentarios
"Proyecto_socialITAAndroid/hacerLogin2.php"); cual es ese no entiendo no es el mismoProyecto_socialITAAndroid/hacerLogin.php"); por otra parte la aplicacion me corre pero me dice puro clave o usuario invalido XD y yo mismo toy insertando los datos jajaja q son jose de user y pass 1234 para provar pero igual no dice invalido XD
nombre de la tabla usuarios
1 usuario varchar(20) latin1_swedish_ci No Ninguna Cambiar Eliminar Más
2 password varchar(20) latin1_swedish_ci No Ninguna Cambiar Eliminar Más
aqui esta la esctructura de la base de datos como la estoy usando abra algo mal o.o ya me percate q el codigo q postiaste no esta hacerlogin2 y le acomode pero igual solo me dice user o pass invalidos XD q error estare cometiendo
04-23 03:11:11.034: W/KeyCharacterMap(278): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
04-23 03:11:19.474: E/log_tag(278): Cadena JSon
04-23 03:11:19.474: E/log_tag(278): Notice: Undefined variable: output in C:\xampp\htdocs\Proyecto_socialITAAndroid\hacerLogin.php on line 21
04-23 03:11:19.474: E/log_tag(278): null
esos son lo errores o.o
por favor me podrías ayudar revisando el codigo y explicandome como lo de la lectura de los datos.
Que tengas un excelente día Saludos.
Esta en esta línea:
int numdevueltos = json_data.getInt("cve_usuario");
Yo tambien quiero saber esto, favor alguien que responda!!!!