• User

    Header che non funziona

    [php]
    require('connessione.php');
    $nomeregistrato=$_POST['nome'];
    $cognome=$_POST['cognome'];
    $via=$_POST['via'];
    $civico=$_POST['civico'];
    $citta=$_POST['citta'];
    $provincia=$_POST['provincia'];
    $cap=$_POST['cap'];
    $telefono=$_POST['telefono'];
    $indregistrato=$_POST['email'];
    $mit=$_POST['username'];
    $pass=$_POST['password'];
    $inserisci=mysql_query("INSERT INTO registrati VALUES('','$nomeregistrato','$cognome','$via','$civico','$citta','$provincia','$cap','$telefono','$indregistrato','$mit','$pass','1')");
    $tempo=getdate();
    $anno=$tempo['year'];
    $mese=$tempo['mon'];
    $giorno=$tempo['mday'];
    $ora=$tempo['hours'];
    $minuti=$tempo['minutes'];
    $secondi=$tempo['seconds'];
    $indirizzomail="[email protected]";
    $oggettomail="Si è registrato un nuovo utente: $username";
    $messaggio="Utente $username si è registrato $anno/$mese/$giorno alle $ora:$minuti:$secondi";
    mail($indirizzomail, $oggettomail, $messaggio);
    $oggettoregistrato="Registrazione sul portale xxxx avvenuta con successo";
    $mailregistrato="Grazie $nomeregistrato, la tua registrazione sul portale xxxx è avvenuta con successo. Ecco i tuoi dati. Nome=$nomeregistrato, Username=$mit, Password=$pass. Per accedere direttamente alla tua area riservata esegui il login: Login.php";
    mail($indregistrato, $oggettoregistrato, $mailregistrato);

    header("Location: Conferma_registrazione.php");
    [/php]Con queste righe di codice vorrei semplicemente che un utente, dopo aver compilato dei campi di un form per la registrazione al sito, sia ridiretto verso una pagina di conferma registrazione. Ho messo l'header in fondo allo script, ma caricando la pagina mi viene restituito questo messaggio: "Warning: Cannot modify header information - headers already sent by (output started at /home/user2608/public_html/connessione.php:3) in /home/user2608/public_html/Progetto.php on line 34"

    Come posso ovviare a ciò? Altri modi per rimandare l'utente registrato alla pagina di conferma quali potrebbero essere?
    Grazie

    P.S. require('connessione.php') è il file che mi permette di connettermi al database


  • Consiglio Direttivo

    Ciao Fantasmetto 🙂

    Quell'errore indica che prima del pezzo di codice da te postato esistono altri output, anche un banalissimo <DOCTYPE...> per capirci. 😉
    Ricontrolla lo script per intero e vedi dove sta il problema, solitamente conviene inserire questi script in una pagina a se stante o metterli in cima a tutta la pagina.
    Facci sapere se risolvi. :ciauz:


  • User

    [...]
    Ciao, lo script sta proprio all'inzio della pagina e non capisco quali possano essere gli altri output :-(. Mi è venuta in mente una cosa proprio ora, ditemi se potrebbe funzionare: se sostituisco sull action del form "<?php $_SERVER['PHP_SELF'] ?>" con il nome di un file esterno che contiene lo script che ho postato sopra si potrebbe risolvere il problema?
    Oppure quali altre soluzioni sono prospettabili?
    Grazie


  • Consiglio Direttivo

    Certo, come detto prima se vuoi puoi metterlo in un file a se stante ed eseguirlo per conto suo. 😉


  • User

    Perfetto, grazie.


  • User

    Ho cantato vittoria troppo presto. Infatti ho appena verificato se il funzionamento è corretto e ancora risconto il solito messaggio di errore:

    "Warning: Cannot modify header information - headers already sent by (output started at /home/user2608/public_html/connessione.php:3) in /home/user2608/public_html/Controllo_registrazione.php on line **34"

    **Faccio velocemente il sunto della situazione:

    Il form invia i dati al file esterno "Controllo_registrazione.php" il cui contenuto è:
    [php]

    <?php
    require('connessione.php');

    $nomeregistrato=$_POST['nome'];
    $cognome=$_POST['cognome'];
    $via=$_POST['via'];
    $civico=$_POST['civico'];
    $citta=$_POST['citta'];
    $provincia=$_POST['provincia'];
    $cap=$_POST['cap'];
    $telefono=$_POST['telefono'];
    $indregistrato=$_POST['email'];
    $mit=$_POST['username'];
    $pass=$_POST['password'];
    $inserisci=mysql_query("INSERT INTO registrati VALUES('','$nomeregistrato','$cognome','$via','$civico','$citta','$provincia','$cap','$telefono','$indregistrato','$mit','$pass','1')");

    $tempo=getdate();
    $anno=$tempo['year'];
    $mese=$tempo['mon'];
    $giorno=$tempo['mday'];
    $ora=$tempo['hours'];
    $minuti=$tempo['minutes'];
    $secondi=$tempo['seconds'];

    $indirizzomail="info@xxxxx";
    $oggettomail="Si è registrato un nuovo utente: $username";
    $messaggio="Utente $username si è registrato $anno/$mese/$giorno alle $ora:$minuti:$secondi";
    mail($indirizzomail, $oggettomail, $messaggio);

    $oggettoregistrato="Registrazione sul portale xxxxxxx avvenuta con successo";
    $mailregistrato="Grazie $nomeregistrato, la tua registrazione sul portale xxxxxx è avvenuta con successo. Ecco i tuoi dati. Nome=$nomeregistrato, Username=$mit, Password=$pass. Per accedere direttamente alla tua area riservata esegui il login: xxxxxxx/Login.php";
    mail($indregistrato, $oggettoregistrato, $mailregistrato);

    header("Location: Controllo_registrazione.php");

    ?>

    [/php]

    A questo punto non so veramente come poter risolvere il problema. Chi mi da un suggerimento?


  • Consiglio Direttivo

    Due domande:

    • Cosa contiene il connessione.php oltre i dati di connessione?
    • Dato che vuoi refreshare la stessa pagina, hai provato con header ("Refresh: 0;")??

  • User

    Il contenuto di connessione.php è il seguente:
    [php]

    <?php
    $server="xxxxxxx";
    $user="xxxxxxxx";
    $pass="xxxxxxxxxxx";
    $database="xxxxxxx";

    $connessione=mysql_connect("$server", "$user", "$pass") or die("impossibile la connessione con il server remoto". mysql_error());
    mysql_select_db("xxxxxxxx");
    ?>

    [/php]Non voglio refreshare la stessa pagina ed ho commesso un errore con Ctrl-C ctrl-V :(. Header mi serve per reindirizzare l'utente appena registrato alla pagina di avvenuta registrazione.
    Scusa per l'inesattezza nel riportare il codice nella precedenta mia risposta


  • User Attivo

    Prova così e dicci se da errore:
    [php]
    <?php
    ob_start();
    require('connessione.php');

    $nomeregistrato=$_POST['nome'];
    $cognome=$_POST['cognome'];
    $via=$_POST['via'];
    $civico=$_POST['civico'];
    $citta=$_POST['citta'];
    $provincia=$_POST['provincia'];
    $cap=$_POST['cap'];
    $telefono=$_POST['telefono'];
    $indregistrato=$_POST['email'];
    $mit=$_POST['username'];
    $pass=$_POST['password'];
    $inserisci=mysql_query("INSERT INTO registrati VALUES('','$nomeregistrato','$cognome','$via','$civico','$citta','$provincia','$cap','$telefono','$indregistrato','$mit','$pass','1')");

    $tempo=getdate();
    $anno=$tempo['year'];
    $mese=$tempo['mon'];
    $giorno=$tempo['mday'];
    $ora=$tempo['hours'];
    $minuti=$tempo['minutes'];
    $secondi=$tempo['seconds'];

    $indirizzomail="info@xxxxx";
    $oggettomail="Si è registrato un nuovo utente: $username";
    $messaggio="Utente $username si è registrato $anno/$mese/$giorno alle $ora:$minuti:$secondi";
    mail($indirizzomail, $oggettomail, $messaggio);

    $oggettoregistrato="Registrazione sul portale xxxxxxx avvenuta con successo";
    $mailregistrato="Grazie $nomeregistrato, la tua registrazione sul portale xxxxxx è avvenuta con successo. Ecco i tuoi dati. Nome=$nomeregistrato, Username=$mit, Password=$pass. Per accedere direttamente alla tua area riservata esegui il login: xxxxxxx/Login.php";
    mail($indregistrato, $oggettoregistrato, $mailregistrato);

    header("Location: Controllo_registrazione.php");
    ob_end_flush();
    ?>[/php]


  • User

    Grazie ilnetsurfer, adesso funziona tutto correttamente. Di fatto, cosa cambia inserendo sul codice le due righe che mi hai suggerito? E' proprio vero: non si finisce mai di imparare...
    Grazie ancora
    :gthi:


  • User Attivo

    Leggi questo mini-tutorial ...Guarda che si potrebbe anche usare javascript