Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    problema con header e sessioni

    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-Version1.0\n";
        
    $headers .= "Content-Typetext/htmlcharset=\"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??

  2. #2
    Utente di HTML.it L'avatar di Il_Drugo
    Registrato dal
    May 2006
    Messaggi
    1,220
    Per caso hai dimenticato il session_start() nella pagina di destinazione?

  3. #3
    ho provato a mettere session_start(); nella 1a riga, prima dello switch, ma non funziona lo stesso...
    tra l'altro la pagina di destinazione è una pagina inclusa, quindi session_start() dovrebbe essere sempre attivo...

  4. #4

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.