Hi guys i i’m trying create data in my server by post method but i have nothing
this my code.
i’m have:
ionic 4
codeigniter
mysql database
php 7 in my backend
provider service code
import { HttpClient } from ‘@angular/common/http’;
import { Injectable } from ‘@angular/core’;
//URL
import { URL_SERVICIOS } from ‘…/…/config/url.servicios’;
import { URLSearchParams } from ‘@angular/http’;
// Alert
import { AlertController } from ‘ionic-angular’;
@Injectable()
export class UsuarioProvider {
id_usuario:string;
token:string;
constructor(public http: HttpClient, private alertCtrl:AlertController
) {
// console.log(‘Hello UsuarioProvider Provider’);
}
ingresar( email:string, pass:string ){
// console.log(email, pass);
let data = new URLSearchParams();
data.append('correo', email);
data.append('contrasena', pass);
// console.log(data);
let url = URL_SERVICIOS + 'login';
// console.log(url);
return this.http.post( url, data ).map( resp=>{
let data_resp = resp;
console.log(data_resp);
// console.log('mira: ' +data_resp["corrreo"]);
if (data_resp['error']) {
// hay algun error
this.alertCtrl.create({
title:"Error al iniciar",
subTitle: data_resp['error'],
buttons: ["OK"]
}).present();
}else{
// No hay errores
this.token = data_resp['token'];
this.id_usuario = data_resp['id_usuario'];
// Guardar en el storage del dispositivo
}
});
}
}
php code:
?php
defined(‘BASEPATH’) OR exit(‘No direct script access allowed’);
require_once APPPATH . ‘/libraries/REST_Controller.php’;
use Restserver\Libraries\REST_Controller;
class Login extends REST_Controller {
public function __construct() {
// setHeader(“Access-Control-Allow-Headers”, "");
/
Header(“Access-Control-Allow-Headers”, “*”);
header(“Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS”);
header(“Access-Control-Allow-Headers: Content-Type, Content-Length, Accept-Encoding”);
*/
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Request-Method");
header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE");
header("Allow: GET, POST, OPTIONS, PUT, DELETE");
parent::__construct();
$this->load->database();
}
public function prueba_post() {
$data = $this->post();
$respuesta = $data['correo'];
// $data = ‘//////’;
// echo json_encode($respuesta);
// $respuesta = array(‘fruta1’=>‘pera’, ‘fruta2’=>‘melon’, ‘fruta3’=>‘uva’);
$this->response($data);
}
public function index_post() {
$data = $this->post();
if (!isset($data['correo']) OR !isset($data['contrasena'])) {
$respuesta = array('error'=>TRUE, 'mensaje'=>'La informacion enviada no es valida');
$this->response($respuesta);
return;
}
//Tenemos correo y password
// $condiciones = array();
$condiciones = array('correo'=>$data['correo'], 'contrasena'=>$data['contrasena']);
$query = $this->db->get_where('login', $condiciones );
$usuario = $query->row();
if(!isset($usuario)){
$respuesta = array('error' => TRUE, 'mensaje' => 'Usuario y/o Clave no son valido');
$this->response($respuesta);
}
//AQUI TENEMOS USUARIO Y PASS VALIDO
//TOKEN
$token = bin2hex(openssl_random_pseudo_bytes(20));
$token = hash('ripemd160', $data['correo']);
$this->db->reset_query();
$actualizar_token = array('token'=>$token);
$this->db->where('id', $usuario->id);
$hecho = $this->db->update('login', $actualizar_token);
$respuesta = array('error'=> FALSE, 'token'=> $token,'id_usuario'=>$usuario->id);
$this->response($respuesta);
}
}
login code
import { Component } from ‘@angular/core’;
import { NavController, NavParams, ViewController } from ‘ionic-angular’;
import { UsuarioProvider } from ‘…/…/providers/index.services’;
@Component({
selector: ‘page-login’,
templateUrl: ‘login.html’,
})
export class LoginPage {
email:string = ‘’;
pass:string = ‘’;
constructor(public navCtrl: NavController,
public navParams: NavParams,
private viewCtrl:ViewController, private _us:UsuarioProvider) {
// this.viewCtrl.dismiss();
}
ionViewDidLoad() {
console.log(‘ionViewDidLoad LoginPage’);
}
ingresarDB(){
this._us.ingresar(this.email, this.pass).subscribe( ()=>{
});
}
}
Html code:
<ion-navbar>
<ion-buttons>
<button ion-button (click)="viewCtrl.dismiss(false)">
Cerrar
</button>
</ion-buttons>
<ion-title>Login</ion-title>
</ion-navbar>
<ion-list>
<ion-item>
<ion-label floating>Correo</ion-label>
<ion-input type="text" value="email" [(ngModel)]="email"></ion-input>
</ion-item>
<ion-item>
<ion-label floating>Contraseña</ion-label>
<ion-input type="password" [(ngModel)]="pass"></ion-input>
</ion-item>
</ion-list>
<button ion-button block [disabled]=" 4 > email.length || 4 > pass.length" (click)="ingresarDB()">
Ingresar
</button>