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

    Redirect dopo compilazione form

    Ciao a tutti, ho un problema di cui da solo non riesco a venire a capo.
    Ho un sito, una delle pagine contiene una form per inviare una mail, una volta compilata e premuto il bottone "invia" viene richiamato uno script in php che compone effettivamente la mail e la invia.

    Codice PHP:
    <?php

     
    // L'INDIRIZZO DEL DESTINATARIO DELLA MAIL
     
    $to "mail@mail.it";
     
     
    // IL SOGGETTO DELLA MAIL
     
    $subject "Modulo proveniente dal sito [url]www.cq.it[/url]";
     
     
    // COSTRUZIONE DEL CORPO DEL MESSAGGIO
     
    $body "Contenuto del modulo:\n\n";
     
     
    $body .= "Dati personali \n\nNome: " trim(stripslashes($_POST["name"])) . "\n";
     
    $body .= "Cognome: " trim(stripslashes($_POST["surname"])) . "\n";
     
    $body .= "Email: " trim(stripslashes($_POST["mail"])) . "\n";
     
    $body .= "Num. Tel.: " trim(stripslashes($_POST["phone"])) . "\n";
     
    $body .= "\nTesto: " trim(stripslashes($_POST["text"])) . "\n";
     
     
     
    // INTESTAZIONI SUPPLEMENTARI
     // $headers = "From: Modulo utenti<INDIRIZZO-COME-SOPRA>";
     
     // INVIO DELLA MAIL
     
    if(@mail($to$subject$body)) { // SE L'INOLTRO E' ANDATO A BUON FINE...
     
     
    echo "La mail e' stata inoltrata con successo.";
     
     } else {
    // ALTRIMENTI...
     
     
    echo "Si sono verificati dei problemi nell'invio della mail.";
     
     }
     
     print 
    "Attenzione: fra 10 secondi sarai reindirizzato";
     
    ?>
    Lo script funziona e io vorrei aggiungere una pagina di redirect che a seconda delle circostanze dica all'utente se la mail è stata inviata correttamente o no e che lo riporti alla pagina precedente... come faccio???

    Ho visto che è possibile usare header() ma non riesco a comprendere come funzioni, se la posso richiamare due volte e soprattutto se posso inserirlo nell'if-else, qualche idea?

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    L'indirizzo della pagina finale è quella in cui c'è il form per l'invio dell'email e l'indirizzo lo sai, giusto?

    Allora dovresti fare 2 redirect in successione, il primo lo devi mettere dove adesso hai
    echo "La mail e' stata inoltrata con successo.";
    e questa riga la devi togliere, perché altrimenti la funzione header() ti darà errore, non deve esserci alcun output a video prima della funzione header().

    Questo primo redirect deve portare l'utente sulla pagina che conferma l'avvenuto invio dell'email.

    Su questa pagina dovrai mettere un secondo redirect, verso la pagina con il form, ma stavolta non potrai usare header(), perché un output sul video c'è sicuramente, il messaggio di invio eseguito, quindi dovrai usare un altro modo, per esempio:
    <META HTTP-EQUIV="REFRESH" CONTENT="10; URL=http://www.tuosito.it/pagina_con_form.php">

    In questo caso il redirect avviene dopo 10 secondi.

  3. #3
    Tu sei un genio e io sono una megaschiappa!!!

    E dire che il fatto dell'header che non deve essere preceduto da alcun tipo di output l'ho letto almeno cinquanta volte!

    Per il resto si, avevo già fatto tutto, era anche pronta una semplicissima pagina di redirect e eliminando l'echo e spostando la funzione header funziona tutto come dovrebbe, grazie millemila!!!

    Già che ci siamo, ho fatto qualche ricerca e mi pare di aver capito che sia impossibile, o quantomeno proibitivo dato il mio attuale livello di conoscenze, ma non è che sapresti/e se esiste un modo (non dico elementare ma quasi) per passare a header() dei path relativi anziché l'indirizzo completo?

  4. #4
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    header('Location:...') accetta solo path assoluti perché devi specificare il wrapper che va usato (http per esempio) e dovendolo specificare, per forza di cose devi avere un path assoluto.

    L'unica cosa che puoi fare è una cosa così
    Codice PHP:
    //metti questo da qualche parte
    define('BASE_URL''http://www.tuosito.it/');

    //il redirect lo fai così
    header('Location: '.BASE_URL.'pagina.php'); 

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2013
    Messaggi
    1
    Ciao A tutti sono , come si capisce un neofita , ho un problema con un form, volevo inserire in questo codice che riguarda il pulzante che invia dati e genera un pdf

    ecco il codice:

    <button type="submit" name="invia" >Invia</button>

    Vplevo sapere se è possibile cliccando l'invio se si puo far fare un redirect verso una pagina , mi sembra di intuire che si puo fare con la propieta onclik ma non so come inpostare il tutto mi potete aiutare ve ne saro eternamente grato...

  6. #6
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    Un pulsante di tipo submit ha senso solo se fa parte di un form e in tal caso la pagina a cui inviare i dati va specificata nel tag action.

    Se hai altri dubbi su come funzionano i pulsanti ed i form, chiedi nella sezione HTML, perché i form non sono argomento PHP.

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.