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

    campi obbligatori nel form php

    salve,
    ho inserito come collegamento alla mia pagina di form mail questo file in PHP.
    Credo sia formulato bene perche se i campi del form non vengono compilati dia la pagina di Errore e torni indietro.
    Invece anche se non compilo i campi obbligatori manda ugualmente la mail e non da alcun errore.

    Cosa può essere errato?

    <?php
    $email=$_POST['email'];

    #######################################
    # IMPOSTAZIONI DA CONFIGURARE #
    #######################################

    //(1) indirizzo email del destinatario del modulo
    $destinatario = "michele@xxx.it";

    //(2) indirizzo email del mittente, campo FROM
    // non toccare se desiderate che l'indirizzo email inserito nel modulo sia
    // riportato nel campo DA del messaggio che sarà ricevuto.
    // Se invece desiderate un campo fisso annullare la prima riga e abilitare
    // la seconda inserendo la dicitura desiderata (per annullare mettere //
    // all'inizio della prima riga e per abilitare togliere // dalla seconda riga)
    $nome_mittente = "Modulo Outlet";
    // $nome_mittente = "Dal Modulo";

    //(3) oggetto del messaggio
    $oggetto_email = "Modulo inviato dal sito Outlet";

    //(4) se si vogliono rendere tutti i campi NON OBBLIGATORI impostare su "y".
    // (valori possibili: "y" e "n")
    $all_free = "n";

    //(5) se avete messo "n" al punto (4) inserire tra virgolette, separati
    // da virgola, i nomi dei campi da rendere OBBLIGATORI
    // Esempio: $campi_req = array("nome","telefono","via");
    $campi_req = array("Nome","Telefono","Email");

    //(6) controllo validità del campo email. (valori possibili: "y" e "n")
    $obbligo_email = "y";

    //(7) obbligare l'utente ad accettare le condizioni.
    // (valori possibili: "y" e "n")
    $accetta_condizioni = "n";

    //(8) URL della pagina di ringraziamento
    $pagina_grazie = "../outlet/conferma_prenotazione.htm";

    //(9) URL della pagina errore campi vuoti
    $pagina_error_empty = "../outlet/errore.htm";

    //(10) URL della pagina errore email
    $pagina_error_email = "../outlet/errore.htm";

    //(11) URL della pagina errore condizioni non accettate
    $pagina_error_condizioni = "";

    //(12) URL della pagina errore invio non autorizzato (mancanza di referer)
    $pagina_error_referer = "";

    #######################################
    # FINE IMPOSTAZIONI DA CONFIGURARE #
    #######################################

    //ora e data
    $ora = date ("H:i:s");
    $data = date ("d/m/Y");

    //intestazione email che arriva al destinatario
    $corpo = "
    Modulo inviato il $data alle ore $ora
    Riepilogo dati:\n\n";

    //============== NON TOCCARE NULLA OLTRE QUESTA RIGA ==================\


    ########### CODICI ###########

    //variabili per rendere lo script compatibile anche con la versione PHP 4.2 e maggiori
    if(!isset($_SERVER) OR !$_SERVER OR !is_array($_SERVER) OR count(array_diff($_SERVER, $HTTP_SERVER_VARS))){
    $_POST = &$HTTP_POST_VARS;
    }

    //prende IP ADDRESS
    if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){

    if ($_SERVER["HTTP_X_FORWARDED_FOR"] == "") {

    $ipnumb = getenv("REMOTE_ADDR");

    }else {

    $ipnumb = getenv("HTTP_X_FORWARDED_FOR");

    }

    } else {

    $ipnumb = getenv("REMOTE_ADDR");
    }
    ###################################

    //controllo referer
    if(empty($_SERVER["HTTP_REFERER"])){

    header ("Location: $pagina_error_referer");
    exit();

    }

    ########### CONTROLLO DEI CAMPI ###########
    $control_campi = 0;

    if($all_free != "y"){

    foreach($_POST as $key => $valore){

    if(in_array($key,$campi_req)){

    if(trim($valore) == ""){

    $control_campi++;

    }

    }

    }

    } else {

    $control_campi = 0;

    }

    ########### CONTROLLO EMAIL ###########
    $control_email = 0;

    if($obbligo_email == "y"){

    if(isset($_POST['email'])){

    if(!eregi("^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9_-])+.)+[a-z]{2,6}$", $_POST['email'])){

    $control_email++;

    }

    } else {

    $control_email = 0;

    }

    }

    ########### CONTROLLO CONDIZIONI ###########
    $control_condizioni = 0;

    if($accetta_condizioni == "y"){

    if(isset($_POST['trattamento_dati']) && $_POST['trattamento_dati'] == "accetto"){

    $control_condizioni = 0;

    } else {

    $control_condizioni ++;

    }

    }

    ########### INVIO EMAIL ###########
    if($control_campi == 0){

    if($control_email == 0){

    if($control_condizioni == 0){

    foreach($_POST as $key => $valore){

    $key = ucfirst(stripslashes(trim($key)));
    $valore = stripslashes(trim($valore));
    $key = str_replace("_"," ",$key);

    if(trim($valore) == "") $valore = "Non compilato";

    $corpo .= $key .": ". $valore ."\n\n";

    }

    $corpo .= "Numero IP: $ipnumb"."\n";

    $corpo .= "_________________________________________________ ___________ \n\n

    ";


    // invio e-mail
    // Header Mail
    $headmail.="From: $nome_mittente <$nome_mittente>\n";
    $headmail.="Return-Path: $nome_mittente\n";
    $headmail.="User-Agent: Php Mail Function\n";
    $headmail.="X-Accept-Language: en-us, en\n";
    $headmail.="MIME-Version: 1.0\n";
    $headmail.="X-Priority: 1 (Highest)\n";
    $headmail.="Content-Type: text/plain; charset=ISO-8859-1; format=flowed\n";
    $headmail.="Content-Transfer-Encoding: 7bit\n";

    ini_set('sendmail_from', "$destinatario");
    mail("$destinatario", "$oggetto_email", "$corpo", "$headmail");

    header ("Location: $pagina_grazie");

    } else {

    header ("Location: $pagina_error_condizioni");

    }

    } else {

    header ("Location: $pagina_error_email");

    }

    } else {


    header ("Location: $pagina_error_empty");

    }

    ?>

  2. #2
    Nessuno lo sa?
    Michele

  3. #3
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Innanzitutto dopo la chiamata header("Location:.....") devi usare la funzione die();
    senno non termina l'esecuzione dello script. E vai ad eseguire cosice che non dovrebbe essere esgeuito.

    Inoltre ti consiglio di stampare a video con un echo/var_dump/print_r il valore delle variabili che usi per controllare se inviare la mail oppure no.
    Cosi' vedi subito se lo stato di qualche variabile che supponevi corretto invecer e' errato a causa di qualche errore.

  4. #4
    come faccio ad utilizzare echo... per stampare a video.. dove va messo?
    scusa l'ignoranza

    Michele

  5. #5
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Scusa ma non e' per cattiveria ma domandare una mano e' lecito , domandare di spiegare da 0 no.

    Insomma posti codice del genere e non sai usare una echo?

    Sinceramente qui mancano proprio le primissime basi del linguaggio.

    Prima di cimentarti con queste sfide inizia dal piccolo imaprando le basi del linguaggio, seguendo qualche tutorial e provando a fare da solo.

    Quindi se ti serve una mano siamo qui.

    Io sinceramente se i termini del thread sono questi no proseguiro' oltre.

    P.S.

    echo e' uno dei comandi base di php e ti consenti di scrivere sul documento che rispondi dal server.

    <? echo "Ciao"; ?>

  6. #6
    Ciao,
    accetto volentieri la tua lezione di superiorità informatica, anzi ti faccio i miei complimenti per il tuo sapere, tanti vorrebbero avere la tua dimistichezza nell'applicare comandi informatici, ti faccio ancor piu i complimenti per criticare e non aiutare, forse dovresti pensare di uscire da questo forum visto che in questo modo e in questo atteggiamento non servi affatto a nessuno.

    Io ho chiesto solo cosa poteva non andare nel php sopra indicato visto che i "campi obbligatori" me li passa comunque come 0 (vuoti) e mi stampa nella mail "Non compilato".

    Grazie ragazzi se mi rispondete, attendo vostre notizie (meno che da Virus_101)

  7. #7
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Guarda che la mia critica andava al fatto che se programmi in php e non conosci i comadi echo var_dump o print_r sale un dubbio abb forte su quanto tu ne sappia effettivamente di php.

    Non si tratta di "applicare comandi informatici" ma di conoscere almeno le basi del linguaggio che usi.

    La mia critica era rivolta a te come a tutti quelli che dicono "premetto che non so programmare ma mi dite perche' questo script non funziona"; oppure "non conosco php come faccio a fare un sistema di autenticazione?"

    Allora i discorsi si fanno lunghi, sinceramente io ho studiato parecchio per arrivare a sapere fare quello che so fare e se posso dare una mano ben volentieri, ma spiegare da zero come funziona anche no, devi capire che ci vuole un po' di impegno personale da parte tua, devi imparare anche a documentarti da solo, se ti servono guide ti posto il link di qlke guide interessante per quello che ti serve, quindi se mi dici ho letto la guida ma nn capisco questo o quello allora nessun prob sto qua.

    In oltre ti consiglio di postare il codice negli appositi blocchi \[php\] \[/php\] cosi' che sia piu' leggibile.

    E ripeto prova a stampare con echo il valore delle variabili di controllo prima dell'esecuzione del comando "if" cosi' vedrai lo stato delle variabili e vedrai subito perche' entra se non deve entrare oppure se entra e non deve entrare.

    inoltre Se fai un var_dump($_POST) prima di qualsiasi altra istruzione vedrai il tutto il contenuto di tale variabile e vedi se i dati arrivano correttamente o no.
    cio' dipende da come invii i dati e se i campi della form sono nominati correttamente.

    es
    <form....>
    <input type="text" name="ciao" />
    </form>

    Se la submitti in php accedi al valore con $_POST["ciao"] .

    Se poi te la prendi tanto solo perche' ti ho tranquillamente invitato a documentarti meglio prima di postare sono fatti tuoi.
    Un buon 60% dei post che vedo possono risolveri andando su www.php.net e leggendo la documentazione ufficiale di php.

    Come ultima cosa ti alscio una domanda, lo script lo hai fatto tu o lo hai trovato da qlke parte?

    P.S.
    Se vorrai ignorare cio che ti scrivo allora arrangiati in altro modo, sinceramente il tuo tipo di sarcasmo e' completamente fuori luogo nel momento in cui ti si invita a studiare un poco.

  8. #8
    Ripeto ciò che ho detto questa mattina, non servono i tuoi commenti o i tuoi inviti allo studio, forse dovresti studiare un po piu tu nei metodi comportamentali, anche di un forum come questo.
    In ogni caso sono sicuramente ignorante in materia PHP ma, cosa che tu ancora non hai capito, io ho chiesto un eventuale aiuto nel caso il codice avesse qualche problema, visto il risultato che da non pienamente corretto. Se non sapevi individuare il problema potevi tranquillamente non rispondere.

    saluti e buon insegnamento

  9. #9
    Utente di HTML.it L'avatar di Virus_101
    Registrato dal
    Sep 2008
    Messaggi
    2,497
    Guarda nn ti rispondo male non so nemmeno perche'... ah si forse perche' sono andato a studiare il capitolo 4 de "I metodi comportamentali" .

    I tuoi commenti sarcastici te li puoi anche tenere per te, anche perche' se tu avessi letto evresti visto che una soluzione e' gia' presente nella mia risposta visto che chiedi aiuto e ti lamenti del fatto che nn ti vien fornito. Basta leggere.

    Non sto a sindacare sulla sua conoscenza di php, se e' bassa non e' un problema, per questo sei stato invitato a controllare le guide. Inoltre gia' nel mio primo post ti avevo suggerito come controllare i valori.

    Devi anche capire che la professionalita' costa, non so se hai presente come funziona in ambiente lavorativo, ma li i miei interventi sono pagati.

    D'altra parte nn te le devi prendere se vieni invitato a consultare delle guide o dei tutorial per familiazzare con il codice cosi' da poterlo modifgicare/correggere.

    E' troppo comodo avere la pappa pronta, e sinceramente se speri in cio' mi dispiace per te ma non imparerai mai nulla.

    Per quanto riguarda l'individuazione del problema dammi 50€ e te lo risolvo, e come scritto sopra non ti puoi aspettare di arrivare con un problema e che la gente sia disposta a correggerti il codice cosi' bum e fatta. Alcuni lo fanno ma se noti in questa tipologia di domande si tende a dialogare con l'utente che ha un problema per aiutarlo a debuggare il codice in autonomia. Sono rari i thread in cui si fornisce una correzione di codice su una certa diomensione dello script in questione.

    Sinceramente dovresti essere te controllare meglio le tue risposte. ANche perche' il mio non era un attacco personale nei tuoi confronti ma una critica costruttiva che ti avrebbe portato a capire dove stava il problema e a risolverlo, ma visto che te la tiri tanto io qui ti saluto e buonanotte.

    Arrangiati.

  10. #10
    Ciao,

    il forum di html.it non è e non sarà mai un ring di pugilato com'è stato trasformato invece in quest'occasione.

    Se avete questioni personali da risolvere potete risolverle via messaggi privati, anzi, mi correggo, ESCLUSIVAMENTE via messaggi privati.

    Detto questo chiudo il thread.

    @David_pop

    Se ancora non hai risolto, come mi pare di capire, puoi aprire un nuovo thread.

    Grazie

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.