• User

    problema con un form

    Ciao a tutti!
    Volevo sapere se c'era qualcuno che poteva aiutarmi con uno script in php per un form contatti.

    ho provato a personalizzarlo e in realtà non c'era molto da fare, l'unica cosa che non ho capito è nella pagina php + sotto quano dice:

    // Il parametro $provenienza indica le possibili provenienze dei dati: indicare
    // il proprio dominio nella forma mostrata dall'esempio

    $provenienza = array ('comunicazionedinamica.it','www.comunicazionedinamica.it');

    in teoria nell'esempio dopo 'www.comunicazionedinamica.it' avrei dovuto inserire qualcosa tipo '151.1.32.232'...

    non so se mi sono spiegato bene, cmq, ecco

    nella pagina html di contatti ho inserito questo codice:

    <form method="post" action="formInvio.php">
    <div><input type="hidden" name="require" value="email,nome_e_cognome" />
    <input type="hidden" name="contenitore" value="[email protected]" />
    <input type="hidden" name="invia_Dati" value="REMOTE_HOST,HTTP_USER_AGENT" />
    </div>
    <div>Nome e cognome:</div>
    <div><input tabindex="10" class="form" type="text" name="nome_e_cognome" value="inserisci il tuo nome e il tuo cognome" id="nome_e_cognome" />
    </div>
    <div>email:</div>
    <div><input tabindex="11" class="form" type="text" name="email" value="inserisci un indirizzo mail esistente" id="email" />
    </div>
    <div>Telefono:</div>
    <div><input tabindex="12" class="form" type="text" name="telefono" value="inserisci il tuo numero di telefono" id="telefono" />
    </div>
    <div>Oggetto della richiesta:

    <select tabindex="13" name="voci" id="selezione" class="select">
    <option value="Informazioni generali" selected>Informazioni generali</option>
    <option value="Richiesta preventivo">Richiesta preventivo</option>
    <option value="Assistenza tecnica">Assistenza tecnica</option>
    <option value="Problemi sul sito">Segnalazione problemi</option>
    </select>
    <div><label for="Richiesta-informazioni">Scrivi qui il tuo commento:</label></div>
    <div><textarea tabindex="14" class="form" name="Richiesta informazioni" rows="5" cols="40" id="Richiesta-informazioni">Ciao!</textarea></div>
    </div>
    <div>Desideri essere contattato per:</div>
    <ul class="lista">
    *
    <input tabindex="15" type="checkbox" name="contatto-email" id="scelta-email" checked /><label for="scelta-email">email</label>

    <input tabindex="16" type="checkbox" name="contatto-telefono" id="scelta-telefono" /><label for="scelta-telefono">telefono</label>

    <div><button tabindex="17" class="buttons" type="submit" value="invia" name="submit" accesskey="in"><span class="access">in</span>via</button>
    <button tabindex="18" class="buttons" type="reset" value="cancella" name="reset" accesskey="ca" ><span class="access">ca</span>ncella</button></div>
    </form>

    poi ho un'altra pagina formInvio.php:

    <?
    ##############################
    if (!ini_get('register_globals')) {
    $superglobals = array($_SERVER, $_ENV, $_FILES, $_COOKIE, $_POST, $_GET);
    if (isset($_SESSION)) {
    array_unshift($superglobals, $_SESSION);
    }
    foreach ($superglobals as $superglobal) {
    extract($superglobal, EXTR_SKIP);
    }
    }
    ##############################
    /*
    formail completo, è possibile aggiungere qualunque campo
    è sufficiente inserire le due pagine in un punto qualunque
    del proprio dominio.
    by linkbruttocane
    */

    //INIZIO PARAMETRI DA SETTARE OBBLIGATORIAMENTE
    /****************************************************************************************/
    // Il parametro $delay indica i secondi di ritardo impiegati
    // a riportare l'utente all'home page dopo che abbia
    // compilato correttamente il modulo

    $delay = "";

    // Il parametro $url indica la pagina alla quale si viene
    // rimandati una volta compilato correttamente il modulo
    // io ho messo una homepage, ma potrebbe essere qualunque altra pagina

    $url = "http://www.comunicazionedinamica.it/";

    // Il parametro $provenienza indica le possibili provenienze dei dati: indicare
    // il proprio dominio nella forma mostrata dall'esempio

    $provenienza = array ('comunicazionedinamica.it','www.comunicazionedinamica.it');

    // Il parametro $esclusioni vi permette di NON consentire
    // messaggi da un indirizzo mail specificato
    // sia appartenente ad un dominio, ovvero
    // 'tutte le mail che appartengono ad un dominio'
    // od anche a singoli account

    $esclusioni = array ('*@quellochetipare.com', '[email protected]', '[email protected]');

    //FINE PARAMETRI DA SETTARE OBBLIGATORIAMENTE
    /****************************************************************************************/

    $versione_form = "stabile";

    function print_error($reason,$type = 0) {
    global $versione_form;
    build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet);
    if ($type == "missing") {
    ?>

    <body bgcolor='#ffffff'>
    <p align='center'><font face='Verdana, Arial' color='#000000' size='2'>Il modulo non è
    stato inviato per le seguenti ragioni</font></p>

    <p align='center'><font face='Verdana, Arial' size='2' color='#000000'>
    <?
    echo $reason."\n";
    ?>
    </font>
    <p align='center'><font face='Verdana, Arial' size='2' color='#000000'>Premere indietro
    nel browser e riprovare.</font></p><?
    } else { // every other error
    ?>
    Il modulo non è stato inviato per le seguenti ragioni:<p align='center'>
    <?
    }
    echo "

    \n";

    exit;
    }

    function check_banlist($esclusioni, $email) {
    if (count($esclusioni)) {
    $allow = true;
    foreach($esclusioni as $banned) {
    $temp = explode("@", $banned);
    if ($temp[0] == "*") {
    $temp2 = explode("@", $email);
    if (trim(strtolower($temp2[1])) == trim(strtolower($temp[1])))
    $allow = false;
    } else {
    if (trim(strtolower($email)) == trim(strtolower($banned)))
    $allow = false;
    }
    }
    }
    if (!$allow) {
    print_error("Stai usando un indirizzo email escluso.");
    }
    }

    function check_referer($provenienza) {
    if (count($provenienza)) {
    $found = false;
    $temp = explode("/",getenv("HTTP_REFERER"));
    $referer = $temp[2];
    for ($x=0; $x < count($provenienza); $x++) {
    if (eregi ($provenienza[$x], $referer)) {
    $found = true;
    }
    }
    if (!getenv("HTTP_REFERER"))
    $found = false;
    if (!$found){
    print_error("Provieni da un dominio non autorizzato.");
    error_log("[FormMail.php] Illegal Referer. (".getenv("HTTP_REFERER").")", 0);
    }
    return $found;
    } else {
    return true; //
    }
    }
    if ($provenienza)
    check_referer($provenienza);

    if ($esclusioni)
    check_banlist($esclusioni, $email);

    function parse_form($array) {
    // build reserved keyword array
    $reserved_keys[] = "required";
    $reserved_keys[] = "redirect";
    $reserved_keys[] = "email";
    $reserved_keys[] = "require";
    $reserved_keys[] = "contenitore";
    $reserved_keys[] = "titolo";
    $reserved_keys[] = "bgcolor";
    $reserved_keys[] = "text_color";
    $reserved_keys[] = "link_color";
    $reserved_keys[] = "vlink_color";
    $reserved_keys[] = "alink_color";
    $reserved_keys[] = "title";
    $reserved_keys[] = "missing_fields_redirect";
    $reserved_keys[] = "invia_Dati";
    if (count($array)) {
    while (list($key, $val) = each($array)) {

    $reserved_violation = 0;
    for ($ri=0; $ri<count($reserved_keys); $ri++) {
    if ($key == $reserved_keys[$ri]) {
    $reserved_violation = 1;
    }
    }

    if ($reserved_violation != 1) {
    if (is_array($val)) {
    for ($z=0;$z<count($val);$z++) {
    $content .= "$key: $val[$z]\n";
    }
    } else {
    $content .= "$key: $val\n";
    }
    }
    }
    }
    return $content;
    }

    function mail_it($content, $titolo, $email, $contenitore) {
    mail($contenitore, $titolo, $content, "From: $email\r\nReply-To: $email\r\nX-Mailer: DT_formmail");
    }

    function build_body($title, $bgcolor, $text_color, $link_color, $vlink_color, $alink_color, $style_sheet) {
    if ($style_sheet)
    echo "<LINK rel=STYLESHEET href="$style_sheet" Type="text/css">\n";
    if ($title)
    echo "<title>$title</title>\n";
    if (!$bgcolor)
    $bgcolor = "#99cc99";
    if (!$text_color)
    $text_color = "#80000";
    if (!$link_color)
    $link_color = "#0066cc";
    if (!$vlink_color)
    $vlink_color = "#0066cc";
    if (!$alink_color)
    $alink_color = "#cc3300";
    if ($background)
    $background = "background="$background"";
    echo "<body bgcolor="$bgcolor" text="$text_color" link="$link_color" vlink="$vlink_color" alink="$alink_color" $background>\n\n";
    }

    $contenitore_finale = split(',',$contenitore);
    for ($i=0;$i<count($contenitore_finale);$i++) {
    $contenitore_to_test = trim($contenitore_finale*);
    if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $contenitore_to_test)) {
    print_error("**Occorre un indirizzo email valido per continuare ($contenitore_to_test) **");
    }
    }

    if ($required)
    $require = $required;

    if ($require) {

    $require = ereg_replace( " +", "", $require);
    $required = split(",",$require);
    for ($i=0;$i<count($required);$i++) {
    $string = trim($required*);

    if((!(${$string})) || (!(${$string}))) {

    if ($missing_fields_redirect) {
    header ("Location: $missing_fields_redirect");
    exit;
    }
    $require;
    $missing_field_list .= "Non trovato: $required*
    \n";
    }
    }

    if ($missing_field_list)
    print_error($missing_field_list,"missing");
    }

    if (($email) || ($EMAIL)) {
    $email = trim($email);
    if ($EMAIL)
    $email = trim($EMAIL);
    if (!eregi("^[_.0-9a-z-]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$", $email)) {
    print_error("il suo indirizzo email non è valido");
    }
    $EMAIL = $email;
    }

    $content = parse_form($HTTP_POST_VARS);

    if ($invia_Dati) {
    $invia_Dati = ereg_replace( " +", "", $invia_Dati);
    $splitta_Dati = split(",",$invia_Dati);
    $content .= "\n------ variabili utente ------\n";
    for ($i=0;$i<count($splitta_Dati);$i++) {
    $string = trim($splitta_Dati*);
    if ($splitta_Dati* == "REMOTE_HOST")
    $content .= "REMOTE HOST: ".$REMOTE_HOST."\n";
    else if ($splitta_Dati* == "REMOTE_USER")
    $content .= "REMOTE USER: ". $REMOTE_USER."\n";
    else if ($splitta_Dati* == "REMOTE_ADDR")
    $content .= "REMOTE ADDR: ". $REMOTE_ADDR."\n";
    else if ($splitta_Dati* == "HTTP_USER_AGENT")
    $content .= "BROWSER: ". $HTTP_USER_AGENT."\n";
    }
    }

    if (!$titolo)
    $titolo = "DanieleImperi.it - Contatti dal sito";

    mail_it(stripslashes($content), stripslashes($titolo), $email, $contenitore);

    if ($redirect) {
    header ("Location: $redirect");
    exit;
    } else {
    print "<body background='img/bg2.gif' bgcolor='#ffffff' style='margin:20'>

    <table width='70%' height='247' align='center' cellpadding='10' cellspacing='0' bgcolor='#FFFFFF'>
    <tr>
    <td valign='top'>
    <table width='100%' height='247' border='1' bordercolor='#cccccc' bgcolor='#FFFFFF' cellpadding='4' cellspacing='0'>
    <tr>
    <td><div align='center'><font face='Verdana, Arial, Helvetica, sans-serif'>**
    Grazie per avermi contattato!**</font></div>
    <div align='center'><font face='Verdana, Arial, Helvetica, sans-serif'>Sarete
    contattati

    appena possibile all'indirizzo da voi inserito

    $email</font></div>

    <div align='center'>

    <font color='#999999' size='2' face='Verdana, Arial, Helvetica, sans-serif'>...Ritorno
    automatico alla Home page in corso.... </font></div></td>
    <meta http-equiv='refresh' content='$delay; url=$url'>
    </tr>
    </table>
    </td>
    </tr>
    </table>

    </body>
    ";
    echo "

    \n";

    exit;
    }

    // <---------- fine ----------> //
    ?>

    ecco!
    purtroppo però non funziona....

    mi appare la schermata di errore di explorer....

    grazie in anticipo a chi vorrà darmi un consiglio!

    Ale


  • Super User

    Perché hai usato questa soluzione

    <input type="hidden" name="require" value="email,nome_e_cognome" /> 
    

  • User

    no no, io non ho scelto niente!
    Mi hanno dato questi script e poi ho ceracto di capire dove dovevo personalizzarli per farli funzionare...


  • User

    può essere un problema dell'hosting?
    in realtà dovrebbe supportare il php...

    in ogni caso mi da questo errore:

    The page cannot be displayed
    The page you are looking for cannot be displayed because an invalid method (HTTP verb) was used to attempt access.

    Please try the following:

    Contact the Web site administrator if you believe that this request should be allowed.
    Make sure that the Web site address displayed in the address bar of your browser is spelled and formatted correctly.
    HTTP Error 405 - The HTTP verb used to access this page is not allowed.
    Internet Information Services (IIS)


    Technical Information (for support personnel)

    Go to Microsoft Product Support Services and perform a title search for the words HTTP and 405.
    Open IIS Help, which is accessible in IIS Manager (inetmgr), and search for topics titled Setting Application Mappings, Securing Your Site with Web Site Permissions, and About Custom Error Messages.


  • User

    risolto!


  • Super User

    Ale78: risolto!

    Cioè? Dov'era il problema, se problema vi era?
    :ciauz:


  • User

    il problema era nell'host, non era ancora stato fatto il passaggio al supporto php...