
Tutorial Android PhpPostgresql
Como fazer um login e registro com android no postgresql
Criando Web Serve
Olá amigos hoje vamos ver um novo tutorial, vamos ver um fácil e simples, mas muito instrutivo como fazer um login e um registro no android estúdio com o Postgresql.
Como fazer um login e se registrar com android no postgresql
NOTA: Super importante, a partir de hoje estamos trabalhando com o Android Studio versão mais recente 3.0.1
por favor, atualize seu IDE para evitar problemas.
PASSO 1: Nós começamos a criar nosso banco de dados, eu uso p gadmin III chamareiBD_persona você pode chamarcomodesejam, em seguida, criar uma tabela chamada pessoa e dentro como mostramos na imagem abaixo.
Então eu deixo o código do nosso BD.
CREATE TABLE persona ( id_persona serial NOT NULL, nombre character varying(120) NOT NULL, direccion character varying(90) NOT NULL, edad integer NOT NULL, email character varying(120) NOT NULL, contrasena character varying(120) NOT NULL, CONSTRAINT id_persona_pkey PRIMARY KEY (id_persona) )
PASSO 2: Continuamos com a criação do nosso serviço web (WS), por isso teremos três arquivos php: conexion.php , login.php , registrador.php. connection.php
<?php $username = "postgres"; $password = "12345"; $host = "localhost"; $port= "5433"; $dbname = "BD_persona"; try { $db = new PDO("pgsql:host={$host};port={$port};dbname={$dbname};", $username,$password); } catch(PDOException $ex) { die("Error al conectarse a la base de datos: " . $ex->getMessage()); } $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); session_start(); ?>
login.php
<?php require("conexion.php"); if (!empty($_POST)) { $query = " SELECT id_persona, email, contrasena FROM persona WHERE email = :email "; $query_params = array( ':email' => $_POST['email'] ); try { $stmt = $db->prepare($query); $result = $stmt->execute($query_params); } catch (PDOException $ex) { $response["success"] = 0; $response["message"] = "Error en la BD, vuelve a intetarlo"; die(json_encode($response, JSON_UNESCAPED_UNICODE)); } $validated_info = false; $row = $stmt->fetch(); if ($row) { if ($_POST['contrasena'] === $row['contrasena']) { $login_ok = true; } } if ($login_ok) { $response["success"] = 1; $response["message"] = "LOGIN CORRECTO!"; die(json_encode($response, JSON_UNESCAPED_UNICODE)); } else { $response["success"] = 0; $response["message"] = "LOGIN INCORRECTO"; die(json_encode($response, JSON_UNESCAPED_UNICODE)); } } ?>
registrar.php
<?php require("conexion.php"); if (!empty($_POST)) { if (empty($_POST['email']) || empty($_POST['contrasena'])) { $response["success"] = 0; $response["message"] = "Ingrese el email y la contrasena"; die(json_encode($response, JSON_UNESCAPED_UNICODE)); } $query= " SELECT 1 FROM persona WHERE email = :email"; $query_params = array( ':email' => $_POST['email'] ); try { $stmt = $db->prepare($query); $result = $stmt->execute($query_params); } catch (PDOException $ex) { $response["success"] = 0; $response["message"] = "Database Error!"; die(json_encode($response, JSON_UNESCAPED_UNICODE)); } $row = $stmt->fetch(); if ($row) { $response["success"] = 0; $response["message"] = "Error el usuario ya existe"; die(json_encode($response, JSON_UNESCAPED_UNICODE)); } $query = "INSERT INTO persona ( nombre, direccion, edad, email, contrasena ) VALUES ( :nombre, :direccion, :edad, :email, :contrasena ) "; $query_params = array( ':nombre' => $_POST['nombre'], ':direccion' => $_POST['direccion'], ':edad' => $_POST['edad'], ':email' => $_POST['email'], ':contrasena' => $_POST['contrasena'] ); try { $stmt = $db->prepare($query); $result = $stmt->execute($query_params); } catch (PDOException $ex) { $response["success"] = 0; $response["message"] = "Error en la BD. Vuelve a intentarlo"; die(json_encode($response, JSON_UNESCAPED_UNICODE)); } $response["success"] = 1; $response["message"] = "El usuario se ha agregado correctamente"; echo json_encode($response, JSON_UNESCAPED_UNICODE); } ?>
PASSO 3: É hora de iniciar o aplicativo e mover algum código, que será a 4ª aulaMainActivity não servem logon, JSONParser que nos ajudará a passar o parâmetro POST e algumas configurações que apontam a nossa classe WS Register isso vai permitir-nosregistar uma nova pessoa e, finalmente, a classe Mostrar este tipo vai permitir-nosver um qualquer atividade, não é o seu único código de uso neste exercício terá início após sersion nos permite visualizar a atividade.
Começamos com as configurações do nosso aplicativo: primeiro vamos ao nosso build.gradle e adicionamos a seguinte linha:
useLibrary 'org.apache.http.legacy'
Esta biblioteca nos ajuda a usar todos os atributos do apache e, se você não sabe onde colocá-los, veja a seguinte imagem:
acitivity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView2" android:layout_centerHorizontal="true" android:layout_marginBottom="20dp" app:srcCompat="@drawable/sesion" /> <Button android:id="@+id/btnRegistro" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/btnLogin" android:layout_alignParentBottom="true" android:layout_alignRight="@+id/btnLogin" android:layout_marginBottom="25dp" android:text="REGISTRAR" /> <Button android:id="@+id/btnLogin" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/btnRegistro" android:layout_alignLeft="@+id/txtPassword" android:layout_alignRight="@+id/txtPassword" android:text="Login" /> <EditText android:id="@+id/txtPassword" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/btnLogin" android:layout_centerHorizontal="true" android:ems="10" android:inputType="textPassword" > <requestFocus /> </EditText> <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/txtPassword" android:layout_alignLeft="@+id/txtPassword" android:layout_marginLeft="22dp" android:text="Ingrese Contraseña" /> <EditText android:id="@+id/txtEmail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/TextView01" android:layout_centerHorizontal="true" android:ems="10" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignStart="@+id/txtEmail" android:layout_centerVertical="true" android:text="Ingrese Correo" /> </RelativeLayout>
activity_registrar
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:id="@+id/textView5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView4" android:layout_alignStart="@+id/textView4" android:layout_marginBottom="45dp" android:text="NOMBRE" /> <EditText android:id="@+id/etxtNombre" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView4" android:layout_alignStart="@+id/textView5" android:ems="10" android:inputType="textPersonName" /> <TextView android:id="@+id/textView4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/etxtEdad" android:layout_alignStart="@+id/etxtEdad" android:text="EDAD" /> <EditText android:id="@+id/etxtEdad" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView3" android:layout_centerHorizontal="true" android:ems="10" android:inputType="number" /> <TextView android:id="@+id/textView3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/etxtDireccion" android:layout_alignStart="@+id/etxtDireccion" android:text="DIRECCION" /> <EditText android:id="@+id/etxtDireccion" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/textView2" android:layout_alignStart="@+id/textView2" android:ems="10" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/edtPassword" android:layout_centerVertical="true" android:text="EMAIL" /> <EditText android:id="@+id/etxtEmail" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/textView2" android:layout_below="@+id/textView2" android:ems="10" android:inputType="textEmailAddress" /> <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+id/etxtEmail" android:layout_below="@+id/etxtEmail" android:text="PASSWORD" /> <EditText android:id="@+id/edtPassword" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/TextView01" android:layout_centerHorizontal="true" android:ems="10" /> <Button android:id="@+id/register" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignRight="@+id/edtPassword" android:layout_below="@+id/edtPassword" android:text="REGISTRAR" /> </RelativeLayout>
MainActivity
public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; public JSONParser() { } public JSONObject getJSONFromUrl(final String url) { try { DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 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(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } return jObj; } public JSONObject makeHttpRequest(String url, String method, List params) { try { if(method == "POST"){ // request method is POST // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); }else if(method == "GET"){ DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(params, "utf-8"); url += "?" + paramString; HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } 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(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } return jObj; } }
Registrar.java
public class Registrar extends Activity implements OnClickListener{ private EditText email, pass,edad,direccion,nombre; private Button mRegister; CharSequence text = "Usuario creado!"; private ProgressDialog pDialog; JSONParser jsonParser = new JSONParser(); private static final String REGISTER_URL ="http://192.168.8.133/postgresql/login/registrar.php"; private static final String TAG_SUCCESS = "Exito"; private static final String TAG_MESSAGE = "Mensaje"; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.activity_registrar); email = (EditText)findViewById(R.id.etxtEmail); pass = (EditText)findViewById(R.id.edtPassword); edad = (EditText)findViewById(R.id.etxtEdad); direccion = (EditText)findViewById(R.id.etxtDireccion); nombre = (EditText)findViewById(R.id.etxtNombre); mRegister = (Button)findViewById(R.id.register); mRegister.setOnClickListener(this); } @Override public void onClick(View v) { // TODO Auto-generated method stub new CreateUser().execute(); } class CreateUser extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(Registrar.this); // pDialog.setMessage("Usuario creado..."); Toast.makeText(Registrar.this,"Usuario creado", Toast.LENGTH_SHORT).show(); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } @Override protected String doInBackground(String... args) { // TODO Auto-generated method stub // Check for success tag int success; String vNombre = nombre.getText().toString(); String vDireccion = direccion.getText().toString(); String vEdad = edad.getText().toString(); String vEmail = email.getText().toString(); String vPassword = pass.getText().toString(); try { // Los parametros en comillas debe ser igual a tu BD List params = new ArrayList(); params.add(new BasicNameValuePair("nombre", vNombre)); params.add(new BasicNameValuePair("direccion", vDireccion)); params.add(new BasicNameValuePair("edad", vEdad)); params.add(new BasicNameValuePair("email", vEmail)); params.add(new BasicNameValuePair("contrasena", vPassword)); Log.d("Empezando", "Solicitud!"); //Posting email data to script JSONObject json = jsonParser.makeHttpRequest( REGISTER_URL, "POST", params); // full json response Log.d("Registrando ", json.toString()); success = json.getInt(TAG_SUCCESS); if (success == 1) { Log.d("Usuario Creado!", json.toString()); finish(); return json.getString(TAG_MESSAGE); }else{ Log.d("Fallo el registro!", json.getString(TAG_MESSAGE)); return json.getString(TAG_MESSAGE); } } catch (JSONException e) { e.printStackTrace(); } return null; } protected void onPostExecute(String file_url) { pDialog.dismiss(); if (file_url != null){ Toast.makeText(Registrar.this, file_url, Toast.LENGTH_LONG).show(); } } } }
Com isso nós terminamos a classe Show e o activity_show cria, mas não é necessário adicionar nada como eu comentei as linhas acima.
e deveria ter algo como a seguinte imagem:
Agora deixo as permissões que devem ser colocadas no nosso AndroidManifest .
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.androfast.pc.apploginandroidpostgresql"> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category :name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".Mostrar" android:screenOrientation="landscape"/> <activity android:name=".Registrar" /> </application> </manifest>
Beleza pessoal espero ter ajudado!!..
Qualquer dúvida podem ficar a vontade.





