Ver Mensaje Individual
  #3 (permalink)  
Antiguo 25/07/2012, 00:14
jorwellington
 
Fecha de Ingreso: julio-2012
Mensajes: 8
Antigüedad: 12 años, 3 meses
Puntos: 0
Respuesta: Header location sin anclas

Perdona, aquí pongo el código.

Al principio del header tengo esta validación:

Código PHP:
// Validación contacto footer
global $errores;
global 
$respuestaErrores;
global 
$fallaEnvio;
if(isset(
$_POST['enviado'])) {
    
$errores 0;
    
    
$campo_nombre $_POST['footer_contacto_nombre'];
    
$campo_correo $_POST['footer_contacto_correo'];
    
$campo_mensaje $_POST['footer_contacto_mensaje'];
    
    
$respuestaErrores '
    <script>
        $("#footer_contacto_nombre").val("'
.$campo_nombre.'");
        $("#footer_contacto_correo").val("'
.$campo_correo.'");
        $("#footer_contacto_mensaje").val("'
.$campo_mensaje.'");';
    
    if(
trim($campo_nombre) == '') {
        
$errores ++;
        
$respuestaErrores.= '$("#nombre_req").css("display","inline");';
        }
        
    if(
trim($campo_correo) == '') {
        
$errores ++;
        
$respuestaErrores.= '$("#correo_req").css("display","inline");';
        }
        
    else if(!
preg_match("/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i"$campo_correo)) {
        
$errores ++;
        
$respuestaErrores.= '$("#correo_req").css("display","inline");';
      }
        
    if(
trim($campo_mensaje) == '') {
        
$errores ++;
        
$respuestaErrores.= '$("#mensaje_req").css("display","inline");';
        }
    
$respuestaErrores.= '
    </script>'
;    
    
    if ( 
$errores == ) {
        
        require_once 
ABSPATH WPINC '/class-phpmailer.php';
        require_once 
ABSPATH WPINC '/class-smtp.php';
        
        
$mail = new PHPMailer();
        
        
$mail->IsSMTP();
        
$mail->SMTPAuth   true;                  // enable SMTP authentication
        
        
$mail->SMTPSecure "ssl";                 // sets the prefix to the servier
        
$mail->Host       "smtp.gmail.com";      // sets GMAIL as the SMTP server
        
$mail->Port       465;                   // set the SMTP port : Gmail:465 y 587
        
        
$mail->Username   "mi correo";  // username
        
$mail->Password   "mi contraseña";            // password
        
        
$mail->From       $campo_correo;
        
$mail->FromName   "Enviado por: $campo_nombre";
        
$mail->Subject    "Contacto web";
        
        
$body  "<span style='color:#999'>De:</span> $campo_nombre <br /><span style='color:#999'>Correo electr&oacute;nico:</span> $campo_correo <br /><br /><span style='color:#999'>Mensaje:</span><br /> $campo_mensaje";
        
$body str_replace("\n""<br />"$body); 
        
$mail->Body $body;
        
        
$mail->AltBody "De: $campo_nombre\nCorreo electrónico: $campo_correo\n\nMensaje:\n$campo_mensaje";
        
        
$mail->WordWrap 10// set word wrap
        
        
$mail->MsgHTML($body);
        
        
$mail->AddReplyTo($campo_correo,$campo_nombre);
        
$mail->AddAddress("correo","destinatario");
        
        
$mail->IsHTML(true);
        
        if(!
$mail->Send()) {
          
$fallaEnvio true;
        }
        else {
          
$urlGracias home_url'/gracias/' );
          
header("Location: $urlGracias");
          exit;
        }
    }    


En el footer tengo este formulario:

Código HTML:
<form id="footer_contacto" name="footer_contacto" method="post" onsubmit="return valida(this);" action="#footer_contacto">
    <fieldset>
        <label class="assistive-text" for="footer_contacto_nombre">Nombre</label>
        <p class="requerido" id="nombre_req">*</p>
        <input id="footer_contacto_nombre" name="footer_contacto_nombre" type="text" placeholder="Nombre">
        
        <label class="assistive-text" for="footer_contacto_correo">Correo electrónico</label>
        <p class="requerido" id="correo_req">*</p>
        <input id="footer_contacto_correo" name="footer_contacto_correo" type="text" placeholder="Correo electrónico">
        
        <label class="assistive-text" for="footer_contacto_mensaje">Mensaje</label>
        <p class="requerido" id="mensaje_req">*</p>
        <textarea id="footer_contacto_mensaje" name="footer_contacto_mensaje" placeholder="Mensaje"></textarea>
        
    	<input type="hidden" name="enviado" id="enviado" value="true" />
        <input type="submit" value="Enviar">
    </fieldset>
</form> 

Si estoy por ejemplo en localhost/index.php y intento mandar el formulario con un campo incompleto vuelve a cargar esa misma página pero con un ancla, es decir, carga: localhost/index.php#footer_contacto para que el navegador vaya a la forma de contacto y el usuario vea los campos que le faltaron llenar. Después de eso lleno correctamente los datos y al hacer submit me manda el correo y me manda a la página localhost/gracias/#footer_contacto cuando me debería llevar nada más a localhost/gracias/ (sin el #footer_contacto al final).

No sé si en el header(location:…) se le pueda decir que ignore el vínculo al ancla que supongo se queda memorizada desde la página anterior.