Foros del Web » Programando para Internet » PHP »

array(); JSON php

Estas en el tema de array(); JSON php en el foro de PHP en Foros del Web. 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: ...
  #1 (permalink)  
Antiguo 26/07/2020, 01:16
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 566
Antigüedad: 15 años, 8 meses
Puntos: 4
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. }
  #2 (permalink)  
Antiguo 26/07/2020, 08:49
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.129
Antigüedad: 16 años, 2 meses
Puntos: 820
Respuesta: array(); JSON php

Haz un var_dump de las siguientes variables de manera secuencial (una a la vez):

$_SERVER["REQUEST_METHOD"]
$_POST['username']
$_POST['password']
$result

Eso te ayudará a ver dónde está el problema.

Y para cuando resuelvas el problema, escapa los inputs a tu string mysqli.

Última edición por Panino5001; 26/07/2020 a las 09:01
  #3 (permalink)  
Antiguo 26/07/2020, 10:24
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 566
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: array(); JSON php

Cita:
Iniciado por Panino5001 Ver Mensaje
Haz un var_dump de las siguientes variables de manera secuencial (una a la vez):

$_SERVER["REQUEST_METHOD"]
$_POST['username']
$_POST['password']
$result

Eso te ayudará a ver dónde está el problema.

Y para cuando resuelvas el problema, escapa los inputs a tu string mysqli.
Si cambio a modo "GET" me muestra lo que necesito {"value":0,"message":"error de inicio de sesion"} pero no logea, por lo que debe estar en POST si se fijan en el código Dart


var_dump($_SERVER["REQUEST_METHOD"]);
var_dump($_POST);
var_dump($username);
var_dump($password);

solo aparece esto....

string(3) "GET" array(0) { } NULL NULL


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

Última edición por pilucho; 26/07/2020 a las 11:45
  #4 (permalink)  
Antiguo 27/07/2020, 20:36
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 566
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: array(); JSON php

si le quito el....

if($_SERVER["REQUEST_METHOD"] == "POST"){

si funciona el JSON pero no logea

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. ?>
  #5 (permalink)  
Antiguo 27/07/2020, 22:39
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.082
Antigüedad: 12 años
Puntos: 2224
Respuesta: array(); JSON php

Este es exactamente el mismo problema de esta otra pregunta, donde tu llamada asíncrona (que no es AJAX) no está enviando los datos por POST. Lamentablemente en FDW no contamos con un espacio para Dart o Flutter.

Código PHP:
Ver original
  1. var_dump($_SERVER["REQUEST_METHOD"]);
  2. var_dump($_POST);
  3. var_dump($username);
  4. var_dump($password);
  5.  
  6. solo aparece esto....
  7.  
  8. string(3) "GET" array(0) { } NULL NULL

Y si haces un var_dump($_GET); ¿aparecen ahí usuario y contraseña?
__________________
- León, Guanajuato
- GV-Foto
  #6 (permalink)  
Antiguo 27/07/2020, 23:23
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 566
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: array(); JSON php

Cita:
Iniciado por Triby Ver Mensaje
Este es exactamente el mismo problema de esta otra pregunta, donde tu llamada asíncrona (que no es AJAX) no está enviando los datos por POST. Lamentablemente en FDW no contamos con un espacio para Dart o Flutter.

Código PHP:
Ver original
  1. var_dump($_SERVER["REQUEST_METHOD"]);
  2. var_dump($_POST);
  3. var_dump($username);
  4. var_dump($password);
  5.  
  6. solo aparece esto....
  7.  
  8. string(3) "GET" array(0) { } NULL NULL

Y si haces un var_dump($_GET); ¿aparecen ahí usuario y contraseña?
hola Triby muy amable por responder pero el resultado es:
array(0) { }

si existe otro metodo de array del json con php seria genial,
porque le quite if($_SERVER['REQUEST_METHOD'] == "POST") {...} y el resultado es
{"value":0,"message":"error de inicio de sesion"} es ese, solo estoy abriendo el php por localhost/prueba/login.php porque en postman veo que algunos si le hacen funcionar.

.
  #7 (permalink)  
Antiguo 28/07/2020, 12:49
 
Fecha de Ingreso: noviembre-2004
Ubicación: NULL
Mensajes: 566
Antigüedad: 15 años, 8 meses
Puntos: 4
Respuesta: array(); JSON php

Cita:
Iniciado por Triby Ver Mensaje
Este es exactamente el mismo problema de esta otra pregunta, donde tu llamada asíncrona (que no es AJAX) no está enviando los datos por POST. Lamentablemente en FDW no contamos con un espacio para Dart o Flutter.

Código PHP:
Ver original
  1. var_dump($_SERVER["REQUEST_METHOD"]);
  2. var_dump($_POST);
  3. var_dump($username);
  4. var_dump($password);
  5.  
  6. solo aparece esto....
  7.  
  8. string(3) "GET" array(0) { } NULL NULL

Y si haces un var_dump($_GET); ¿aparecen ahí usuario y contraseña?


hola Triby, agregue el signo de Signo de exclamación: ! y obtengo
{"value":0,"message":"error de inicio de session"}
e igual el php arroja vació probé todo los var_dump
pregunta al poner el signo de exclamación porque me da esa respuesta y si le quito no aparece nada.
a ver si alguien mas puede ayudarme porfavor.

Código PHP:
Ver original
  1. if($_SERVER['REQUEST_METHOD'] !== "POST") {
  2.     http_response_code(404);
  3.     echo "página no encontrada o se utiliza un método de solicitud http incorrecto  :( ";
  4.  
  5.  
  6.    # code.........
  7.   # code.........
  8.  
  9. }
  #8 (permalink)  
Antiguo 28/07/2020, 14:39
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.129
Antigüedad: 16 años, 2 meses
Puntos: 820
Respuesta: array(); JSON php

Lo que deberías hacer para descartar un problema de php es construir un html básico de este tipo y ver qué devuelve realmente php cuando recibe las variables que espera:
Código HTML:
<form method="post" action="Login.php">
<input name="username" type="text" placeholder="user">
<input name="password" type="password" placeholder="pass">
<button>test</button>
</form> 
Si hecho eso php sigue con respuestas extrañas, el problema es de php y merece la pena que sigas consultando en este foro. Si en cambio responde correctamente, tendrás que analizar tu javascript, que creo que allí debes tener el problema.



La zona horaria es GMT -6. Ahora son las 19:45.