PHP - Variable $_POST llega siempre vacía

   
Vista:

Variable $_POST llega siempre vacía

Publicado por Nat (5 intervenciones) el 25/04/2015 14:39:12
Hola gente,

He estado buscando en los distintos posts relacionados pero nada. Mi problema es que tengo el siguiente código HTML:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<html>
  <head>
  </head>
  <body>
    <div>
      <form id="formLogin" name="formLogin" action="processlogin.php" method="POST" enctype="multipart/form-data">
        <table>
          <tr>
            <td>
              <input name="usuario" type="text" placeholder="Usuario" tabindex="1">
            </td>
          </tr>
          <tr>
            <td>
              <input name="password" type="password" placeholder="Contrase&ntilde;a" tabindex="2">
            </td>
          </tr>
          <tr>
            <td>
              <a id="boton-acceder" href="javascript:login();" tabindex="3">Entrar</a>
            </td>
          </tr>
        </table>
        <input type="hidden" id="context" name="context" value="login">
      </form>
    </div>
  </body>
  <script>
    function login(){
      document.getElementById('formLogin').submit();
    }
  </script>
</html>

Y el código de processlogin.php es el siguiente:

1
2
3
4
5
6
7
8
9
10
11
<?php
  if(isset($_POST['usuario']) && isset($_POST['password'])){
    $user = $_POST['usuario'];
    $pass = $_POST['password'];
 
    //Acá query a la BBDD y Header("Location: ...") al menu de usuario logueado
  }else{
    //Si no están seteadas las variables, Header("Location: ...") al menu de login nuevamente
    //con un mensaje de error
  }
?>

El caso es que al introducir datos en el formulario y hacer el submit, la variable $_POST siempre llega vacía, ni $_POST['usuario'] ni $_POST['password'] tienen valor. Esto solo me sucede en local en una máquina con Linux con PHP versión 5.5.9 mientras que en el servidor online con PHP 5.6.8 funciona sin problemas.

¿Alguien sabe qué puede ser? ¿Es posible que sea algo relacionado a la versión de PHP?

Muchas gracias desde ya.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Variable $_POST llega siempre vacía

Publicado por Marta (44 intervenciones) el 25/04/2015 18:13:37
Yo suelo usar $_REQUEST para capturar las variables.

Haz un echo $user; para ver que es lo que recibes en processlogin.php

Y por último revisa la ortografía, no sería la primera vez que un pasword en lugar de password me arruina una noche.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Variable $_POST llega siempre vacía

Publicado por Nat (5 intervenciones) el 25/04/2015 22:59:32
Buenas,

Gracias por responder. He probado también con $_REQUEST y obtengo el mismo resultado. En cualquier caso si hago un var_dump el resultado es un array vacío:

1
2
3
4
5
6
<?php
  var_dump($_POST);
  die();
  ...
  ...
?>

Lo he probado también en otra máquina con W7 (no recuerdo ahora la versión de PHP) y también funciona sin problemas. Me pregunto si alguna directiva del php.ini pueda estar casuando el problema.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Variable $_POST llega siempre vacía

Publicado por Nat (5 intervenciones) el 25/04/2015 23:16:44
Hola de nuevo, ya encontré el problema: se trata del valor del atributo action y el archivo .htaccess:

En el form html tenía:

1
<form id="formLogin" name="formLogin" action="processlogin.php" method="POST" enctype="multipart/form-data">

Mientras que el contenido del .htaccess, para el tema de las URLs amigables y demás, es:

1
2
3
4
5
6
7
8
9
10
11
12
13
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
 
## hide .php extension
# To externally redirect
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]
 
## To internally redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php [L]

Al quitar la extensión en el atributo action del form:

1
<form id="formLogin" name="formLogin" action="processlogin" method="POST" enctype="multipart/form-data">

Ya funciona el proceso y $_POST tiene valor.

Como suele pasar, una tontería que a veces a uno se le pasa desapercibida.

Muchas gracias por las respuestas y la ayuda, marco el tema como solucionado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de xve

Variable $_POST llega siempre vacía

Publicado por xve (5513 intervenciones) el 26/04/2015 20:06:31
Gracias por comentarlo Nat!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar