ciao,
ho un sito multilingua in cui le var lingua sono memorizzate nelle sessioni, tipo:
$_SESSION['lingua'] = $_GET['lingua'];
funziona tutto bene, tranne quando devo inviare dei dati via form. Praticamente mi perde le sessioni, non riconosce più la lingua. Cioè, l'email viene cmq spedita, oppure i messaggi di errore vengono correttamente visualizzati.Ma quando clicco su un link qualsiasi del menu, mi perde le sessioni...
dev' essere probabilmente un problema di headers, ma non sono riuscito a trovare il problema.
da notare che non ci sono spazi vuoti prima, output etc...
codice:
Codice PHP:
<?php
switch ($_SESSION['lingua']) {
case 'it':
$lingua = "ITALIANO";
break;
case 'en':
$lingua = "INGLESE";
break;
case 'gr':
$lingua = "GRECO";
break;
case 'es':
$lingua = "SPAGNOLO";
break;
}
$indirizzo = "email@email.it";
$titolo = "Richiesta di iscrizione alla newsletter";
$email = $_POST['email'];
$nome = "nome sito;
// Prepariamo gli headers
//$headers = '';
$headers .= "From: $nome <$email>\n";
$headers .= "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/html; charset=\"iso-8859-1\"\n";
$headers .= "Content-Transfer-Encoding: 7bit\n\n";
// Prepariamo il corpo dell'email
$body .= "<body style=\"background:#99cccc\">";
$body .= "<div align=\"center\">"."
....resto del corpo......";
//controllo campo email
if ($email == "" ) {
$erroremail = "Campo obbligatorio";
echo <<< END_HEREDOC
<div class="form">
{$lang["errore1"]}
</div>
END_HEREDOC;
}
else if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$",$email)) {
$erroremail ="- email non valida.
";
echo <<< END_HEREDOC
<div class="form">
{$lang["errore"]}
</div>
END_HEREDOC;
}else{
echo <<< END_HEREDOC
<div class="form">
{$lang["conferma"]}
</div>
END_HEREDOC;
}
// Invio dell'email
if ($erroremail == "") mail($indirizzo,$titolo,$body, $headers);
?>
da cosa può dipendere??