Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    2

    Form compilabile una sola volta

    Ciao a tutti!! Sono nuovo nel mondo della programmazione, codice PHP, HTML, etc., ma sto cercando di creare un forum (su SMF) con degli amici e ho bisogno di creare un form che una volta compilato invii un'email all'indirizzo da me scelto.
    Ci sono riuscito ed ecco i codici che ho usato:
    Questo è il codice HTML:
    codice:
    <form method="post" id="form" action="form.php">
    Name*
    <input type="text" name="name" id="name" class="txt" value=""/>
    
    
    Email*
    <input type="text" name="email" id="email" class="txt" value=""/>
    
    
    Domanda 1
     <input class="radio" type="radio" name="primadomanda" value="A" checked/>A
     <input class="radio" type="radio" name="primadomanda" value="B" />B
     <input class="radio" type="radio" name="primadomanda" value="C" />C
     <input class="radio" type="radio" name="primadomanda" value="D" />D
    <br>
    <br>
    Domanda 2
    <input class="radio" type="radio" name="seconda" value="A" checked />A
    <input class="radio" type="radio" name="seconda" value="B" />B
    <input class="radio" type="radio" name="seconda" value="C" />C
    <input class="radio" type="radio" name="seconda" value="D" />D
    <br>
    <br>
    <input class="submit" type="submit" name="submit" value="Submit Form">
    </form>

    Questo è il codice PHP:
    codice:
    <?php
    foreach($_POST as $item){
    if($item == ''){ 
    echo "Errore, devi compilare tutti i campi!";
    exit;
    }
    }
      $name    = stripslashes($_POST['name']);
      $email   = stripslashes($_POST['email']);
      $primadomanda = $_POST['primadomanda'];
      $seconda = $_POST['seconda'];
    
    
    
    
    
    
    $form_message = "Name: $name \nEmail: $email \nDomanda 1: $primadomanda \nDomanda 2: $seconda";
    
    
    
    
    // Exit process if field "human" is filled (because this means it is spam)
    if ( $_POST['human'] ) {
      echo 'Tastes Like Spam!'; exit; }
    // if it is not filled, submit form
    else {
      header( "Location: http://sito.altervista.org/index.php");
    
    
      mail("email@gmail.com", "Email Subject", $form_message, "From: $email" );
    }
    ?>
    L'unica cosa è che vorrei che il form fosse compilabile una sola volta. Cioè, una volta cliccato su Submit, se si tenta di rispondere nuovamente alle domande esce una pagina con scritto "Hai già usato questo form (o qualcosa del genere)" oppure venga proprio negato l'accesso alla pagina del form. E' possibile?

  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Nella pagina form.php (quella che fa l'invio della mail) ad invio avvenuto imposti un session (send=ok) mentre nella pagina "domande" (quella che invia il form) verifichi con un if che la session send non sia "attiva" se esiste rimandi ad una pagina di cortesia altrimenti carica il form

    Ultima modifica di cavicchiandrea; 03-09-2014 a 17:40
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2014
    Messaggi
    2
    Grazie mille, non pensavo in una risposta così immediata! Purtroppo sono davvero molto inesperto, potresti dirmi cosa scrivere esattamente nei file?

  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Pagina invio email
    Codice PHP:
    <?php
    session_start
    ();//questo deve essere come prima riga della pagina altrimenti va in errore 
    foreach($_POST as $item){
    if(
    $item == ''){ 
    echo 
    "Errore, devi compilare tutti i campi!";
    exit;
    }
    }
      
    $name    stripslashes($_POST['name']);
      
    $email   stripslashes($_POST['email']);
      
    $primadomanda $_POST['primadomanda'];
      
    $seconda $_POST['seconda'];






    $form_message "Name: $name \nEmail: $email \nDomanda 1: $primadomanda \nDomanda 2: $seconda";




    // Exit process if field "human" is filled (because this means it is spam)
    if ( $_POST['human'] ) {
      echo 
    'Tastes Like Spam!'; exit; }
    // if it is not filled, submit form
    else {
      
    header"Location: http://sito.altervista.org/index.php");


      
    mail("email@gmail.com""Email Subject"$form_message"From: $email);
    $_SESSION["send"] = "ok";
    }
    ?>
    Questo blocco va nella pagina form domande ad inizio pagina prima dei tag <html> la pagina deve avere estensione .php
    Codice PHP:
    <?
    session_start
    ();
    if(isset(
    $_SESSION["send"])){header("location:tua-pagina-avviso-form-già-compilato.xxxx");}
    ?>
    Questa è una soluzione temporanea se cambia la sessione l'utente potrebbe rivotare, se si vuole una votazione univoca bisogna registrare ogni singolo utente, ma l'operazione si complica di molto e non credo tu abbia le capacità
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

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.