Foros del Web » Programando para Internet » PHP »

fallo con validacion de formulario usando $_get

Estas en el tema de fallo con validacion de formulario usando $_get en el foro de PHP en Foros del Web. Hola que tengo un formulario con una validacion y una funcion mail() para mandar el formulario al correo señalado. y tengo este codigo en el ...
  #1 (permalink)  
Antiguo 29/03/2012, 07:56
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
fallo con validacion de formulario usando $_get

Hola

que tengo un formulario con una validacion y una funcion mail() para mandar el formulario al correo señalado.

y tengo este codigo en el archivo donde esta el script ("send.php")

Código PHP:
if(mail($para$asunto$contenido,$headers))
        {
            
$nombre "";
            
$email "";
            
$contenido="";
            
$rs 1;  // rs = resultado;
            
header("location:contactanos.php?rs=$rs"); 
        } 
la variable $rs la utilizo para redireccionar del archivo send.php a contactanos.php devolviendo el resultado de si se a enviado o no el correo

pero me da un error cuando cargo la pagina me salta mensaje no enviado por defecto sin haber utilizado aun el formulario.

el problema debe de estar en contactanos.php que es donde tengo el siguiente codigo:

Código PHP:
    <?php
        
if(isset($_GET['rs']))
        {
               
$res = (int) $_GET['rs'] ;
        }
// el cast es por seguridad y evitar que te cuelen codigo por get.
       
if ($res)
       {
           echo 
" correo enviado ";
       }
       else 
       {
           echo 
" No se ha podido enviar el correo";
       }    
?>
como puedo solucionar esto? que me diga si se ha enviado o no el formulario pero solo tras haberlo utilizado.....
  #2 (permalink)  
Antiguo 29/03/2012, 08:25
Avatar de Silkon  
Fecha de Ingreso: mayo-2011
Ubicación: Lugo
Mensajes: 201
Antigüedad: 12 años, 10 meses
Puntos: 20
Respuesta: fallo con validacion de formulario usando $_get

Creo que el problema es que al cargar el contacto.php te pone directamente no enviado.

Yo lo pondria así en plan sencillo.

Send.php
Código PHP:
if(mail($para$asunto$contenido,$headers)) 
        { 
            
$nombre ""
            
$email ""
            
$contenido=""
            
$rs 2;  // rs = resultado; 
            
header("location:contactanos.php?rs=$rs");  
        }
else
       {
            
$rs 1;
        } 
Contactanos.php

Código PHP:
if(isset($_GET['rs'])) 
        { 
               
$res = (int) $_GET['rs'] ; 
        }
// el cast es por seguridad y evitar que te cuelen codigo por get. 
       
if ($res == 2
       { 
           echo 
" correo enviado "
       } 
       else if  (
$res == 1
       { 
           echo 
" No se ha podido enviar el correo"
       } 
       else 
               echo 
""

Espero haberte ayudado.
  #3 (permalink)  
Antiguo 29/03/2012, 08:42
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: fallo con validacion de formulario usando $_get

Espero haber entendido bien el problema, hoy tenía ganas y tiempo de escribir jeje, te dejo una función para comprobar el valor de $_GET['rs']

Código PHP:
//funcion para comprovar que viene en $_GET['rs']
function comprobarEnvio($rs)//parametro $rs
{
    if(
is_numeric($rs)){//saber si en numerico el valor de $rs
        
if($rs == 1)//si $rs es igual a 1, todo está OK
        
{
            return 
true;//entonces la funcion retorna true, osea verdadero, todo está OK
        
}else{
            
            return 
false;    //sino retorna false, todo mal
        
}
    }else{
        
        return 
false;    //sino es un numero, retornamos false, todo mal
    
}
    
    
}


//Aquí llamamos a la funcion, el parámetro es $_GET['rs'], la llamada está dentro de un if, 
//esto quiere decir que, si la funcion retorna true (verdadero), se mostrará un mensaje, 
//pero si retorna false mostrará otro.
if(isset($_GET['rs']) && comprobarEnvio($_GET['rs']))//si existe $_GET['rs'] y la funcion retorna true, entonces....
{
    echo 
" correo enviado "//aqui retornó true
}else{
    
    echo 
" No se ha podido enviar el correo"//aquí retornó false

__________________
la la la
  #4 (permalink)  
Antiguo 29/03/2012, 11:39
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: fallo con validacion de formulario usando $_get

gracias por responder . silkon e probado tu codigo y me funciona cunado $rs = 2

pero cuando rs= 1 no me muestra el mensaje de "correo no enviado"

no se por que. pero cuando si lo relleno y lo mando me muestra = "correo enviado"
..
  #5 (permalink)  
Antiguo 29/03/2012, 18:00
Avatar de Silkon  
Fecha de Ingreso: mayo-2011
Ubicación: Lugo
Mensajes: 201
Antigüedad: 12 años, 10 meses
Puntos: 20
Respuesta: fallo con validacion de formulario usando $_get

Claro no te puse que vaya a contactanos en caso RS = 1;


Código PHP:
Ver original
  1. if(mail($para, $asunto, $contenido,$headers))  
  2.         {  
  3.             $nombre = "";  
  4.             $email = "";  
  5.             $contenido="";  
  6.             $rs = 2;  // rs = resultado;  
  7.             header("location:contactanos.php?rs=$rs");  
  8.         }
  9.  
  10. else
  11.        {
  12.             $rs = 1;
  13.              header("location:contactanos.php?rs=$rs");  
  14.            
  15.         }
  #6 (permalink)  
Antiguo 30/03/2012, 09:07
 
Fecha de Ingreso: mayo-2009
Ubicación: Andalucia
Mensajes: 650
Antigüedad: 14 años, 11 meses
Puntos: 1
Respuesta: fallo con validacion de formulario usando $_get

no me funciona el ultimo codigo que me as puesto. si envio el formulario si me sale el aviso pero si no lo mando al pulsar en enviar del formulario no muestra nada..

Etiquetas: fallo, formulario, variables
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 04:23.