Foros del Web » Programando para Internet » PHP »

Metodo post no funciona

Estas en el tema de Metodo post no funciona en el foro de PHP en Foros del Web. Hola de nuevo tengo un problema el cual no se como solucionar, tengo un tipico formulario en html y un validar en un php, pero ...
  #1 (permalink)  
Antiguo 08/06/2014, 15:11
 
Fecha de Ingreso: mayo-2014
Ubicación: Liberia, Guanacaste, Costa Rica
Mensajes: 17
Antigüedad: 10 años, 6 meses
Puntos: 0
Información Metodo post no funciona

Hola de nuevo tengo un problema el cual no se como solucionar, tengo un tipico formulario en html y un validar en un php, pero al hacer submit los datos no se envian, o al menos el archivo php no los recupera

adjunto codigo del formulario

Código PHP:
<FORM METHOD "POST" ACTION "Login.php">

<
strong>Usuario</strong><br>
<
input name="txtUsuario" id="txtUsuario" type="text"/><br/>


<
strong>Clave</strong><br>
<
input name="txtClave" id="txtClave" type="password"/><br/><br/>
    
<
input type "submit" name "Entrar" id="Entrar" value "Entrar"/>

<
input name="btLimpiar" id="btLimpiar" type="reset" value="Limpiar"/>

</
form
y este seria el php que recibe:

Código PHP:
 <?php
 $test 
$_POST['txtUsuario'];
 echo 
$test;
if(isset(
$_POST['Entrar']))
{
    
$User mysql_real_escape_string(strip_tags($_POST['txtUsuario']));
    
$Pass mysql_real_escape_string(strip_tags($_POST['txtClave']));
}
?>
evidentemente ahi falta codigo que no pondre ya que es innecesario

y que el problema está en que desde un principio no se reciiben los datos... cual podra ser el problema ahí???
  #2 (permalink)  
Antiguo 08/06/2014, 15:30
Avatar de elsolodigno  
Fecha de Ingreso: agosto-2009
Mensajes: 225
Antigüedad: 15 años, 4 meses
Puntos: 2
Respuesta: Metodo post no funciona

Probá con $_GET

http://www.forosdelweb.com/wiki/Manual_de_PHP:

$_GET y $_POST
  #3 (permalink)  
Antiguo 08/06/2014, 15:56
 
Fecha de Ingreso: mayo-2014
Ubicación: Liberia, Guanacaste, Costa Rica
Mensajes: 17
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Metodo post no funciona

No creo que el metodo $_GET sea una muy buena idea, por que necesito cierto estandar de seguridad y con el GET los datos viajan en la URL
  #4 (permalink)  
Antiguo 08/06/2014, 16:04
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Metodo post no funciona

Tienes un error ... y es que $_POST o $_GET leen los atributos NAME de los campos del formulario y no los Ids !


Cita:
<input name="txtUsuario" name="txtUsuario" type="text"/><br/>
...
<input name="txtClave" name=="txtClave" type="password"/
<< asi si te va a funcionar
__________________
Salu2!
  #5 (permalink)  
Antiguo 08/06/2014, 16:33
 
Fecha de Ingreso: mayo-2014
Ubicación: Liberia, Guanacaste, Costa Rica
Mensajes: 17
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Metodo post no funciona

Cita:
Iniciado por Italico76 Ver Mensaje
Tienes un error ... y es que $_POST o $_GET leen los atributos NAME de los campos del formulario y no los Ids !




<< asi si te va a funcionar
sigo teniendo el sgte error Notice: Undefined index: txtUsuario in C:\...\Login.php on line 2
  #6 (permalink)  
Antiguo 08/06/2014, 16:41
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Metodo post no funciona

Que pena... LEI RAPIDO Y MUY MAL!!!!!! y crei no habias definido los NAME... solo IDs ja

Código PHP:
Ver original
  1. <?php
  2.  $test = $_POST['txtUsuario'];

<< ahi esta el problema:

Estas tratando de acceder al indice de $_POST sino sabes si tiene un valor... o sea... cuando envias vacio el formulario o cuando lo envias sin un valor definido para ese INPUT... te va a explotar EXCEPTO QUE uses isset()

Código PHP:
Ver original
  1. <?php
  2.  
  3. if(isset($_POST['Entrar']))
  4. {
  5.     $User = isset($_POST['txtUsuario']) ? $_POST['txtUsuario'] : null;
  6.     $Pass = isset($_POST['txtClave']) ? $_POST['txtClave'] : null;
  7.  
  8.     // ...
  9.    
  10.     $User = mysql_real_escape_string(strip_tags($User));
  11.     $Pass = mysql_real_escape_string(strip_tags($Pass));
  12. }
__________________
Salu2!
  #7 (permalink)  
Antiguo 08/06/2014, 16:45
 
Fecha de Ingreso: mayo-2014
Ubicación: Liberia, Guanacaste, Costa Rica
Mensajes: 17
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Metodo post no funciona

El detalle es que si le estoy enviando datos, de hecho ese "echo" es para validar si estoy recibiendo los datos, ahi fue donde me di cuenta que no estaba enviando nada desde el formulario
  #8 (permalink)  
Antiguo 08/06/2014, 16:49
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Metodo post no funciona

Pero ahora te funciona o no ?

Te aclaro sobre ese "detalle" que si por casualidad tu tienes tu script PHP en la misma pagina que el formulario, cuando lo cargas... no tendria valores AUN y entonces explotaria tu script porque estarias intentando acceder a un indice que no existe en $POST

<< error MUY comun


Prueba el ejemplo como te lo deje...Y EN CASO DE QUE NO TE FUNCIONE:

Código PHP:
Ver original
  1. <?php
  2.   var_dump ($_POST);


Por cierto si usas Chrome, puedes ver si la peticion POST fue enviada asi:


Cita:
(Inspect Element ->) Console -> Network
Alli ves las peticiones POST y GET y su estado : OK, FAIL
__________________
Salu2!
  #9 (permalink)  
Antiguo 08/06/2014, 17:07
 
Fecha de Ingreso: mayo-2014
Ubicación: Liberia, Guanacaste, Costa Rica
Mensajes: 17
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Metodo post no funciona

Ok esto fue extraño el resultado del metodo post no es ni ok ni fail es 302 found lo cual no tengo ni idea de que podrá ser, probado tanto en Firefox como Chrome y el resultado es el mismo, probe cambiando al metodo GET y aun no me recibe nada
  #10 (permalink)  
Antiguo 08/06/2014, 17:08
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Metodo post no funciona

Te he cambiado temporalmente el action="Login.php" para probar... y me funciona PERFECTO:

Código PHP:
Ver original
  1. <form method = "POST" action = "<?php $_SERVER['PHP_SELF']; ?>">
  2.  
  3. <strong>Usuario</strong><br>
  4. <input name="txtUsuario" id="txtUsuario" type="text"/><br/>
  5.  
  6. <strong>Clave</strong><br>
  7. <input name="txtClave" id="txtClave" type="password"/><br/><br/>
  8.      
  9. <input type = "submit" name = "Entrar" id="Entrar" value = "Entrar"/>
  10.  
  11. <input name="btLimpiar" id="btLimpiar" type="reset" value="Limpiar"/>
  12.  
  13. </form>
  14.  
  15.  
  16. <?php
  17.  
  18. if(isset($_POST['Entrar']))
  19. {
  20.     $User = isset($_POST['txtUsuario']) ? $_POST['txtUsuario'] : null;
  21.     $Pass = isset($_POST['txtClave']) ? $_POST['txtClave'] : null;
  22.    
  23.     echo "$User ; $Pass";
  24.  
  25.     // ...
  26.    
  27.     $User = mysql_real_escape_string(strip_tags($User));
  28.     $Pass = mysql_real_escape_string(strip_tags($Pass));
  29. }

Ni idea porque te dio error 302... pero aca lo que significa.... igual prueba primero con lo que te acabo de pasar y adaptalo si te sirve
__________________
Salu2!

Última edición por Italico76; 08/06/2014 a las 17:16
  #11 (permalink)  
Antiguo 08/06/2014, 17:22
 
Fecha de Ingreso: mayo-2014
Ubicación: Liberia, Guanacaste, Costa Rica
Mensajes: 17
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Metodo post no funciona

Cita:
Iniciado por Italico76 Ver Mensaje
Te he cambiado temporalmente el action="Login.php" para probar... y me funciona PERFECTO:

Código PHP:
Ver original
  1. <form method = "POST" action = "<?php $_SERVER['PHP_SELF']; ?>">
  2.  
  3. <strong>Usuario</strong><br>
  4. <input name="txtUsuario" id="txtUsuario" type="text"/><br/>
  5.  
  6. <strong>Clave</strong><br>
  7. <input name="txtClave" id="txtClave" type="password"/><br/><br/>
  8.      
  9. <input type = "submit" name = "Entrar" id="Entrar" value = "Entrar"/>
  10.  
  11. <input name="btLimpiar" id="btLimpiar" type="reset" value="Limpiar"/>
  12.  
  13. </form>
  14.  
  15.  
  16. <?php
  17.  
  18. if(isset($_POST['Entrar']))
  19. {
  20.     $User = isset($_POST['txtUsuario']) ? $_POST['txtUsuario'] : null;
  21.     $Pass = isset($_POST['txtClave']) ? $_POST['txtClave'] : null;
  22.    
  23.     echo "$User ; $Pass";
  24.  
  25.     // ...
  26.    
  27.     $User = mysql_real_escape_string(strip_tags($User));
  28.     $Pass = mysql_real_escape_string(strip_tags($Pass));
  29. }

Ni idea porque te dio error 302... [URL="http://www.websitepulse.com/kb/3xx_http_status_codes.html"]pero aca lo que significa[/URL].... igual prueba primero con lo que te acabo de pasar y adaptalo si te sirve

Tendra algo que ver el hecho de que estoy haciendo llamado a un archivo aparte?
a pesar de que ese archivo esta en la misma ubicacion que el index, de hecho segun el enlace que me diste es que el servidor devuelve que el archivo fue temporalmente movido, ahora bien por si acaso te doy mis herramientas de desarrollo, quizas el problema esté en alguna de ellas

DreamWeaber
XAMP
MySql
  #12 (permalink)  
Antiguo 08/06/2014, 17:47
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Metodo post no funciona

Te pregunto ...... el script que te pase TAL CUAL COMO ESTA.. te funciona ? o tambien te da error 302 ?

Si tambien te falla mi script revisa el LOG de Apache
__________________
Salu2!
  #13 (permalink)  
Antiguo 08/06/2014, 18:34
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Metodo post no funciona

Todas las etiquetas HTML y sus atributos se deben escribir en minúsculas:

Código HTML:
Ver original
  1. <form method="post" action="Login.php">
  2. <strong>Usuario</strong><br>
  3. <input name="txtUsuario" id="txtUsuario" type="text"/><br/>
  4.  
  5. <strong>Clave</strong><br>
  6. <input name="txtClave" id="txtClave" type="password"/><br/><br/>
  7.    
  8. <input type="submit" name="Entrar" id="Entrar" value="Entrar"/>
  9. <input name="btLimpiar" id="btLimpiar" type="reset" value="Limpiar"/>
  10.  
  11. </form>

Realmente no importa si no asignas id a los elementos del formulario o si son iguales al nombre, siempre y cuando no tengas dos o mas elementos usando la misma id.

El error 302 se da porque no se encuentra el script especificado en action y lo que debes revisar es:

1- El script Login.php está en la misma carpeta que el formulario

2- El nombre del archivo es sensible al uso de mayúsculas/minúsculas, por lo que si tu script se llama login.php o Login.PHP o cualquier otro nombre con esas "pequeñas" diferencias, vas a seguir obteniendo el error

3- Esto es una obviedad, pero nunca está de más preguntarlo: Estás abriendo el formulario y el script desde localhost o directamente desde su ubicación en disco duro?
__________________
- León, Guanajuato
- GV-Foto
  #14 (permalink)  
Antiguo 08/06/2014, 19:02
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Metodo post no funciona

Hola Triby!

Como estas ?

Cita:
Iniciado por Triby Ver Mensaje
Realmente no importa si no asignas id a los elementos del formulario o si son iguales al nombre, siempre y cuando no tengas dos o mas elementos usando la misma id.
Los ID repetidos solo afectan a CSS y JavaSript si los usan pero a PHP solo le interesan los NAME


Cita:
Iniciado por Triby Ver Mensaje
El error 302 se da porque no se encuentra el script especificado en action y lo que debes revisar es:

1- El script Login.php está en la misma carpeta que el formulario

<< Creo MUCHO en esta opcion

Cita:
Iniciado por Triby Ver Mensaje
2- El nombre del archivo es sensible al uso de mayúsculas/minúsculas, por lo que si tu script se llama login.php o Login.PHP o cualquier otro nombre con esas "pequeñas" diferencias, vas a seguir obteniendo el error
Cierto... para Linux / UNIX ... asi es
(a Windows le da igual aunque sigue siendo pesima y problematica practica)

Cita:
Iniciado por Triby Ver Mensaje
3- Esto es una obviedad, pero nunca está de más preguntarlo: Estás abriendo el formulario y el script desde localhost o directamente desde su ubicación en disco duro?
Esto ultimo... me toco probarlo... pero no pasa nada... si lo abre como archivo con el navegador solo veria el codigo fuente del .html y php ya que debe pasar por el servidor para que sea enviado al interprete (excepto lo haga desde consola lo cual no tiene sentido)

Cita:
file://MI-PC/Users/USER/Desktop/test.php
<< no es siquiera interpretado
__________________
Salu2!
  #15 (permalink)  
Antiguo 08/06/2014, 20:08
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 16 años, 4 meses
Puntos: 2237
Respuesta: Metodo post no funciona

Italico76, exacto, los ID's repetidos o atributos html en mayúsculas/minúsculas no son relevantes para PHP, pero sí es necesario tener esa información en cuenta para evitar futuros problemas; lo mismo que la parte del nombre del script.

Por cierto, creo que los tres puntos sugeridos para revisión son muy obvios y han sido causantes de muchos temas creados en este foro, por eso conviene mencionarlos.
__________________
- León, Guanajuato
- GV-Foto
  #16 (permalink)  
Antiguo 08/06/2014, 21:00
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años, 8 meses
Puntos: 292
Respuesta: Metodo post no funciona

Cierto, son todas buenas observaciones...... y de hecho hay una que ni siquiera se me habia venido a la mente y creo es la candidata #1 a fuente del problema

Cita:
El script Login.php está en la misma carpeta que el formulario
__________________
Salu2!

Etiquetas: formulario, html, metodo, mysql, post
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:33.