Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Drewermerc en 28 Septiembre 2014, 09:34 am



Título: variable post pasa sin valor.
Publicado por: Drewermerc en 28 Septiembre 2014, 09:34 am
Hola a todos.
Bueno mi problema es que al pasar un valor por el metodo post desde un formulario y al usar el valor de post en php obtengo una variable vacia y no se porque, mi codigo es este.

index.html
Código
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang = "es">
  3. <head>
  4. <title>S</title>
  5. <meta name="description" content="S" />
  6. <meta name="keywords" content="H" />
  7. <meta http-equiv="Content-type" content="text/html: charset=iso-8859-1" />
  8. <link rel="StyleSheet" type="text/css" href="css/style-main.css" media="screen" />
  9. </head>
  10. <body>
  11. <div id="wrapper-main">
  12. <div id="wrapper">
  13. <div id="form-session">
  14. <form id="login" enctype="text/plain" method="post" action="php/session.php">
  15.                                            <table id="form-session">
  16.                                                <tr>
  17.                                                    <td><label>Inicio de sesi&oacute;n</label></td>
  18.                                                    <td><label>Usuario:</label></td>
  19.                                                     <td><input name="user_name" type="text" size="15" /></td>
  20.                                                </tr>
  21.                                                <tr>
  22.                                                    <td><label>Contrase&ntilde;a:</label></td>
  23.                                                    <td><input name="user_pass" type="password" size="15"/></td>
  24.                                                    <td><input type="submit" value="Entrar" /></td>
  25.                                                </tr>
  26.                                             </table>
  27. </form>
  28. </div>
  29. </div>
  30. </div>
  31. </body>
  32. </html>
  33.  

session.php
Código
  1. <?php
  2.  
  3. $conexion = mysqli_connect('localhost','root','P','login');
  4. if(!$conexion)
  5. {
  6.  echo "Ha fallado la conexión: ";
  7. }
  8.  
  9. $login = filter_input(INPUT_POST, "user_name", FILTER_SANITIZE_SPECIAL_CHARS);    
  10. $password_user = filter_input(INPUT_POST, 'user_pass', FILTER_SANITIZE_SPECIAL_CHARS);
  11.  
  12. if(($password_user == NULL) || ($login == NULL))
  13. {
  14.    echo "no tiene valores<br />";
  15. }
  16. else{
  17.    $query = "SELECT * FROM users WHERE user_nom = '$login'";
  18.    if (($result = mysqli_query($conexion, $query)) == FALSE){
  19.      echo "La consulta no se realizo ";
  20.    }
  21.  
  22.     $row = mysqli_fetch_array($result, MYSQLI_ASSOC);
  23.    if($row["user_nom"] == $login)
  24.    {    
  25.       if($row["password"] == $password_user)
  26.       {
  27.        session_start();  
  28.        $_SESSION['usuario'] = $login;  
  29.        header("Location: ../alumnos/default.php");  
  30.       }
  31.       else
  32.       {
  33.        ?>
  34.         <script languaje='javascript'>
  35.          alert("Contraseña Incorrecta");
  36.          location.href = "../index.html";
  37.         </script>
  38.        <?php
  39.  
  40.       }
  41.    }
  42.    else
  43.    {
  44.      ?>
  45.       <script languaje='javascript'>
  46.        alert("El nombre de usuario es incorrecto!");
  47.        location.href = "../index.html";
  48.       </script>
  49.      <?php
  50.  
  51.    }
  52. }
  53.  
  54. mysqli_close($conexion);
  55.  
  56. ?>
  57.  
Espero me puedan ayudar.
Saludos.
Drewermerc.


Título: Re: variable post pasa sin valor.
Publicado por: fedz en 28 Septiembre 2014, 12:47 pm
Hola!,

He probado tu código y el problema parece estar en la propiedad enctype de tu formulario.
Al eliminar dicha propiedad, HTML usa el método de codificación por defecto, que leyendo por la web aprendí que es application/x-www-form-urlencoded.
Entonces reemplazando la linea 14 de tu index.html

Código
  1. <form id="login" enctype="text/plain" method="post" action="php/session.php">

por

Código
  1. <form id="login" enctype="application/x-www-form-urlencoded" method="post" action="php/session.php">

ó

Código
  1. <form id="login" method="post" action="php/session.php">

deberías poder recibir y utilizar las variables sin problemas.

Espero que te sirva!

Saludos!

Fedz.-


Título: Re: variable post pasa sin valor.
Publicado por: Drewermerc en 28 Septiembre 2014, 18:00 pm
hola fedz.
Si ese era el problema ya quedo solucionado.
Gracias por responder y por el dato de la codificación que usa por defecto html.

Saludos.
Drewermerc.