Visualizzazione risultati 1 fino 7 di 7

Discussione: Form mail senza action

  1. #1
    Guest

    Predefinito Form mail senza action

    Ciao a tutti!
    Volevo creare un form per l'invio di una mail senza dover utilizzare un altra pagina php per elaborare i dati e inviarla.
    Paraticamente nel tag form non deve comparire la voce action...
    E' possibile farlo?
    Nel dubbio ho provato a scrivere un po' di codice che però è incompleto e ancora non funziona: praticamente volevo che l'invio della mail si verificasse tramite una funzione, ma non ho ben capito come funzionino i passaggi dei parametri. Vi passo il mio codice:
    Codice PHP:
    $num1.=date("j")+date("G");
    $num2.=date("w")+date("G")-date("n");
    $verifica.=$num1+$num2;
    echo
    '<form action="mail.php" method="post" name="segnalazioni">';
    echo
    $nome .= ' Nome: <input type="text" name="nome"><br>';
    echo
    $email.='Email(opzionale): <input type="text" name="mail"><br>';
    echo
    'Quanto fa '. $num1. '+'. $num2.'?<br>';
    echo
    $risposta.='<input type="text" name="risposta"><br>';
    echo
    $messaggio.='Messaggio:<br><textarea rows="5" cols="40"></textarea>';
    echo
    '<input type="submit">';
    echo
    '</form>';
    function
    segnalazioni($risposta,$verifica){
    if(
    $risposta!=$verifica)
    echo
    "Errore.";
    Non saprei dove mettere il passaggio della funzione: o con "onsubmit" nel tag form, o con "onClick" al tag "input submit", anche se quest'ultima non penso vada bene.
    Suggerimenti?
    Grazie in anticipo

    P.S. La funzione segnalazioni() non è ancora finita.

  2. #2
    Guest

    Predefinito

    Non ho capito bene il tuo problema. Se vuoi che sia la pagina in cui c'e' il from a ricevere i dati dell'array _POST, e che quindi non ci sia nessun foglio esterno, devi fare cosi':

    Codice HTML:
    <form name="nomeform" method="post" action="">
    e nella stessa pagina del form avrai i valori inseriti nel form

    Codice PHP:
    $_POST[]
    Se invece vuoi inviare una mail devi usare

    Codice PHP:
    mail()
    Ultima modifica di threads : 19-01-2013 alle ore 00.26.58

  3. #3
    Guest

    Predefinito

    Praticamente voglio che elaborazione dati e form siano nella stessa pagina, quindi mi basterebbe non mettere nulla nel campo action?
    Ma devo fare una funzione per l'elaborazione o la inserisco semplicemente sotto i form?

  4. #4
    Guest

    Predefinito

    Citazione Originalmente inviato da runnersaloprova Visualizza messaggio
    Praticamente voglio che elaborazione dati e form siano nella stessa pagina, quindi mi basterebbe non mettere nulla nel campo action?
    Ma devo fare una funzione per l'elaborazione o la inserisco semplicemente sotto i form?
    Esattamente, non inserisci nulla, lasci le virgolette. Una volta premuto "Invia" avrai a disposizione i valori del form come valori dell'array $_POST in quella stessa pagina, non devi usare funzioni particolari.

    esempio

    Codice PHP:
    <form name="esempio" method="post" action="">
    <input type="text" name="valore1" />
    <input type="submit" value="invia" />
    </form>

    <?php
    echo $_POST[valore1];
    ?>
    Praticamente hai subito a disposizione il contenuto dell'array

    EDIT:

    Ti posto anche una semplice calcolatrice che ho provato a fare, per chiarirti meglio il funzionamento di action=""

    Codice PHP:
    <form name="calcolatrice" method="post" action="">
    <p>
    <input type="text" name="val1">
    <select name="segno">
    <option value="1">+</option>
    <option value="2">-</option>
    <option value="3">*</option>
    <option value="4">/</option>
    </select>
    <input type="text" name="val2">
    <input type="submit" value="Invia">
    </p>
    </form>

    <?php
    $val1
    = $_POST['val1']; // Creo due variabili con i dati inseriti nel form
    $val2 = $_POST['val2'];

    switch(
    $_POST['segno']) { // Analizzo il valore del select

    case 1:
    echo
    $ris1 = $val1 + $val2;
    break;

    case
    2:
    echo
    $ris2 = $val1 - $val2; // Analizzo i vari casi e le differenti operazioni
    break;

    case
    3:
    echo
    $ris3 = $val1 * $val2;
    break;

    case
    4:
    echo
    $ris4 = $val1 / $val2;
    break;


    }

    ?>
    Ultima modifica di threads : 19-01-2013 alle ore 01.30.15

  5. #5
    Guest

    Predefinito

    Ok ora ho capito tutto, grazie!
    Solo una cosa, mettendolo semplicemente sotto l'inserimento del form, il controllo dell'errore e il relativo invio dalla mail partono non appena caricata la pagina, dando subito il messaggio d'errore.
    Per evitare questo avevo intenzione di fare un controllo sulle variabili con "isset()", ma non ho ben capito come funziona, qualche delucidazione?

  6. #6
    Guest

    Predefinito

    Citazione Originalmente inviato da runnersaloprova Visualizza messaggio
    Ok ora ho capito tutto, grazie!
    Solo una cosa, mettendolo semplicemente sotto l'inserimento del form, il controllo dell'errore e il relativo invio dalla mail partono non appena caricata la pagina, dando subito il messaggio d'errore.
    Per evitare questo avevo intenzione di fare un controllo sulle variabili con "isset()", ma non ho ben capito come funziona, qualche delucidazione?
    Credo che per il controllo sui dati direttamente all'invio occorra il Javascript, in quanto e' lato client, mentre il PHP e' lato server.

  7. #7
    Guest

    Predefinito

    Azz, credevo di aver già risposto invece no
    Comunque alla fine ho risolto creando un input di tipo 'hidden' con valore 0, e come primo controllo (in PHP, altrimenti in JavaScript si poteva disattivare lo script ed eludere i controlli) ho verificato quel il form hidden fosse uguale a 0.
    In successivo ho fatto tutti i restanti controlli, così che non appena il modulo venisse inviato, comparivano scritte di erorre o riuscita, e non prima come accadeva prima.
    Grazie per l'aiuto!

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •