mittente e testo "undefined" nella mail inviata

Ciao a tutti, ho un sito su aruba ed ho creato una pagina dalla quale inviare mail. Le mail riesco ad inviarle ma arrivano con nome mittente e testo del messaggio  "undefined"

il codice è il seguente:

<?php
if(!empty($HTTP_POST_VARS['php_nome']) || !empty($HTTP_POST_VARS['php_email']) || !empty($HTTP_POST_VARS['php_web']) || !empty($HTTP_POST_VARS['php_msg']))
{
   //Inserire la propria mail nel parametro $to
   $to = "info@trexemedesign.it";
   $subject = stripslashes("Hai ricevuto una mail da " . $HTTP_POST_VARS['php_nome']);
   $body = stripslashes($HTTP_POST_VARS['php_msg']);
   $body .= "\n\n---------------------------\n";
   $body .= "Da: " . $HTTP_POST_VARS['php_nome'] . " <" . $HTTP_POST_VARS['php_email'] . ">\n" . $HTTP_POST_VARS['php_web'];
   $header = "From: " . $HTTP_POST_VARS['php_nome'] . " <" . $HTTP_POST_VARS['php_email'] . ">\n" . $HTTP_POST_VARS['php_web'];
   $header .= "Reply-To: " . $HTTP_POST_VARS['php_nome'] . " <" . $HTTP_POST_VARS['php_email'] . ">\n" . $HTTP_POST_VARS['php_web'];
   $header .= "X-Mailer: PHP/" . phpversion() . "\n";
   $header .= "X-Priority: 1";
   if(@mail($to, $subject, $body, $header))
   {
      echo "output=sent";
   } else {
      echo "output=error";
   }
} else {
   echo "output=error";
}
?>

mando la mail sia su una mail di aruba che in un altra di hotmail ed il risultato è lo stesso

inviato 5 anni fa
daltan75
modificato 5 anni fa
Gianni Tomasicchio
X 0 X

Prova a sostituire tutti i riferimenti a $HTTP_POST_VARS con $_POST.

Probabilmente $HTTP_POST_VARS non è più supportato dalla versione di PHP presente su Aruba.

risposto 5 anni fa
Gianni Tomasicchio
Lo spero! Quella roba è delle prime versioni del PHP 4.Marco Grazia 5 anni fa
X 0 X

A suo tempo si usava un workaround in pratica si usava questo semplice espediente:

if (!isset($_POST) {

  $_POST = $HTTP_POST_VARS;

}

Messo sempre all'inizio di ogni pagine PHP che prevedesse l'uso delle variabili globali.

In pratica se la variabile $_POST non esiste, perché si tratta del PHP precedente alla versione 4.1.0 (pleistocene credo), la si crea appositamente, se invece esiste, perché siete con una versione del PHP superiore (dal paleolitico all'era odierna), allora il confronto verrà saltato.

In tutto il resto della pagina non si userà mai più $HTTP_POST_VARS ma solo e soltanto $_POST.

Ovviamente la stessa cosa vale anche per _GET e altro...

Se possibile comunque evitare di usare le variabili superglobali se non sapete cosa state facendo ma preferite le funzioni di filtro. Un po' più complesse ma molto più sicure.

risposto 5 anni fa
Marco Grazia
Gli array superglobali di PHP sono una modalità per recuperare input o informazioni dal server o dal client dell'applicazione, per queste variabili non dovrebbe valere il discorso "global is evil", sebbene ci siano modi migliori di raccogliere questo genere di informazioni senza fare ricorso a variabili globali. Le funzioni filtro lavorano sì sulle superglobali GPRC ma non sono limitate soltanto a queste (si può validare/ripulire qualsiasi altra struttura dati) inoltre non risolvono comunque il problema dell'inzozzamento del namespace globale.Andrea Turso 5 anni fa
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda