$ _POST vacío en el correo PHP ()

¡Alguna ayuda con lo siguiente sería muy apreciada! He estado buscando en la web y stackoverflow durante horas. Hay un problema con mi función de correo php.

Hay un formulario en mi sitio web (el sitio usa wordpress) con dos campos de texto, nombre y número de teléfono. También hay un campo oculto en el formulario que muestra la url actual, por lo que podemos ver en qué página se completó el formulario. Esta información también se almacena en una sesión de php.

<?php session_start();
$_SESSION['url'] = $_SERVER['REQUEST_URI']; 
?> 

<form name="callback" action="callme.php" method="post" onsubmit="return(validate());">
<label>Name:</label><input type="text" name="name" size=15 />
<label>Tel:</label><input class="sky" type="text" name="tel" size=15 />
<div id="afterfive"><p>Call after five<input type="checkbox" name="afterfive" value="Call back after five"></p></div>
<input type="hidden" name="url" value="<?php echo $_SESSION['url']; ?>">
<input type="submit" class="classname" value="Call me back!" title="Call me back!" />
</form>

<script>
function validate()
{
if( document.callme.name.value == "" )
{
 alert( "Please fill in your name" );
 document.callme.name.focus() ;
 return false;
 }
if( document.callme.tel.value == "" )
{
alert( "Please fill in your phone number" );
document.callme.tel.focus() ;
return false;
}
}
</script>

El siguiente código php es callme.php:

<?php session_start();

$name = $_POST['name'];
$tel = $_POST['tel'];
$afterfive = $_POST['afterfive']; 
$url = $_POST['url'];

$to = "[email protected]";
$subject = "Please call back $name";
$message .= "Hi, the following person would like to be called back: \n";
$message .= "Name: $name \n";
$message .= "Phonenumber: $tel \n";
$message .= "$afterfive \n";
$message .= "This message was send from this page: $url \n";
$headers = "From: [email protected]" . "\r\n";
$headers .= "BCC: [email protected]" . "\r\n";

if(mail($to, $subject, $message, $headers)){
$_SESSION['name'] = $_POST['name'];
$_SESSION['tel'] = $_POST['tel'];
header("Location: http://www.mywebsite.thankyou");
}

?>

Después de enviar el formulario, el visitante se redirige a nuestra página de agradecimiento y se le da la oportunidad de completar información adicional utilizando un segundo formulario. La información previamente almacenada en la sesión de php (nombre de campos de formulario, tel y url) se agrega en campos de formulario ocultos.

Todo esto funciona bien la mayor parte del tiempo, pero a veces recibimos correos electrónicos con todos o algunos campos vacíos. Por supuesto, esto podría ser usuarios con javascript desactivado o bots de google que envían formularios en blanco, pero lo extraño es que a veces incluso el campo de URL está vacío (el formulario no está visible en nuestra página de inicio). ¿No debería $ _SERVER ['REQUEST_URI'] seguir funcionando?

Estaba pensando en agregar la validación de formularios php, pero no estoy seguro de que esto solucione el problema. ¿Podría esto tener algo que ver con el complemento de hiper caché para wordpress? ¿O podría estar relacionado con la sesión de php?

Respuestas a la pregunta(2)

Su respuesta a la pregunta