Ver Mensaje Individual
  #1 (permalink)  
Antiguo 26/07/2020, 01:16
pilucho
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 652
Antigüedad: 19 años, 4 meses
Puntos: 6
array(); JSON php

Hola, a ver si alguien puede ayudar, en este código, de login no muestra ningún resultado JSON, la pagina totalmente en blanco,
deberia salir asi:
{"value":1,"message":"Inicio de sesión correcto"}


Login.php
Código PHP:
Ver original
  1. <?php
  2.  
  3. require "connect.php";
  4.  
  5. if($_SERVER["REQUEST_METHOD"] == "POST"){
  6.     # code...
  7.    $response = array();
  8.     $username = $_POST['username'];
  9.     $password = md5($_POST['password']);
  10.    
  11.     $sql = "SELECT * FROM users WHERE username='$username' AND password='$password'";
  12.     $result = mysqli_fetch_array(mysqli_query($connect, $sql));
  13.  
  14.     if (isset($result)) {
  15.        # code...
  16.        $response['value']=1;
  17.         $response['message']="Inicio de sesión correcto";
  18.         $username = $result['username'];
  19.         $nama = $result['nama'];
  20.         echo json_decode($response);
  21.        
  22.     }else {
  23.         # code...
  24.        $response['value'] = 0;
  25.         $response['message'] = "error de inicio de sesión";
  26.         echo json_encode($response);            
  27.     }
  28. }
  29. ?>



llamada asíncrona, código de inicio session en dart:


Código PHP:
Ver original
  1. class Login extends StatefulWidget {
  2.   @override
  3.   _LoginState createState() => _LoginState();
  4. }
  5.  
  6. enum LoginStatus { notSignIn, signIn, signInUsers }
  7.  
  8. class _LoginState extends State<Login> {
  9.   LoginStatus _loginStatus = LoginStatus.notSignIn;
  10.   String username, password;
  11.  
  12.   final _key = new GlobalKey<FormState>();
  13.  
  14.   bool _secureText = true;
  15.  
  16.   showHide() {
  17.     setState(() {
  18.       _secureText = !_secureText;
  19.     });
  20.   }
  21.  
  22.   var _autovalidate = true;
  23.  
  24.   check() {
  25.     final form = _key.currentState;
  26.     if (form.validate()) {
  27.       form.save();
  28.       login();
  29.     } else {
  30.       setState(() {
  31.         _autovalidate = true;
  32.       });
  33.     }
  34.   }
  35.  
  36.   login() async {
  37.     final response = await http.post(BaseUrl.login,
  38.         body: {"username": username, "password": password});
  39.     final data = jsonDecode(response.body);
  40.     int value = data['value'];
  41.     String pesan = data['message'];
  42.     String usernameAPI = data['username'];
  43.     String namaAPI = data['nama'];
  44.     String id = data['id'];
  45.     String level = data['level'];
  46.     if (value == 1) {
  47.       //Control flow pengecekan Level
  48.       if (level == "1") {
  49.         setState(() {
  50.           _loginStatus = LoginStatus.signIn;
  51.           savePref(value, usernameAPI, namaAPI, id, level);
  52.         });
  53.       } else {
  54.         setState(() {
  55.           _loginStatus = LoginStatus.signInUsers;
  56.           savePref(value, usernameAPI, namaAPI, id, level);
  57.         });
  58.       }
  59.       print(pesan);
  60.     } else {
  61.       print(pesan);
  62.     }
  63.   }
  64.  
  65.   savePref(
  66.       int value, String username, String nama, String id, String level) async {
  67.     SharedPreferences preferences = await SharedPreferences.getInstance();
  68.     setState(() {
  69.       preferences.setInt("value", value);
  70.       preferences.setString("nama", nama);
  71.       preferences.setString("username", username);
  72.       preferences.setString("id", id);
  73.       preferences.setString("level", level);
  74.       preferences.commit();
  75.     });
  76.   }
  77.  
  78.   var value;
  79.   getPref() async {
  80.     SharedPreferences preferences = await SharedPreferences.getInstance();
  81.     setState(() {
  82.       value = preferences.getString("level");
  83.  
  84.       _loginStatus = value == "1"
  85.           ? LoginStatus.signIn
  86.           : value == "2" ? LoginStatus.signInUsers : LoginStatus.notSignIn;
  87.     });
  88.   }
  89.  
  90.   signOut() async {
  91.     SharedPreferences preferences = await SharedPreferences.getInstance();
  92.     setState(() {
  93.       preferences.setInt("value", null);
  94.       preferences.setString("level", null);
  95.       preferences.commit();
  96.       _loginStatus = LoginStatus.notSignIn;
  97.     });
  98.   }
  99.  
  100.   @override
  101.   void initState() {
  102.     // TODO: implement initState
  103.     super.initState();
  104.     getPref();
  105.   }
  106.  
  107.   @override
  108.   Widget build(BuildContext context) {
  109.     switch (_loginStatus) {
  110.       case LoginStatus.notSignIn:
  111.         return Scaffold(
  112.           appBar: AppBar(),
  113.           body: Form(
  114.             autovalidate: _autovalidate,
  115.             key: _key,
  116.             child: ListView(
  117.               padding: EdgeInsets.all(16.0),
  118.               children: <Widget>[
  119.                 TextFormField(
  120.                   validator: (e) {
  121.                     if (!e.contains("@")) {
  122.                       return "Wrong format email for username";
  123.                     } else {
  124.                       return null;
  125.                     }
  126.                   },
  127.                   onSaved: (e) => username = e,
  128.                   decoration: InputDecoration(
  129.                     labelText: "Username",
  130.                   ),
  131.                 ),
  132.                 TextFormField(
  133.                   obscureText: _secureText,
  134.                   onSaved: (e) => password = e,
  135.                   decoration: InputDecoration(
  136.                     labelText: "Password",
  137.                     suffixIcon: IconButton(
  138.                       onPressed: showHide,
  139.                       icon: Icon(_secureText
  140.                           ? Icons.visibility_off
  141.                           : Icons.visibility),
  142.                     ),
  143.                   ),
  144.                 ),
  145.                 MaterialButton(
  146.                   onPressed: () {
  147.                     check();
  148.                   },
  149.                   child: Text("Login"),
  150.                 ),
  151.                 InkWell(
  152.                   onTap: () {
  153.                     Navigator.of(context).push(
  154.                         MaterialPageRoute(builder: (context) => Register()));
  155.                   },
  156.                   child: Text(
  157.                     "Create a new account, in here",
  158.                     textAlign: TextAlign.center,
  159.                   ),
  160.                 ),
  161.               ],
  162.             ),
  163.           ),
  164.         );
  165.         break;
  166.       case LoginStatus.signIn:
  167.         return MainMenu(signOut);
  168.         break;
  169.       case LoginStatus.signInUsers:
  170.         return MenuUsers(signOut);
  171.         break;
  172.     }
  173.   }
  174. }