Campo obbligatorio, invio ([SI],NO) _>, risposta (SI,NO) //NO SUBMIT //aggiungo un campo nel form //f_nosubmit // //f_return_only torna array della mail costruita //CLASSICI //["ita"] = "Tipo"; //["eng"] = "Tipo Eng"; //[tipo] = "select"; //tipo2 = doppiaconferma / url_online / email / numero / piva / cfiscale //regexp, espressione regolare //tipo2 = piva -> controlla che sia una partita iva valida //tipo2 = cfiscale -> controlla che sia un codice fiscale valido //[val]["xxx"] = "Rivenditore|Architetto-Geometra"; //[val][sel] = "Rivenditore"; //[val][def] = "scrivere qualcosa";//VIENE USATO COME PLACEHOLDER, QUINDI VA CAMBIATO OPPURE CONSIDERATO COME VUOTO AI FINI DEGLI ERRORI, DEPRECATO CON HTML5 //[val]['default'] = "valore predefinito "; //[obb] = "SI"; //forzo obbligatorio //[err] = "NO"; //tolgo controllo errore //[risposta] = "NO"; //tolgo dalla risposta dopo l' invio //[invio] = "NO"; //tolgo dalla mail //[css] = "assegna la classe css all'elemento html"; //$F['f_invio_tipo'] = "DA_FORM"; //tipo di invio DA_FORM (default) oppure DA_CONF ( //$F['nome_campo']['risposta'] = "DA_FORM"; //nella conf del campo //TEMPLATE di sovrascrittura locale se serve //if($F[$k][f_form_tpl]) $f_form_tpl = $F[$k][f_form_tpl]; //else $f_form_tpl = $F[f_form_tpl]; //GRUPPI OBBLIGATORI //obb_gruppo //RECAPTCHA //recaptcha //per usarlo va aggiunto il dominio in https://www.google.com/recaptcha/admin#site/338906860 oppure creata una nuova coppia di chiavi da inserire in $CONF["f_recaptcha_sitekey"] e $CONF["f_recaptcha_secret"] //in caso di errore viene aggiunta una variabile globale $DATI[f_errori] con gli errori del form //definisco i nomi dei campi che servono al programma //devono esistere prima che chiamo un blocco $FORM = array(); $FORM_SQL = array(); $F["f_nome_form"] = "FORM"; //è anche il nome del contesto corrente; $F["f_nome_campi_array"] = true; // serve per non racchiudere i name dei campi fra f_nome_form[], necessario per fare i login con form base $F["f_allega_files"] = false; //cecca - per sicurezza disabilitato (potrebbero allegare virus), abilitandolo vengono allegati alla email gli eventuali file inclusi nella form //costruzione email $F["f_campo_email"] = "email"; $F["f_campo_nome"] = "nome"; $F["f_campo_cognome"] = "cognome"; $F["f_from"] = "AUTO"; //deve essere sempre l'email del visitatore, crea da solo in base al nome dell' utente a all' e-mail $F["f_use_reply_to"] = true; //mette l'email destinatario (del sito) come from e usa il reply-to per evitare problemi di spam (gmail segnala phishing o mette proprio nello spam quando riceve una mail con mittente @gmail.com da un nostro sito, vedi https://support.google.com/mail/troubleshooter/2411000?p=sent_warning&hl=it&rd=1 ) $F['f_nomecognome'] = "AUTO"; //mittente della mail in automatico tramite campo f_campo_nome $F['f_email_form'] = "AUTO"; //mittente (preso in automatico dal form tramite la variabile f_campo_email) $F['f_force_from'] = false; //aggiunto per forzare il from nei casi in cui f_email_dest è diverso da un email del sito (il destinatario di default è anche il mittente del messaggio da quando usiamo il reply_to) $F["f_email_dest"] = "AUTO"; //deve essere sempre un email del proprietario del sito, default prende da indi $F["f_email_cc"] = "AUTO"; //copia carbone, prende da indi //$F["f_email_bcc"] = ""; $F["f_email_indi"] = "AUTO"; //prende da indi //$F["f_from_antispam"] = "SI"; (disabilitato in data 04/12/2012 $F["f_nome_sito"] = "AUTO"; //prende da indi $F["f_email_html"] = "NO"; $F["f_duepunti"] = ":"; $F["f_txt_t"] = "#ASTERISCO##NOME##DUEPUNTI#\n\r"; $F["f_txt_t_gruppo"] = "#ASTERISCO##ASTERISCO##NOME##DUEPUNTI#\n\r"; $F["f_radio_sep"] = "  "; //DEPRECATO $F["f_radio_tpl"] = "#RADIO# #VALORE#  "; $F["f_check_tpl"] = "#CHECK# #VALORE#  "; $F["f_check_div_tpl"] = ""; $F["f_lingua_alt"] = "eng"; //linga alternativa se non disponibile la traduzione $F['f_calendar_dis_date'] = "SI"; //errori $F["f_err"] = "*"; $F["f_css_sel"] = "style=\"border-color:#FF0000\""; //stile selezionato casella generica $F["f_css_rc"] = "style=\"background-color:#FF0000\""; //stile selezionato casella radio e box $F["f_css_sel_select"] = "style=\"border-color:#FF0000\""; //stile selezionato casella select //errori_new $F["f_err_class"] = NULL; //se presente le variabili sopra vengono ignorate e viene aggiunta questa classe all' elemento $F["f_submit"]["ita"] = "Invia la richiesta"; //nome del tasto $F["f_submit"]["eng"] = "Submit your request"; //nome del tasto $F["f_submit"]["ger"] = "Anfrage absenden"; //nome del tasto $F["f_submit"]["fra"] = "Envoyer votre demande"; //nome del tasto $F["f_submit"]["spa"] = "Envía la solicitud"; //nome del tasto //definizione campo errori e errore anche in lingua $F["f_erro_temp"]["xxx"] = "
  • #ERRORE#
  • "; $F["f_erri_temp"]["xxx"] = "#ERRORI#"; $F["f_dati_temp"]["xxx"] = "#DATI#"; $F["f_dato_temp"]["xxx"] = "
  • #CAMPO#: #DATO#
  • \n\r"; //testi vari in lingua $F["f_txt_head"]["ita"] = "Modulo richiesta informazioni
    I campi con l' asterisco (*) sono obbligatori
    \n\r"; $F["f_txt_head"]["eng"] = "Request information
    You must complete fields marked with (*)\n\r"; $F["f_txt_head"]["ger"] = "Fragebogen zur Informationsanfrage.
    (*) Die mit Stern gekennzeichneten Felder sind obligatorisch
    \n\r"; $F["f_txt_head"]["fra"] = "Formulaire de demande d'informations
    (*) Les champs marqués d'un astérisque sont obligatoires
    \n\r"; $F["f_txt_head"]["spa"] = "Pedido de información
    (*) Son obligatorios
    \n\r"; $F["f_txt_errore"]["ita"] = "Errore, riempire i seguenti campi obbligatori:
    \n\r"; $F["f_txt_errore"]["eng"] = "Error, fill the required field:
    \n\r"; $F["f_txt_errore"]["ger"] = "Bitte die folgenden obligatorischen Felder ausfüllen:
    \n\r"; $F["f_txt_errore"]["fra"] = "Remplir les champs obligatoires suivants:
    \n\r"; $F["f_txt_errore"]['spa'] = "Llenar el campo obligatorio:
    \n\r"; $F["f_txt_invio"]["ita"] = "Grazie #NOME# per aver compilato il nostro modulo, di seguito i dati inviati:


    << Ritorna alla Home Page
    \n\r"; $F["f_txt_invio"]["eng"] = "Thanks #NOME# for the request:


    << Return to Home Page
    \n\r"; $F["f_txt_invio"]["ger"] = "#NOME# Wir danken Ihnen, dass Sie unseren Fragebogen ausgefüllt haben, hier die übersandten Daten:


    << zurück zur Home-Page
    \n\r"; $F["f_txt_invio"]["fra"] = "#NOME# Merci d'avoir rempli notre formulaire, ci-après les données communiquées:


    << Retour à la Page d'accueil.
    \n\r"; $F["f_txt_invio"]["spa"] = "#NOME# Gracias de la solicitud:


    << Retour à la Page d'accueil.
    \n\r"; $F["f_txt_doppiaconferma"]["ita"] = "Prego riconfermare"; $F["f_txt_doppiaconferma"]["eng"] = "Please retype"; $F["f_txt_doppiaconferma"]["ger"] = "Bitte bestätigen Sie"; $F["f_txt_doppiaconferma"]["fra"] = "S'il vous plaît confirmer"; $F["f_txt_doppiaconferma"]["spa"] = "Por favor, confirmar"; $F["f_txt_doppiaconferma_err"]["ita"] = "Devono essere uguali"; $F["f_txt_doppiaconferma_err"]["eng"] = "Must to be the same"; $F["f_txt_doppiaconferma_err"]["ger"] = "Muss gleich"; $F["f_txt_doppiaconferma_err"]["fra"] = "Doit être égal"; $F["f_txt_doppiaconferma_err"]["spa"] = "Debe ser igual"; $F["f_txt_email2"]["ita"] = "(Non valida)\n\r"; $F["f_txt_email2"]["eng"] = "(Incorrect syntax)\n\r"; $F["f_txt_email2"]["chi"] = "(不正确的语法)\n\r"; $F["f_txt_email2"]["ger"] = "(Nicht korrekt)\n\r"; $F["f_txt_email2"]["fra"] = "(Incorrecte)\n\r"; $F["f_txt_email2"]["spa"] = "(Incorrecto)\n\r"; $F["f_txt_nolink"]["ita"] = "(non puoi inserire link http)\n\r"; $F["f_txt_nolink"]["eng"] = "(you can't insert http links)\n\r"; $F["f_txt_nolink"]["chi"] = "(您无法插入 http 链接)\n\r"; $F["f_txt_nolink"]["ger"] = "(Sie können keine HTTP-Links einfügen)\n\r"; $F["f_txt_nolink"]["fra"] = "(vous ne pouvez pas insérer de liens http)\n\r"; $F["f_txt_nolink"]["spa"] = "(No puedes insertar enlaces http)\n\r"; $F["f_txt_piva"]["ita"] = "(Non valida)\n\r"; $F["f_txt_piva"]["eng"] = "(Incorrect)\n\r"; $F["f_txt_piva"]["ger"] = "(Nicht korrekt)\n\r"; $F["f_txt_piva"]["fra"] = "(Incorrecte)\n\r"; $F["f_txt_piva"]["spa"] = "(Incorrecto)\n\r"; $F["f_txt_cfiscale"]["ita"] = "(Non valido)\n\r"; $F["f_txt_cfiscale"]["eng"] = "(Incorrect)\n\r"; $F["f_txt_cfiscale"]["ger"] = "(Nicht korrekt)\n\r"; $F["f_txt_cfiscale"]["fra"] = "(Incorrecte)\n\r"; $F["f_txt_cfiscale"]["spa"] = "(Incorrecto)\n\r"; $F["f_txt_url_online"]["ita"] = "(Non valido)\n\r"; $F["f_txt_url_online"]["eng"] = "(Incorrect)\n\r"; $F["f_txt_url_online"]["ger"] = "(Nicht korrekt)\n\r"; $F["f_txt_url_online"]["fra"] = "(Incorrecte)\n\r"; $F["f_txt_url_online"]["spa"] = "(Incorrecto)\n\r"; $F["f_txt_numero"]["ita"] = "(Il campo deve essere un numero)\n\r"; $F["f_txt_numero"]["eng"] = "(The field must be numeric)\n\r"; $F["f_txt_numero"]["ger"] = "(Das Feld muss eine Zahl sein)\n\r"; $F["f_txt_numero"]["fra"] = "(Le champ doit être un nombre)\n\r"; $F["f_txt_numero"]["spa"] = "(El campo debe ser un número)\n\r"; $F["f_txt_reg"]["ita"] = "(Contenuto non valido)\n\r"; $F["f_txt_reg"]["eng"] = "(Invalid content)\n\r"; $F["f_txt_reg"]["ger"] = "(Ungültiger Inhalt)\n\r"; $F["f_txt_reg"]["fra"] = "(Contenu non valide)\n\r"; $F["f_txt_reg"]["spa"] = "(Contenido no es válido)\n\r"; $F["f_txt_err_file"]["ita"] = "(Formato non accettato)\n\r"; $F["f_txt_err_file"]["eng"] = "(Format is not accepted)\n\r"; $F["f_txt_err_file"]["ger"] = "(Das Format wird nicht akzeptiert)\n\r"; $F["f_txt_err_file"]["fra"] = "(Le format n'est pas accepté)\n\r"; $F["f_txt_err_file"]["spa"] = "(El formato no es aceptada)\n\r"; //Messaggio che arriva al proprietario della struttura $F['f_lingua_form'] = "AUTO"; //linga automatica in base alla lingua della pagina ???? if($CONF["indi_subversion"] > 5) $F['f_invio_agg'] = "NO"; else $F['f_invio_agg'] = "SI";//Invio anche i dati aggiuntivi controllando che l'email del destinatario sia tra quelle di riferimento del sito ($DATI['email'] o $DATI['f_email_cc']) $F['f_invio_agg_force'] = "NO"; //Invio anche i dati aggiuntivi a prescindere dall'email $F['f_form_tpl'] = " - #NCAMPO#: #VCAMPO# \n\n"; $F['f_radio_sep'] = "  "; $F['f_oggetto']["xxx"] = "Richiesta [#SITO#] - #NOME#"; $F['f_testo']["xxx"] = "Messaggio di richiesta informazioni ricevuto dal form del sito #SITO# .\nPer inviare una risposta al messaggio potete semplicemente rispondere a questa e-mail.\n\n\n#MESSAGGIO#"; $F['f_testo_visitatore']["xxx"] = "Thank you for your request.\nBelow you'll find a summary of the submitted data:\n\n#MESSAGGIO#\n\n#SITO#"; $F['f_testo_visitatore']["ita"] = "Grazie per la tua richiesta.\nDi seguito un riepilogo dei dati inviati:\n\n#MESSAGGIO#\n\n#SITO#"; $F['f_testo_msg']["ita"] = "MESSAGGIO"; $F['f_testo_msg']["eng"] = "MESSAGE"; $F['f_invio_tipo'] = "DA_FORM"; //tipo di invio DA_FORM (default) oppure DA_CONF //CAMPI SELECT PREIMPOSTATI $F["f_txt_nazioni"]["ita"] = " |Afghanistan|Albania|Algeria|Andorra|Angola|Anguilla|Antille Olandesi|Arabia Saudita|Argentina|Armenia|Aruba|Australia|Austria|Azerbaigian|Bahamas|Bahrain|Bangladesh|Barbados|Belgio|Belize|Benin|Bermuda|Bhutan|Bielorussia|Bolivia|Bosnia-Erzegovina|Botswana|Brasile|Brunei|Bulgaria|Burkina Faso|Burundi|Cambogia|Camerun|Canada|Capo Verde|Ciad|Cile|Cina|Cipro|Città del Vaticano|Colombia|Comore|Congo|Corea del Sud|Costa d'Avorio|Costa Rica|Croazia|Danimarca|Dominica|Ecuador|Egitto|El Salvador|Emirati Arabi Uniti|Eritrea|Estonia|Etiopia|Figi|Filippine|Finlandia|Francia|Gabon|Gambia|Georgia|Germania|Ghana|Giamaica|Giappone|Gibuti|Giordania|Grecia|Guadalupa|Guatemala|Guayana Francese|Guinea|Guinea-Bissau|Guinea Equatoriale|Guyana|Haiti|Honduras|Hong Kong|India|Indonesia|Irlanda|Islanda|Isole Vergini (GB)|Israele|Italia|Kazakhstan|Kenya|Kirghizistan|Kiribati|Kuwait|Laos|Lesotho|Lettonia|Libano|Liechtenstein|Lituania|Lussemburgo|Macedonia|Madagascar|Malaysia|Mali|Malta|Marocco|Martinica|Mauritania|Maurizio|Mayotta|Messico|Micronesia|Moldavia|Monaco|Mongolia|Montserrat|Mozambico|Namibia|Nepal|Nicaragua|Niger|Nigeria|Niue|Norvegia|Nuova Caledonia|Nuova Zelanda|Oman|Paesi Bassi|Pakistan|Panama|Papua Nuova Guinea|Paraguay|Perù|Polinesia Francese|Polonia|Portogallo|Qatar|Regno Unito|Repubblica Ceca|Repubblica Centrafricana|Repubblica Dominicana|Romania|Ruanda|Russia|Sahara Occidentale|San Marino|Senegal|Serbia e Montenegro|Seychelles|Sierra Leone|Singapore|Slovacchia|Slovenia|Somalia|Spagna|Sri Lanka|Stati Uniti|Sudafrica|Suriname|Svezia|Svizzera|Swaziland|Tagikistan|Taiwan|Tanzania|Thailandia|Timor Est|Togo|Tokelau|Tonga|Trinidad e Tobago|Tunisia|Turchia|Turkmenistan|Ucraina|Uganda|Ungheria|Uruguay|Uzbekistan|Vanuatu|Venezuela|Vietnam|Yemen|Zambia|Zimbabwe|-----------|Altra"; $F["f_txt_nazioni"]["xxx"] = " |Afghanistan|Albania|Algeria|Andorra|Angola|Anguilla|Antarctica|Antigua and Barbuda|Argentina|Armenia|Aruba|Australia|Austria|Azerbaijan|Bahamas|Bahrain|Bangladesh|Barbados|Belarus|Belgium|Belize|Benin|Bermuda|Bhutan|Bolivia|Bosnia and Herzegovina|Botswana|Brazil|British Indian Ocean|Brunei|Bulgaria|Burkina Faso|Burundi|Cambodia|Cameroon|Canada|Cape Verde|Cayman Islands|Central African Republic|Chad|Chile|China|Christmas Island|Cocos (Keeling) Islands|Colombia|Comoros|Congo|Cook Islands|Costa Rica|Croatia|Cyprus|Czech Republic|Denmark|Djibouti|Dominica|Dominican Republic|East Timor|Ecuador|Egypt|El Salvador|Equatorial Guinea|Eritrea|Estonia|Ethiopia|Falkland Islands|Faroe Islands|Fiji|Finland|France|French Guiana|French Polynesia|Gabon|Gambia|Georgia|Germany|Ghana|Gibraltar|Greece|Greenland|Grenada|Guadeloupe|Guatemala|Guinea|Guinea-Bissau|Guyana|Haiti|Honduras|Hong Kong|Hungary|Iceland|India|Indonesia|Ireland|Israel|Italy|Ivory Coast|Jamaica|Japan|Jordan|Kazakhstan|Kenya|Kiribati|Korea, South|Kuwait|Kyrgyzstan|Laos|Latvia|Lebanon|Lesotho|Liechtenstein|Lithuania|Luxembourg|Macau|Macedonia|Madagascar|Malawi|Malaysia|Maldives|Mali|Malta|Marshall Islands|Martinique|Mauritania|Mauritius|Mayotte|Mexico|Micronesia|Moldova|Monaco|Mongolia|Montserrat|Morocco|Mozambique|Namibia|Nauru|Nepal|Netherlands|Netherlands Antilles|New Caledonia|New Zealand|Nicaragua|Niger|Nigeria|Niue|Norfolk Island|Norway|Oman|Pakistan|Palestinian Territory|Panama|Papua New Guinea|Paraguay|Peru|Philippines|Pitcairn Island|Poland|Portugal|Qatar|Réunion|Romania|Russia|Rwanda|Saint Helena|Saint Kitts and Nevis|Saint Lucia|Saint Pierre|Saint Vincent|Samoa|San Marino|Saudi Arabia|Senegal|Serbia and Montenegro|Seychelles|Sierra Leone|Singapore|Slovakia|Slovenia|Solomon Islands|Somalia|South Africa|Spain|Sri Lanka|Swaziland|Sweden|Switzerland|Taiwan|Tajikistan|Tanzania|Thailand|Togo|Tokelau|Tonga|Trinidad and Tobago|Tunisia|Turkey|Turkmenistan|Turks Islands|Tuvalu|Uganda|Ukraine|United Arab Emirates|United Kingdom|United States|Uruguay|Uzbekistan|Vanuatu|Vatican City|Venezuela|Vietnam|Virgin Islands|Wallis and Futuna|Western Sahara|Yemen|Zambia|Zimbabwe|-----------|Other"; $F["f_txt_province"]["xxx"] = " |AG|AL|AN|AO|AR|AP|AT|AV|BA|BL|BN|BG|BI|BO|BZ|BS|BR|CA|CL|CB|CE|CT|CZ|CH|CO|CS|CR|KR|CN|EN|FE|FI|FG|FC|FR|GE|GO|GR|IM|IS|SP|AQ|LT|LE|LC|LI|LO|LU|MC|MN|MS|MT|ME|MI|MO|NA|NO|NU|OR|PD|PA|PR|PV|PG|PU|PE|PC|PI|PT|PN|PZ|PO|RG|RA|RC|RE|RI|RN|RM|RO|SA|SS|SV|SI|SR|SO|TA|TE|TR|TO|TP|TN|TV|TS|UD|VA|VE|VB|VC|VR|VV|VI|VT"; $F["f_txt_giorni"]["xxx"] = " |1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31"; $F["f_txt_mesi"]["xxx"] = " |1|2|3|4|5|6|7|8|9|10|11|12|"; $F["f_txt_anni"]["xxx"] = " |2006|2007|2008|2009|2010|2011|2012|2013"; //template form automatica $F["f_table_t"]["xxx"] = "
    #HIDDEN# #FORM#
    #HEADER#
    #ERRORI#
     
    "; //template riga $F["f_table_riga_t"]["xxx"] = "#NOME_CAMPO##CAMPO#"; //template risposta $F["f_table_risp_t"]["xxx"] = "
    #CONFERMA#

    "; //css delle form di base si possono sovrascrivere $F["f_css"]["xxx"] = " .$F[f_nome_form] { border-style: solid; border-color: #999999; background-color: #FAFAFA; border-width: 1px; font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; } .$F[f_nome_form]_head { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; text-align: center; display: block; } .$F[f_nome_form]_err { color:#FF0000; font-weight:bold; font-size: 10px; font-family: Verdana, Arial, Helvetica, sans-serif; } .$F[f_nome_form]_txt { font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 11px; } .$F[f_nome_form]_table { font-size: 11px; } "; function indiControlloAntispamCalcolaPre($value) { // tutti veri: // "1" == ("1a1"*1) // "1a" == intval("1a") // "1a" == 1 if($value != (string)intval($value)){ return 0; } $ret = (string)($value * 3 + 1462); return $ret; } function indiControlloAntispamCalcola($value) { return md5(indiControlloAntispamCalcolaPre($value)); } function indiControlloAntispamCheckLimitIP() { //se ritorna true vuol dire che è scattato un limite if ($GLOBALS["indiControlloAntispamCheckLimitIP_giafatto"]) return false; $ip = $_SERVER["REMOTE_ADDR"]; //controllo che stesso IP non invii piu di 3 ogni 3 secondi, 5 ogni 10, 10 ogni 2 minuti, 20 ogni 10 minuti $errmsg = indiControlloAntispamCheckLimitIPperTime($ip, 3, 3); if (!$errmsg) $errmsg = indiControlloAntispamCheckLimitIPperTime($ip, 5, 10); if (!is_locale()) { //in locale faccio solo controllo sopra if (!$errmsg) $errmsg = indiControlloAntispamCheckLimitIPperTime($ip, 10, 60 * 2); if (!$errmsg) $errmsg = indiControlloAntispamCheckLimitIPperTime($ip, 20, 60 * 10); } //indiCacheSet($k, $d, $t=0 /*0=forever*/); //$errmsg = "anti spam check limit ip"; if ($errmsg) { $F["f_errori"]["antispam"] = $errmsg; //devvo aggiungere un campo anche fittizio con l'errore per bloccare l'invio del form $GLOBALS["indiControlloAntispamCheckLimitIP_errmsg"] = $errmsg; return true; } $GLOBALS["indiControlloAntispamCheckLimitIP_giafatto"] = true; return false; } function indiControlloAntispamCheckLimitIPperTime($ip, $max, $secondi) { $ktempo = $secondi > 60 ? (($secondi / 60) . "m") : $secondi . "s"; $kts = "indiCheckAntispamIP_ts_" . $ktempo . "_" . $ip; $vts = indiCacheGet($kts); if (!$vts) $vts = time(); $kcount = "indiCheckAntispamIP_count_" . $ktempo . "_" . $ip; $vcount = indiCacheGet($kcount); if (!$vcount) $vcount = 0; $vcount++; $diff = time() - $vts; if($_SERVER['REMOTE_ADDR'] == '192.168.0.115' || $_GET['debugtnx']){ echo '
    ';
    		echo "$ktempo vcount:$vcount / max:$max\n";
    		echo "$ktempo diff:" . $diff . "s - " . round($diff/60,1) . "m / max:".$secondi."s - " . round($secondi/60,1) . "m";
    		echo '
    '; } indiCacheSet($kts, time(), $secondi); indiCacheSet($kcount, $vcount, $secondi); if ($diff <= $secondi) { if ($vcount > $max) { $errmsg = "anti spam check limit ip [$vcount>$max/$ktempo|".$diff."s]"; return $errmsg; } } else { $vcount = 1; } return false; } function indiControlloAntispamCheckInvio($formId){ //effettual il vero controllo prima di fare l'invio (f_invio) //se return FALSE vuol dire che è SPAM e invia 403 //se return TRUE allora ok, non è spam global $DATI,$LANG,$F,$FORM,$FORM_SQL,$_POST; foreach($F as $v) { if (is_array($v) && $v["tipo"] == "recaptcha") { //se già presente recaptcha evito altri controlli return true; } } //cecca 29-05-2025 vedi sotto nell'if, lascio solo controllo per IP, per alfa1 e alfa2 devo fare altri test e forse è diventato anacronistico???... //if (!is_locale()) { // return true; //} $campoSingolo = md5(md5($formId)); if (is_array($_POST) && count($_POST) > 0) { $msg = " formId: $formId f_is_real_post(formId): " . (f_is_real_post($formId) ? "true" : "false") . " f_is_real_post(): " . (f_is_real_post() ? "true" : "false"); //mail("m.ceccarelli@tnx.it", "form st debug " . $DATI["baseurl"], $msg . "\n\n" . print_r($_POST, true) . "\n\nDATI:" . print_r($DATI, true), "From: cecca@tnx.it\n"); if (count($F["f_errori"]) > 0) { //se ci sono gia errori evito altri controlli return true; } //if (f_is_real_post() && (!$DATI['deferAllScript'] && (!$_POST[$formId . '_tnx_cdn_alfa1'] || $_POST[$formId . '_tnx_cdn_alfa2'] != indiControlloAntispamCalcola($_POST[$formId . '_tnx_cdn_alfa1'])) // || $DATI['deferAllScript'] && !$_POST[$campoSingolo] // || indiControlloAntispamCheckLimitIP()) if (f_is_real_post() && indiControlloAntispamCheckLimitIP()) { if (!$GLOBALS["indiControlloAntispamCheckLimitIP_errmsg"]) $GLOBALS["indiControlloAntispamCheckLimitIP_errmsg"] = "anti spam check"; $errmsg = ($DATI["lang"] == "ita" ? "Richiesta bloccata (" : "Request blocked (") . $GLOBALS["indiControlloAntispamCheckLimitIP_errmsg"] . ")"; echo "
    ".$errmsg."
    "; if (is_locale()) { echo "
    ";
    				echo $GLOBALS["indiControlloAntispamCheckLimitIP_errmsg"];
    				echo "inviata mail a m.ceccarelli@tnx.it con debug
    "; } //verificare se nel form non ci sono i campi alfa1 e alfa2, in formBase cdn c'è per tutti ma su form fatti extra va aggiunto indiControlloAntispam(), vedi I:\SITI\ordinalonet\_template\blocks\form-acquista-ora-new.php mail("m.ceccarelli@tnx.it", "[indiControlloAntispamCheckInvio:SPAM] " . $DATI["url_richiesto"], $errmsg . "\n\n" . $msg . "\n\nREQUEST:\n" . print_r($_REQUEST, true) . "\n\nSERVER:\n" . print_r($_SERVER, true), "From: cecca@tnx.it\n"); indi_trigger_error("[indiControlloAntispamCheckInvio:SPAM] " . $errmsg); $F["f_errori"]["antispam"] = $errmsg; // print_r_tnx($F["f_errori"], $_SERVER['REMOTE_ADDR'] == '192.168.0.177') || die; //annullo tutto $_POST = array(); $_GET = array(); $_REQUEST = array(); $_SESSION = array(); header('HTTP/1.0 403 Forbidden antispam check'); return false; } } return true; } function indiControlloAntispamCleanIdForm($id) { $cleaned = preg_replace('/[^a-zA-Z0-9]/', '_', $id); $cleaned = preg_replace('/_+/', '_', $cleaned); $cleaned = trim($cleaned, '_'); return $cleaned; } function indiControlloAntispam($formId, $formIdToAttach = null, $inputType = "hidden"){ global $DATI,$LANG,$F,$FORM,$FORM_SQL,$_POST; if ($formIdToAttach == null) $formIdToAttach = $formId; $formIdClean = indiControlloAntispamCleanIdForm($formId); //gia inserito? if ($GLOBALS['indiControlloAntispamInserito_' . $formId]) return; //include nel form i campi alfa1 e alfa2 per il check via javascript foreach($F as $v) { if (is_array($v) && $v["tipo"] == "recaptcha") { //se già presente recaptcha evito altri controlli return; } } if($_GET['debugtnx']){ $inputType = "text"; } $GLOBALS['indiControlloAntispamInserito_' . $formId] = true; $campoSingolo = md5(md5($formId)); $random = mt_rand(100000, 999999); if(!$DATI['deferAllScript']) { $prepend = '
    '; } else { $prepend = '
    '; } // return; ob_start(); ?> 1) { while(list($k,$v) = @each($OBB_ARRAY)) { $F[$v]["obb"] = "SI"; } } //adesso ho l' array di compatibilita e ricreo quello definitivo F_OBB reset($F); while(list($k,$v) = @each($F)) { //creo array campi obbligatori //print "#".$v["obb"]."#$k"; if(is_array($v) && $v["obb"] == "SI") $F_OBB[$k] = "SI"; if(is_array($v) && $v["obb_gruppo"] != "") $F_OBB_GRUPPO[$v["obb_gruppo"]][] = $k; } //controllo campi obbligatori ci deve essere anche l' e-mail //metto opzione no submit if($FORM && $_POST['f_nosubmit'] != 1 && $_GET['f_nosubmit'] != 1) { while(list($k,$v) = @each($F_OBB)) { //controllo obbligatori //print $F[$k][def][$lang]; //controllo campo di default, se presenti non da' errore su questi if($F[$k][err] != "NO") { if( ( $F[$k]["tipo2"] == "" OR $F[$k]["tipo2"] == "incrementale" OR $F[$k]["tipo2"] == "data" ) && $F[$k]["obb"]== "SI" && ( // aggiunta questa parentesi Lorenzo 23-05-2019 ( is_string($FORM[$k]) && trim($FORM[$k]) == "" ) || ( !is_string($FORM[$k]) && !$FORM[$k] ) || ( is_array($F[$k]["def"]) && $FORM[$k] == $F[$k]["def"][$lang] ) ) ) { //gestisco errore campi obbligatori $obb = "SI"; //imposto array con gli errori relativi ai campi $F["f_errori"][$k] .= $F[$k][$lang]; } if($F["f_errori"][$k] && $F[$k]["tipo"] == "daterange"){ // Questo componente genera un doppio post, vedo se ci sono entrambi i campi ed eventualmente annullo questo f_errori $campoInizio = $k . "_inizio"; $campoFine = $k . "_fine"; if($FORM[$campoInizio] && $FORM[$campoFine]) unset($F["f_errori"][$k]); } //cecca 23/12/2024 controllo che non mettano link spam if($F[$k]["tipo2"] == "" && !is_array($FORM[$k])) { //così dovrei prendere solo campi testuali, ad esempio non voglio prendere i tipi di campo url_online vedi sotto... if (stristr($FORM[$k], "http://") !== false || stristr($FORM[$k], "https://") !== false) { $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_nolink"][$lang]; } } //controllo campi e-mail se definiti ??? devo aggiungere controllo automatico, che valida la mail ovenuque e' if(in_array($F[$k]["tipo2"], ["email", "email_html5"])) { if(trim($FORM[$k]) == "" || vemail(trim($FORM[$k])) != 0) { $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_email2"][$lang]; if($FORM[$k] != "") indi_log_file("ERRORE tipo2=email mod_form:f_init() e-mail:(".$FORM[$k].") :".var_export(vemail(trim($FORM[$k])),1)); } else { indi_log_file("OK tipo2=email mod_form:f_init() e-mail:(".$FORM[$k].") :".var_export(vemail(trim($FORM[$k])),1)); } } elseif($F[$k]["tipo2"] == "url_online") { if(trim($FORM[$k]) == "" || !indi_controllo_url(trim($FORM[$k]))) $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_url_online"][$lang]; } elseif($F[$k]["tipo2"] == "numero" || $F[$k]["tipo2"] == "numero_html5") { if(!is_numeric(trim($FORM[$k])) or trim($FORM[$k]) == "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_numero"][$lang]; } elseif($F[$k]["tipo2"] == "numero_intero") { if(!is_int(trim($FORM[$k])) or trim($FORM[$k]) == "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_numero"][$lang]; } elseif($F[$k]["tipo2"] == "piva") { if(!verifica_partita_iva(trim($FORM[$k])) or trim($FORM[$k]) == "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_piva"][$lang]; } elseif($F[$k]["tipo2"] == "cfiscale") { if(isset($F[$k]["piva_check"])){ if((!verifica_codice_fiscale(trim($FORM[$k])) and $FORM[$k] != $FORM[$F[$k]["piva_check"]]) or trim($FORM[$k]) == "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_cfiscale"][$lang]; } else { if(!verifica_codice_fiscale(trim($FORM[$k])) or trim($FORM[$k]) == "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_cfiscale"][$lang]; } } //controllo per doppia conferma bisogna creare un campo alias if($F[$k]["tipo2"] == "email_doppiaconferma") { if($F[$k]["obb"] == "SI" && vemail(trim($FORM[$k])) != 0 || trim($FORM[$k]) == "") { //gestisco errore campi obbligatori $obb = "SI"; //imposto array con gli errori relativi ai campi $F["f_errori"][$k] .= $F[$k][$lang]; } if((trim($FORM[$k]) != "" and trim($FORM[$k."_alias"]) == "") or $FORM[$k] != $FORM[$k."_alias"]) { //gestisco errore campi obbligatori $obb = "SI"; ///if($FORM[$k] != $FORM[$k."_alias"]) $F[f_errori][$k] .= "Riconfermare la .."; if(trim($FORM[$k] != "") and trim($FORM[$k."_alias"] != ""))$F["f_errori"][$k."_alias"] .= $F[$k][$lang]." (".$F[f_txt_doppiaconferma_err][$lang].")"; else $F["f_errori"][$k."_alias"] .= $F[$k][$lang]." (".$F["f_txt_doppiaconferma"][$lang].")"; //doppiuo controllo //imposto array con gli errori relativi ai campi } } //controllo per doppia conferma bisogna creare un campo alias if($F[$k]["tipo2"] == "doppiaconferma") { if($F[$k]["obb"]== "SI" and trim($FORM[$k]) == "" or ($FORM[$k] == $F[$k]["def"][$lang] and is_array($F[$k]["def"]))) { //gestisco errore campi obbligatori $obb = "SI"; //imposto array con gli errori relativi ai campi $F["f_errori"][$k] .= $F[$k][$lang]; } if(($F[$k]["obb"]== "SI" and trim($FORM[$k]) != "" and trim($FORM[$k."_alias"]) == "") or $FORM[$k] != $FORM[$k."_alias"]) { //gestisco errore campi obbligatori $obb = "SI"; ///if($FORM[$k] != $FORM[$k."_alias"]) $F[f_errori][$k] .= "Riconfermare la .."; if(trim($FORM[$k] != "") and trim($FORM[$k."_alias"] != ""))$F["f_errori"][$k."_alias"] .= $F[$k][$lang]." (".$F[f_txt_doppiaconferma_err][$lang].")"; else $F["f_errori"][$k."_alias"] .= $F[$k][$lang]." (".$F["f_txt_doppiaconferma"][$lang].")"; //doppiuo controllo //imposto array con gli errori relativi ai campi } } //controllo per file if($F[$k][tipo2] == "file") { if(!is_uploaded_file($_FILES[$k]['tmp_name'])) $F[f_errori][$k] .= $F[$k][$lang]; } //manca controllo errore } } if(is_array($F_OBB_GRUPPO)){ while(list($k,$v) = @each($F_OBB_GRUPPO)) { $count[$k] = count($v); $a = 0; $i=1; foreach($v as $sk => $sv){ if($i == 1){ $F["f_errori"][$k] = "Uno tra "; } if($F[$sv][err] != "NO") { if(trim($FORM[$sv]) == "") { //gestisco errore campi obbligatori $obb_gruppo = "SI"; //imposto array con gli errori relativi ai campi $F["f_errori"][$k] .= $F[$sv][$lang]; if($count[$k] != $i){ if($count[$k] > 2 && !(($count[$k]-1) == $i)){ $F["f_errori"][$k] .= " , "; }elseif(($count[$k]-1) == $i || $count[$k] == 2){ $F["f_errori"][$k] .= " e "; } } $a++; } } $i++; } $F["f_errori"][$k] .= " devono essere compilati!"; if($a < $count[$k]){ unset($F["f_errori"][$k]); } } } //ALTRI ERRORI PER TUTTI reset($F); while(list($k,$v) = @each($F)) { if(is_array($F[$k])){ //controllo per file2 if($F[$k]['tipo'] == "file2" ) { //$F[$k]["val"] = $_FILES["file_".$k]['name']; //tolgo errore unset($F["f_errori"][$k]); if($_FILES["file_".$k]['tmp_name'] != "") { if(!is_uploaded_file($_FILES["file_".$k]['tmp_name'])) $F[f_errori][$k] = $F[$k][$lang]; if($F[$k]['file2_tipo'] != "") { //print mime_content_type($_FILES["file_".$k]['tmp_name']); if(indi_cerca($F[$k]['file2_tipo'],$_FILES["file_".$k]['type']) == FALSE) { $F[f_errori][$k] = "".$F[$k][$lang]." ".$F[f_txt_err_file][$lang]; unset($_FILES["file_".$k]); } } if($F[$k]['file2_est'] != "") { //print mime_content_type($_FILES["file_".$k]['tmp_name']); if(indi_cerca($F[$k]['file2_est'],indi_estensione_file($_FILES["file_".$k]['name'])) == FALSE) { $F[f_errori][$k] = "".$F[$k][$lang]." ".$F[f_txt_err_file][$lang]; unset($_FILES["file_".$k]); } } //sicurezza file php if(indi_cerca("php|cgi|php3|php4|sh",indi_estensione_file($_FILES["file_".$k]['name'])) != FALSE) { $F[f_errori][$k] = "Security error !"; unset($_FILES); } //imposto nopme file se c'e' } else { //controllo obbligatorio //cecca 08/03/2024 bug trovato da form cv predari, se al primo post manca qualcosa ma il file c'è, al secondo post non ricontrolla il file... //if($F[$k]["obb"] == "SI" and trim($FORM[$k]) == "") $F[f_errori][$k] = $F[$k][$lang]; if($F[$k]["obb"] == "SI") $F[f_errori][$k] = $F[$k][$lang]; } } else if($F[$k]['tipo'] == "recaptcha" ) { if(!$F["f_errori"]/*se ci sono altri errori basta che stampi quelli*/ && !verificaRecaptcha($F[$k]['tipo2'] == "invisible")) $F["f_errori"][$k] = $F[$k][$lang]; } if(is_array($v) && @array_key_exists("regexp", $v)) { if(preg_match($F[$k]['regexp'], $FORM[$k]) == 0) $F["f_errori"][$k] .= $F[$k][$lang]." ". ($F[$k]['f_txt_reg'][$lang] ? $F[$k]['f_txt_reg'][$lang] : $F["f_txt_reg"][$lang]); } if($v["obb"] != "SI") { if($F[$k]["tipo2"] == "email") { if(vemail(trim($FORM[$k])) != 0 and trim($FORM[$k]) != "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_email2"][$lang]; } elseif($F[$k]["tipo2"] == "url_online") { if(trim($FORM[$k]) != "" && !indi_controllo_url(trim($FORM[$k]))) $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_url_online"][$lang]; } elseif($F[$k]["tipo2"] == "numero" || $F[$k]["tipo2"] == "numero_html5") { if(!is_numeric(trim($FORM[$k])) and trim($FORM[$k]) != "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_numero"][$lang]; } elseif($F[$k]["tipo2"] == "numero_intero") { if(!is_int(trim($FORM[$k])) and trim($FORM[$k]) != "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_numero"][$lang]; } elseif($F[$k]["tipo2"] == "piva") { if(!verifica_partita_iva(trim($FORM[$k])) and trim($FORM[$k]) != "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_piva"][$lang]; } elseif($F[$k]["tipo2"] == "cfiscale") { if(isset($F[$k]["piva_check"])){ if((!verifica_codice_fiscale(trim($FORM[$k])) and $FORM[$k] != $FORM[$F[$k]["piva_check"]] and trim($FORM[$k]) != "" ) or trim($FORM[$k]) == "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_cfiscale"][$lang]; } else if(isset($F[$k]["check"]) and $F[$k]["check"] == "SI"){ if($FORM[cfiscale_sel] == "individuale, sas, ss"){ if(!verifica_codice_fiscale(trim($FORM[$k])) and trim($FORM[$k]) != "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_cfiscale"][$lang]; } } else { if(!verifica_codice_fiscale(trim($FORM[$k])) and trim($FORM[$k]) != "") $F["f_errori"][$k] .= $F[$k][$lang]." ".$F["f_txt_cfiscale"][$lang]; } } } } } //per finire faccio controllo antispam se non ci sono altri errori prima //aspetta.. lo include nel formBase in cdn il bucio /* if(count($F["f_errori"]) > 0) { if(f_is_real_post()){ //cecca 23/12/2024 era disabilitato vediamo se capisco perchè... //cecca 09/01/2024 riattivo (e messo dopo altri errori) //indiControlloAntispam($GLOBALS['F']['f_nome_form']); } } */ //tolgo array se devo if(!$FORM) unset($F['f_errori']); if(count($F["f_errori"]) == 0) unset($F['f_errori']); } else { unset($F['f_errori']); } } function f_salva_configurazione(){ if($GLOBALS['F']['f_nome_form'] != 'FORM') trigger_error("Attenzione è stato personalizzato il nome form prima di chiamare f_isolate_form (".$GLOBALS['F']['f_nome_form'].")"); $GLOBALS['F_DEFAULT'] = $GLOBALS['F']; } function f_ripristina_configurazione(){ if(!$GLOBALS['F_DEFAULT']) trigger_error("Non ho trovato una configurazione \$F salvata, devi chiamare f_salva_configurazione() in funzioni_base.php"); $GLOBALS['F'] = $GLOBALS['F_DEFAULT']; } function f_isolate_form(){ //alla prima chiamata salva una copia di $F che viene ripristinata alle chiamate successive, per gestire più form in una pagina if(isset($GLOBALS['F_DEFAULT'])){ f_ripristina_configurazione(); } else { f_salva_configurazione(); } } // ATTENZIONE: va chiamato dopo f_isolate_form e prima di configurare il nome della form $GLOBALS['F']['f_nome_form'] // meglio usarlo sempre con il nome della form es: // f_is_real_post($F['nome_form']) function f_is_real_post($nome_form = NULL) { if(!$nome_form) $submit = $_POST[$GLOBALS['F']['f_nome_form']."-SUBMIT-"]; else $submit = $_POST[$nome_form."-SUBMIT-"]; if($submit == 1) return true; else return false; } function f_is_real_post_generic(){//controllo indipendente dal nome del form if($_POST) foreach($_POST as $k=>$v) if(is_string($k) && substr($k, -1*strlen("-SUBMIT-")) == "-SUBMIT-") return true; return false; } //aggiunge la classe errore a $CSS function f_add_error_class($CSS) { global $F; if(!$CSS) return ' class="'.$F['f_err_class'].'"'; else { if(preg_match('/class="(.*?)"/', $CSS, $results)){ //metto in class return ' class="'.$F['f_err_class'].' '.$results[1].'"'; } } } function f($nome,$AGG=NULL) { global $F,$FORM,$DATI, $css_framework; //assegno valore e controllo input // $valore = indi_remove_xss($FORM[$nome]); $valore = $FORM ? $FORM[$nome] : null; //lingua $lang = $DATI["lang"]; //controllo aggiuntivi if($AGG == NULL) $AGG = $F[$nome][agg]; $nome_form = $F["f_nome_campi_array"] ? $F["f_nome_form"].'['.$nome.']' : $nome; //genero il nome del CSS if($F[$nome][css] != ""){ if($F[$nome][tipo] == "text" AND $F[$nome][tipo2] == "incrementale") $CSS = 'class="inc_input '.$F[$nome][css].'"'; else $CSS = 'class="'.$F[$nome][css].'"'; } else{ // controllo se per errore è stato settato nella variabile agg la classe if(preg_match('/class="(.*?)"/', $AGG, $results)){ //pulisco da agg $AGG = preg_replace('/class=".*?"/', "", $AGG); //metto in class $CSS = 'class="'.$results[1].'"'; } else{ //solo x vecchie form senza classe errore, la classe di default era il nome della form if(!$F['f_err_class']) $CSS = 'class="'.$F[f_nome_form].'"'; } } //imposto variabile in caso di errore if($F['f_errori'] && $F['f_errori'][$nome] != "") $obb="SI"; if($F['f_errori'] && $F['f_errori'][$F[$nome]["obb_gruppo"]] != "") $obb="SI"; if(fControllaCampoNonCompilato($obb)) $CSS = f_add_error_class($CSS); // 30/09/2024 - TUX: sostituito con funzione perché serviva riutilizzarlo con gli elementi cdn, così non duplico codice // if($DATI["indi_subversion"] > 5) { // if($obb == "SI" and $F['f_err_class'] and f_is_real_post()){ // $CSS = f_add_error_class($CSS); // } // } else { // if($obb == "SI" and $F['f_err_class'] ) $CSS = f_add_error_class($CSS); // } if($F[$nome] && !$F['f_first_input']) {//controllo anche $F[$nome], potrebbe non essere definito e quindi questo hidden salta $F['f_first_input'] = 1; $ret_hidden_check_input = ''; } $stileObbligatorio = f_is_real_post() && $obb == "SI"; // print_r_tnx($nome." ".$F[$nome]['tipo'], $_SERVER['REMOTE_ADDR'] == '192.168.0.177') ; //SOLO TESTO ################## if($F[$nome]['tipo'] == "solotxt") { return $ret_hidden_check_input . $F[$nome]["default"][$lang]; } //Testo + hidden ################## else if($F[$nome]['tipo'] == "hidden_text_kv") { $VALORI = $F[$nome][val][$lang]; @reset($VALORI); while(list($k, $v)=@each($VALORI)) { return $ret_hidden_check_input.encode($v).''; } } //TEXT ################## else if($F[$nome]['tipo'] == "daterange") { $classe_elemento = 'mod-form-daterange'; $classe_elemento_inner = $classe_elemento . '-cont'; $id_elemento_from = $F[$nome]["id"] . '-from'; $id_elemento_to = $F[$nome]["id"] . '-to'; $fromLabel = ""; $toLabel = ""; $frecciaDisplayNone = true; $valoreInizio = $FORM ? $FORM[$nome . "_inizio"] : ""; $valoreFine = $FORM ? $FORM[$nome . "_fine"] : ""; if(!$valoreInizio || !$valoreFine){ if($F[$nome]["default_start"] && $F[$nome]["default_end"]){ $valoreInizio = $F[$nome]["default_start"]; $valoreFine = $F[$nome]["default_end"]; $fromLabel = date("Y/m/d", strtotime($F[$nome]["default_start"])); $toLabel = date("Y/m/d", strtotime($F[$nome]["default_end"])); $frecciaDisplayNone = false; } else { if($F[$nome]["default_start_label"] && $F[$nome]["default_end_label"]){ $fromLabel = $F[$nome]["default_start_label"]; $toLabel = $F[$nome]["default_end_label"]; $frecciaDisplayNone = false; } } } if($valoreInizio && $valoreFine){ $fromLabel = date("d/m/Y", strtotime($valoreInizio)); $toLabel = date("d/m/Y", strtotime($valoreFine)); $frecciaDisplayNone = false; } $button_range = ''; $DATI['file:_libs/jquery-ui-1.12.1/jquery-ui.min.js'] = 'CDN,BODY,VIS'; // $DATI['file:_libs/jquery-ui-1.12.1/jquery-ui.min.css'] = 'CDN,BODY,VIS'; if($DATI["lang2"] != "en") $DATI['file:_libs2/jquery-ui/1.10.3/development-bundle/ui/i18n/jquery.ui.datepicker-' . $DATI["lang2"] . '.js'] = 'CDN,BODY,VIS'; $DATI["less_dynamic_css"] .= " "; $idElementoInizio = $F[$nome]["id"] ? $F[$nome]["id"] . "-inizio" : "datepicker-" . $nome . "-inizio"; $idElementoFine = $F[$nome]["id"] ? $F[$nome]["id"] . "-fine" : "datepicker-" . $nome . "-fine"; $idElementoPulsante = $F[$nome]["id"] ? $F[$nome]["id"] . "-button" : "datepicker-" . $nome . "-button"; $nomeDatePicker = "datepicker_object_" . str_replace("-", "_", ($F[$nome]["id"] ? $F[$nome]["id"] : $nome)); $campoDataOver = "data_over_" . str_replace("-", "_", ($F[$nome]["id"] ? $F[$nome]["id"] : $nome)); if($F[$nome]["js"]["startAvailableDates"]) $minDate = 'minDate:"' . ($F[$nome]["js"]["startAvailableDates"][0]) . '"'; if($F[$nome]["js"]["startAvailableDates"]){ $beforeShowDay = ' var availableDates = ["' . implode('","', $F[$nome]["js"]["startAvailableDates"]) . '"]; selezionabile = availableDates.includes($.datepicker.formatDate("yy-mm-dd", date)); '; } else { $beforeShowDay = ' if(typeof ' . $campoDataOver . ' != "undefined" && ' . $nomeDatePicker . '.datepicker("getDate") != null){ if(date.getTime() >= ' . $nomeDatePicker . '.datepicker("getDate").getTime()){ if(' . $campoDataOver . '.getTime() >= date.getTime()){ td_classe = "in_range"; } else { td_classe = "not_in_range"; } } else { selezionabile = false; } } '; } $js_button_range = ' '; if($F[$nome]["icone"]["calendario"]["elemento"] != "") { $button_range .= '' . img_tag_add_class($F[$nome]["icone"]["calendario"]["elemento"], "daterange-calendario-ico") . ''; } $range_dates = ''; $range_dates .= '' . $fromLabel . ''; if($F[$nome]["icone"]["freccia"]["elemento"]) { $styleFreccia = $frecciaDisplayNone ? ' style="display:none"' : ""; $range_dates .= '' . img_tag_add_class($F[$nome]["icone"]["freccia"]["elemento"], "daterange-arrow-ico") . ''; } $range_dates .= '' . $toLabel . ''; $range_dates = '' . $range_dates . ''; $button_range .= $range_dates; $button_range = '
    ' . $button_range . '
    '; $button_range .= ''; $button_range .= ''; $button_range .= ''; $classiButton = []; $classiButton[] = $classe_elemento; if($obb == "SI" and $F['f_err_class'] and f_is_real_post()) { $classiButton[] = $F['f_err_class']; $F[$nome]["errore"]["messaggi"][]["html"] = $F["f_errori"][$nome]; } $button_range = $F[$nome]["before"] . $button_range . $F[$nome]["after"]; $array_msg_daterange = array(); if($F[$nome]["errore"]) { if(is_array($F[$nome]["errore"]["messaggi"]) and sizeof($F[$nome]["errore"]["messaggi"])>0) { foreach($F[$nome]["errore"]["messaggi"] as $k_msg => $v_msg) { if($v_msg["html"] != "") { $array_msg_daterange[] = $v_msg["html"]; } } $button_range = '
    ' . implode("", $array_msg_daterange) . '
    ' . $button_range; } } $button_range = ''; // reset bottone /////////////////////// if(DEVICE != "phone") { $css_modForm["modform_daterange"] .= ' #ui-datepicker-div { display : flex; align-items : flex-start; } '; } $css_modForm["modform_daterange"] .= ' #ui-datepicker-div { z-index : 100 !important; background-color : #FFF; > * { flex : 1; margin : 0.1rem; } .ui-datepicker-row-break { display : none; } .ui-datepicker-header { position : relative; padding : 0.5rem; background-color : #555; color : #FFF; font-weight : bold; display : flex; align-items : center; justify-content : center; align-items : center; > * { } } .ui-datepicker-prev, .ui-datepicker-next { position : absolute; display : flex; align-items : center; justify-content : center; overflow : hidden; padding : 0.15rem; .ui-icon { text-indent : -99999px; width : 1.1em; height : 1.1em; background-size : 100%; background-position : center; background-repeat : no-repeat; opacity : 0.6; -webkit-transition: opacity .1s ease-in-out; -moz-transition: opacity .1s ease-in-out; -o-transition: opacity .1s ease-in-out; transition: opacity .1s ease-in-out; } } .ui-datepicker-prev { left : 0.5rem; .ui-icon { background-image : url(\'@{root}/' . gall_svg_path(ipath("arrows/1/sx.svg"), "#FFFFFF") . '\'); } &:hover { .ui-icon { opacity:1; } } } .ui-datepicker-next { right : 0.5rem; .ui-icon { background-image : url(\'@{root}/' . gall_svg_path(ipath("arrows/1/dx.svg"), "#FFFFFF") . '\'); } &:hover { .ui-icon { opacity:1; } } } .ui-state-default { display : flex; align-items : center; justify-content : flex-end; padding : 0.5rem; margin : 1px; color : inherit; border-width : 1px; border-style : solid; border-color : #CCC; } .ui-datepicker-calendar { border-collapse : collapse; border-spacing : 0; width : 95%; max-width : 95%; background-color : transparent; margin : auto; th { font-size : 0.85em; padding : 0.5rem 0; text-align : center; } th, td { } td { &.ui-state-disabled { opacity : 0.4; } &.ui-datepicker-today { .ui-state-default { background-color : #ECECA3; } } &.in_range { .ui-state-default { background-color : #CCC; color : #FFF; font-weight : bold; } } } } } .' . $classe_elemento . ' { -moz-appearance : none; -webkit-appearance : none; background-color : #FFF; background-image : none; border-radius : 0.2em; border : 1px solid #b8b8cf; box-shadow : 0 1px 2px rgba(0,0,0,0.05) inset, 0 0 1px 1px #FFF inset; color : inherit; cursor : pointer; font-family : inherit; font-size : 1em; line-height : inherit; margin : 0; padding : 0.7em; position : relative; text-align : inherit; text-decoration : none; transition : background 250ms ease-in-out, transform 150ms ease; vertical-align : middle; width : 100%; display : flex; align-items : center; justify-content : flex-start; .ui-datepicker { left : 0 !important; top : 100% !important; font-size : 1em; padding : 1em; width : 100% !important; } .datarange-dates-cont { display: flex; align-items: center; justify-content: flex-start; > * { margin : 0 0.25rem; } } .daterange-ico-cont { display : flex; align-items : center; justify-content : center; } .daterange-calendario-ico { display : block; width : ' . ($F['test_data_range']["icone"]["calendario"]["size"] ? $F['test_data_range']["icone"]["calendario"]["size"] : "3em") . '; height : ' . ($F['test_data_range']["icone"]["calendario"]["size"] ? $F['test_data_range']["icone"]["calendario"]["size"] : "3em") . '; padding : ' . ($F['test_data_range']["icone"]["calendario"]["padding"] ? $F['test_data_range']["icone"]["calendario"]["padding"] : "0.3em") . '; } .daterange-arrow-ico { display : block; width : ' . ($F['test_data_range']["icone"]["freccia"]["size"] ? $F['test_data_range']["icone"]["freccia"]["size"] : "1.5em") . '; height : ' . ($F['test_data_range']["icone"]["freccia"]["size"] ? $F['test_data_range']["icone"]["freccia"]["size"] : "1.5em") . '; padding : ' . ($F['test_data_range']["icone"]["freccia"]["padding"] ? $F['test_data_range']["icone"]["freccia"]["padding"] : "0.1em") . '; } .daterange-errors-cont { background-color : #F00; color : #FFF; position : absolute; bottom : 0; right : 0; z-index : 10; font-size : 0.8em; line-height : 1em; padding : 0.5rem; } } .' . $classe_elemento_inner . ' { display : flex; align-items : center; justify-content : flex-start; padding : 0; margin : 0; > * { margin : 0 0.25rem; } } '; if($css_modForm) datiAdd("less_dynamic_css_array_before", $css_modForm); return $js_button_range.$ret_hidden_check_input.$button_range; } //TEXT ################## else if($F[$nome]['tipo'] == "text") { if($stileObbligatorio) $STYLE=$F[f_css_sel]; //controllo campo default if(is_array($F[$nome]['default']) and !f_is_real_post()) $valore = $F[$nome]['default'][$lang]; else if(is_array($F[$nome][def]) and !f_is_real_post()) $valore = $F[$nome][def][$lang]; if(is_array($F[$nome][val])) $valore = $F[$nome][val][$lang]; if($F[$nome][tipo2] == "cfiscale" and $F[$nome][check] == "SI"){ $F[$nome . "_sel"][tipo] = "select"; $F[$nome . "_sel"][obb] = "SI"; $F[$nome . "_sel"][agg] = 'class="input_1"'; $F[$nome . "_sel"][val][ita] = 'individuale, sas, ss|snc, srl, spa, scarl,altro'; $ret = f($nome . "_sel");; $ret .= ''; } else if($F[$nome][tipo2] == "incrementale_cdn"){ //per usare l'elemento del campo incrementale dalla cdn $varsBackup_incinput = $vars; // if($DATI["indi_subversion"] > 5 and indi_is_mobile()) $type = "number"; // else $type = "text"; $minVal = isset($F[$nome]["min_val"]) ? $F[$nome]["min_val"] : "0"; $maxVal = isset($F[$nome]["max_val"]) ? $F[$nome]["max_val"] : null; $idInput = $nome; // fallback if($F[$nome]["id_input"] != "") $idInput = $F[$nome]["id_input"]; // fallback vecchie versioni, preferire l'id if($F[$nome]["id"] != "") $idInput = $F[$nome]["id"]; // metodo corretto, l'di deve essere l'input non il suo contenitore $idElementoIncInput = $idInput . '-cont'; $inc_val = $F[$nome]["inc_val"] ? $F[$nome]["inc_val"] : 1; // print '
    // elemendot: ' . $idElementoIncInput . '
    // idInput: ' . $idInput . ' //
    '; ob_start(); $vars = array(); $vars["id"] = $idElementoIncInput; $vars["input_number"]["elemento"]["id"] = $idInput; // $vars["input_number"]["elemento"]["classi_css_aggiuntive"] = array("saddsadsadsa"); $vars["input_number"]["attributi"]["name"] = $nome_form; $vars["input_number"]["attributi"]["value"] = $valore; if(is_array($F[$nome]["incInput"]["params"]["array_merge_recursive_replace"])) $vars = array_merge_recursive_replace($vars, $F[$nome]["incInput"]["params"]["array_merge_recursive_replace"]); if(is_array($F[$nome]["incInput"]["params"]["array_merge"])) $vars = array_merge($vars, $F[$nome]["incInput"]["params"]["array_merge"]); include($DATI["cdn_basepath"]."_pagine/elementi/incInput/incInput.inc.php"); $ret = ob_get_clean(); if($maxVal){ $jsMaxAgg = ' if(parseInt(valore) + ' . $inc_val . ' < ' . $maxVal . ') $("#' . $idInput . '").val(parseInt(valore) + ' . $inc_val . '); else $("#' . $idInput . '").val(' . $maxVal . '); '; } $ret .= ' '; $vars = $varsBackup_incinput; } else if($F[$nome][tipo2] == "incrementale"){ //supporto HTML5 / mobile if($DATI["indi_subversion"] > 5 and indi_is_mobile()) $type = "number"; else $type = "text"; $minVal = $F[$nome]["min_val"] ? $F[$nome]["min_val"] : "0"; $idInput = $F[$nome]["id_input"] ? $F[$nome]["id_input"] : $nome; $inc_val = $F[$nome]["inc_val"] ? $F[$nome]["inc_val"] : 1; $ret = '
    '; if($F[$nome]["tipo_icone"] == "svg"){ $ret .= '
    '; $iconaUp = $F[$nome]["icona_up"] ? $F[$nome]["icona_up"] : gall_svg(ipath("more/more1.svg"), "FFFFFF"); $iconaDown = $F[$nome]["icona_down"] ? $F[$nome]["icona_down"] : gall_svg(ipath("less/less1.svg"), "FFFFFF"); $ret .= '
    ' . navbar_item( array( "ico_svg" => $iconaUp, "link" => "#", "classi_css_aggiuntive" => array("inc_up"), "attributi_inline_bottone" => ' id="up_' . $idInput . '" ', ) ) . '
    '; $ret .= '
    ' . navbar_item( array( "ico_svg" => $iconaDown, "link" => "#", "classi_css_aggiuntive" => array("inc_down"), "attributi_inline_bottone" => ' id="down_' . $idInput . '" ', ) ) . '
    '; } else { $iconaUp = $F[$nome]["icona_up"] ? $F[$nome]["icona_up"] : "+"; $iconaDown = $F[$nome]["icona_down"] ? $F[$nome]["icona_down"] : "-"; $ret .= ''; $ret .= '' . $iconaUp . ''; $ret .= '' . $iconaDown . ''; } $ret .= '
    '; $ret .= ' '; } else { //tipo2 email if( ($F[$nome]['tipo2'] == "email" and $DATI["indi_subversion"] > 5 and indi_is_mobile()) || ($F[$nome]['tipo2'] == "email_html5") ){ $type = "email"; } elseif($F[$nome]['tipo2'] == "numero_html5" || ($F[$nome]['tipo2'] == "numero" and $DATI["indi_subversion"] > 5 and indi_is_mobile())){ $type = "number"; } elseif($F[$nome]['tipo2'] == "data"){ $type = "date"; if($F[$nome]["minDate"]) $AGG .= ' min="' . $F[$nome]["minDate"] . '"'; if($F[$nome]["maxDate"]) $AGG .= ' max="' . $F[$nome]["maxDate"] . '"'; } elseif($F[$nome]['tipo2'] == "orario"){ $type = "time"; } else { $type = "text"; } if($F[$nome]['id'] && substr($AGG, 0, 3) != 'id=' && strpos($AGG, ' id=') === false){ $AGG = 'id="'.indi_htmlentities($F[$nome]['id']).'" '.$AGG; } $ret = ''; } return $ret_hidden_check_input.$ret; } //TEXT HIDDEN ################## else if($F[$nome]['tipo'] == "hidden_text") { if($stileObbligatorio) $STYLE=$F[f_css_sel]; //controllo campo default if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang]; else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang]; if(is_array($F[$nome][val])) $valore = $F[$nome][val][$lang]; return $ret_hidden_check_input.encode($valore).''; } //PASSWORD ################## else if($F[$nome]['tipo'] == "password") { if($stileObbligatorio) $STYLE=$F["f_css_sel"]; //controllo campo default if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang]; else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang]; if(is_array($F[$nome][val])) $valore = $F[$nome][val][$lang]; return $ret_hidden_check_input.''; } //FILE ################## else if($F[$nome]['tipo'] == "file") { if($stileObbligatorio) $STYLE=$F["f_css_sel"]; //controllo campo default //if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang]; //else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang]; // //return ''; return $ret_hidden_check_input.''; } //FILE2 ################## else if($F[$nome]['tipo'] == "file2") { if($stileObbligatorio) $STYLE=$F["f_css_sel"]; if($_FILES["file_".$nome]['tmp_name'] != "" and $F[f_errori][$nome] == "") $valore = indi_urlencode(serialize($_FILES["file_".$nome])); else $valore = $F[$nome][val]; // //return ''; return $ret_hidden_check_input.''; } //HIDDEN ################## else if($F[$nome]['tipo'] == "hidden") { //controllo campo default if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang]; else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang]; if(is_array($F[$nome][val])) $valore = $F[$nome][val][$lang]; return $ret_hidden_check_input.''; } //CHECKBOX ################## else if($F[$nome]['tipo'] == "checkbox") { if($stileObbligatorio) $STYLE=$F[f_css_rc]; //$valore qui è nulla la riga sotto è inutile, usare stato=selezionato (carlo) if($F[$nome]['sel'][$lang] && $valore == $F[$nome]['sel'][$lang]) $stato = "checked=\"checked\""; else { if($F[$nome]['stato'] == "selezionato" && !$FORM) $stato = "checked=\"checked\""; } if($F['f_err_class']) return $ret_hidden_check_input.''; return $ret_hidden_check_input.''; } else if($F[$nome]['tipo'] == "checkbox_cdn") { /* CAZZARCULO -- gestione elemento checkbox singola in campo singolo -- CERCA $F[$nome]['tipo'] == "checkbox_kv_cdn" */ $varsBackupCustomCRS = $vars; ob_start(); print $ret_hidden_check_input; $vars = []; $vars["elemento_entries"]["id"] = $F[$nome]["id"] . "-formCRS"; $vars["entries"]["lista"][0]["id"] = $F[$nome]["id"]; $vars["entries"]["lista"][0]["name"] = $nome_form; $vars["entries"]["lista"][0]["value"] = $F[$nome]["sel"][$lang]; // $vars["entries"]["lista"][0]["valore"]["html"] = 'prova con valore html!!!'; if(fControllaCampoNonCompilato($obb)) $vars["entries"]["lista"][0]["errore"]["attiva"] = true; if($F[$nome]["css"] != "") $vars["entries"]["lista"][0]["classi_css_aggiuntive"] = explode(" ", $F[$nome]["css"]); if($F[$nome]['sel'][$lang] && $valore == $F[$nome]['sel'][$lang]){ $vars["entries"]["lista"][0]["checked"] = true; } else { if($F[$nome]['stato'] == "selezionato" && !$FORM) $vars["entries"]["lista"][0]["checked"] = true; } $vars["elemento_label"]["padding"] = "0"; $vars["elemento_entries"]["classi_css_aggiuntive"] = ["fields_cont"]; $vars["elemento_entries"]["classe_css"] = "row-checkbox-entries"; $vars["elemento_entries"]["usa_selettore_classe"] = true; $vars["elemento_entries"]["usa_selettore_custom"] = "#" . $F["f_nome_form"] . " ." . $vars["elemento_entries"]["classe_css"]; if(is_array($F[$nome]["checkbox_cdn"]["elemento_cdn"]["params"])) { $vars = array_merge_recursive_replace($vars,$F[$nome]["checkbox_cdn"]["elemento_cdn"]["params"]); } include($DATI["cdn_basepath"]."_pagine/elementi/customCRS/customCRS.inc.php"); return ob_get_clean(); $vars = $varsBackupCustomCRS; } else if($F[$nome]['tipo'] == "valutazione_cdn") { if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang]; $varsBackupValutazioneCdn = $vars; ob_start(); $vars = array(); $vars["id_elemento"] = $F[$nome]["id"] . "-cont"; $vars["campo_val_nascosto"]["stampa"] = true; $vars["campo_val_nascosto"]["id"] = $F[$nome]["id"]; $vars["campo_val_nascosto"]["name"] = $nome_form; $vars["campo_val_nascosto"]["value"] = $valore; if($valore) $vars["dati"]["valutazione_inserita"] = $valore; // $vars["configurazione"]["stella_ico"]["color"] = "#99CC00"; // $vars["configurazione"]["user"]["ico"]["elemento"] = gall_svg_tag(ipath("user/user2.svg")); // $vars["configurazione"]["stella_ico"]["elemento"] = gall_svg_tag(ipath("star/star1.svg")); // $vars["configurazione"]["stella_ico"]["size"] = "2em"; $vars["js"]["custom_function_click"] = " var ratingSelezionato = $(this).attr('data-rating'); $('#" . $vars["campo_val_nascosto"]["id"] . "').val(ratingSelezionato); $('#" . $vars["campo_val_nascosto"]["id"] . "-cont .rating-add-star').each(function(index){ if($(this).attr('data-rating') <= ratingSelezionato){ $(this).addClass('rating-star-selected'); } else { $(this).removeClass('rating-star-selected'); } }); "; if(is_array($F[$nome]["elemento_cdn"]["vars"]) and sizeof($F[$nome]["elemento_cdn"]["vars"])>0) $vars = array_merge_recursive_replace($vars,$F[$nome]["elemento_cdn"]["vars"]); include($DATI["cdn_basepath"]."_pagine/elementi/valutazioneAdd/valutazioneAdd.inc.php"); $campo_valutazione = ob_get_clean(); $campo_valutazione = '
    ' . $ret_hidden_check_input . $campo_valutazione . '
    '; $vars = $varsBackupValutazioneCdn; return $campo_valutazione; } else if($F[$nome]['tipo'] == "checkbox_kv_cdn") { /* CAZZARCULO -- gestione elemento con checkbox multiple nello stesso campo CERCA $F[$nome]['tipo'] == "checkbox_cdn" */ $isElementoCdn = is_array($F[$nome]["checkbox_kv_cdn"]["elemento_cdn"]["params"]); $erroreObb = false; $return_custom_checkbox_cfg = $F[$nome]['custom_checkbox_cfg'] ? $F[$nome]['custom_checkbox_cfg'] : []; $stampa_messaggio_campo = true; if($F[$nome]['obb'] == "SI" && f_is_real_post() && !$valore) { if(isset($F[$nome]["stampa_messaggio_errore"]) and !$F[$nome]["stampa_messaggio_errore"]) $stampa_messaggio_campo = false; if($stampa_messaggio_campo) $return_custom_checkbox_cfg["errore"]["messaggio"] = 'Errore, compilare correttamente questo campo'; $erroreObb = true; } if($F[$nome]["val"][$DATI["lang"]]) { $conta_campo = 0; $checkedStatus = []; foreach($F[$nome]["val"][$DATI["lang"]] as $k_campo => $v_campo) { $array_entry[$conta_campo]["id"] = $F["f_nome_form"] . '[' . $nome . ']_option' . ($conta_campo+1); $array_entry[$conta_campo]["name"] = $F["f_nome_form"] . '[' . $nome . '][' . $k_campo . ']'; $array_entry[$conta_campo]["value"] = $k_campo; $array_entry[$conta_campo]["valore_txt"] = $v_campo; if($F[$nome]['obb'] == "SI") $array_entry[$conta_campo]["obb"] = true; if(!is_array($F[$nome]['default']) && ($F[$nome]['default'] == $k_campo || $F[$nome]['sel'] == $k_campo) && !f_is_real_post()){ $valore = $k_campo; } if($erroreObb) { $array_entry[$conta_campo]["errore"]["campo_errato"] = true; if($F[$nome]["html_messaggio_errore"] != "") $array_entry[$conta_campo]["errore"]["errore_html"] = $F[$nome]["html_messaggio_errore"]; } if($F[$nome]['css']) $array_entry[$conta_campo]["classi_css_aggiuntive"] = [$F[$nome]['css'], "errore_radio"]; if((is_array($valore) && ($valore[$k_campo] || in_array($k_campo, $valore))) || $k_campo == $valore ){ if($isElementoCdn) $checkedStatus[$conta_campo] = true; else $array_entry[$conta_campo]["checked"] = true; } else { if($isElementoCdn) $checkedStatus[$conta_campo] = false; else $array_entry[$conta_campo]["checked"] = false; } $conta_campo++; } $return_custom_checkbox_cfg["entries"] = $array_entry; } if($F[$nome]['cfg_tipologie']) $return_custom_checkbox_cfg['cfg_tipologie'] = $F[$nome]['cfg_tipologie']; if($F[$nome]["checkbox_kv_cdn"]["entries"]) { $return_custom_checkbox_cfg["entries"] = array_merge_recursive_replace($return_custom_checkbox_cfg["entries"], $F[$nome]["checkbox_kv_cdn"]["entries"]); } if(f_is_real_post()){ foreach($checkedStatus as $contaCampo => $checked) $array_entry[$contaCampo]["checked"] = $checked; $return_custom_checkbox_cfg["entries"] = $array_entry; } $return_custom_checkbox_cfg["id_div_contenitore"] = $F["f_nome_form"] . "-" . $nome; if($isElementoCdn) { $varsBackupCustomCRS = $vars; ob_start(); print $ret_hidden_check_input; $vars = indiConvertModFormCBToCustomCRS(["campo_modform" => $F[$nome], "form" => $F, "custom_checkbox_cfg" => $return_custom_checkbox_cfg]); $vars["elemento_label"]["padding"] = "0"; $vars["elemento_entries"]["classi_css_aggiuntive"] = ["fields_cont"]; $vars["elemento_entries"]["classe_css"] = "row-checkbox-entries"; $vars["elemento_entries"]["usa_selettore_classe"] = true; $vars["elemento_entries"]["usa_selettore_custom"] = "#" . $F["f_nome_form"] . " ." . $vars["elemento_entries"]["classe_css"]; $vars = array_merge_recursive_replace($vars,$F[$nome]["checkbox_kv_cdn"]["elemento_cdn"]["params"]); include($DATI["cdn_basepath"]."_pagine/elementi/customCRS/customCRS.inc.php"); return ob_get_clean(); $vars = $varsBackupCustomCRS; } else { return $ret_hidden_check_input. custom_checkbox_radio($return_custom_checkbox_cfg); } } else if($F[$nome]['tipo'] == "check_kv") {//vedi anche check_kv_div f_check_tpl if($stileObbligatorio) $STYLE=$F['f_css_sel_select']; $stato = ""; if($F[$nome]['f_check_tpl'] != "") $radio_tpl = $F[$nome]['f_check_tpl']; else $radio_tpl = $F['f_check_tpl']; $VALORI = $F[$nome]['val'][$lang]; // aggiunto Lore 04/04/2018 if(is_array($F[$nome]['default']) && !$FORM) $valore = $F[$nome]['default'][$lang]; else if(is_array($F[$nome]['sel']) && !$FORM) $valore = $F[$nome]['sel'][$lang]; if($F[$nome]['num_col'] != "") $num_col = $F[$nome]['num_col']; else $num_col = 1; @reset($VALORI); $C = 0; $out = ""; $width_td = 100 / $num_col; while(list($k, $v)=@each($VALORI)) { if(trim($k) == $F[$nome]['sel'][$lang] && trim($k) != "") $selezionato = TRUE; else $selezionato = FALSE; // modificato Lorenzo 18/11/2021 if(is_array($valore)) if(isset($valore[$k])/* in_array(trim($k),$valore)*/ || $selezionato) $stato = "checked=\"checked\""; else $stato = ""; $input = ''; $riga = str_replace('#CHECK#',$input,$radio_tpl); $riga = str_replace('#VALORE#',$v,$riga); if($C % $num_col == 0){ $out .= ""; } else if ($C % $num_col == ($num_col-1)){ $out .= ""; } else { $out .= ""; } $C++; } $out .= "
    " . $riga . "" . $riga . "
    " . $riga . "
    "; return $ret_hidden_check_input.$out; } else if($F[$nome]['tipo'] == "check_kv_div") { if($stileObbligatorio) $STYLE=$F[f_css_sel_select]; $stato = ""; if($F[$nome]['f_check_div_tpl'] != "") $radio_tpl = $F[$nome]['f_check_div_tpl']; else $radio_tpl = $F['f_check_div_tpl']; $VALORI = $F[$nome]['val'][$lang]; // aggiunto Lore 04/04/2018 if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang]; else if(is_array($F[$nome]['sel']) and !$FORM) $valore = $F[$nome]['sel'][$lang]; if($F[$nome]['num_col'] != "") $num_col = $F[$nome]['num_col']; else $num_col = 1; $tot = count($VALORI); $radio_per_colonna = ceil($tot / $num_col); @reset($VALORI); $C = 1; $add_div_class = ""; if($F[$nome]['add_div_class']) $add_div_class = $F[$nome]['add_div_class']; $add_div_riga_class = ""; if($F[$nome]['add_div_riga_class']) $add_div_riga_class = $F[$nome]['add_div_riga_class']; $out .= "
    "; while(list($k, $v)=@each($VALORI)) { if(trim($k) == $F[$nome]['sel'][$lang] && trim($k) != "") $selezionato = TRUE; else $selezionato = FALSE; if(is_array($valore)) if(in_array(trim($k),$valore) or $selezionato) $stato = "checked=\"checked\""; else $stato = ""; $input = ''; $riga = str_replace('#CHECK#',$input,$radio_tpl); $riga = str_replace('#VALORE#',$v,$riga); // Lore - modifica del 10-05-2019 per errore doppia label e label non personalizzabile // $out .= "
    "; $out .= '
    ' . $riga . '
    '; if($C % $radio_per_colonna == 0 && $C != $tot) $out .= '
    '; $C++; } $out .= "
    "; return $ret_hidden_check_input.$out; } //TEXTAREA ################## else if($F[$nome]['tipo'] == "textarea") { if($stileObbligatorio) $STYLE=$F[f_css_sel]; if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang]; else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang]; if(is_array($F[$nome][val])) $valore = $F[$nome][val][$lang]; if($F[$nome]['id'] && substr($AGG, 0, 3) != 'id=' && strpos($AGG, ' id=') === false){ $AGG = 'id="'.indi_htmlentities($F[$nome]['id']).'" '.$AGG; } return $ret_hidden_check_input.''; } //SELECT ################## else if($F[$nome]['tipo'] == "select") { if($stileObbligatorio) $STYLE=$F[f_css_sel_select]; $stato = ""; $VALORI = explode ("|",$F[$nome][val][$lang]); reset($VALORI); while(list($k, $v)=each($VALORI)) { if(trim($v) == $F[$nome][sel][$lang] and trim($v) != "") $selezionato = TRUE; else $selezionato = FALSE; if(trim($v) == trim($valore) or $selezionato) $stato = "selected=\"selected\""; else $stato = ""; $out .= ''; } if($F[$nome]['id'] && substr($AGG, 0, 3) != 'id=' && strpos($AGG, ' id=') === false){ $AGG = 'id="'.indi_htmlentities($F[$nome]['id']).'" '.$AGG; } return $ret_hidden_check_input.''; } //SELECT KV ################## else if($F[$nome]['tipo'] == "select_kv") { if($stileObbligatorio) $STYLE=$F['f_css_sel_select']; $stato = ""; //$VALORI = explode ("|",$F[$nome][val][$lang]); $VALORI = $F[$nome]['val'][$lang]; if(is_array($F[$nome]['default']) and !f_is_real_post()) $valore = $F[$nome]['default'][$lang]; else if(is_array($F[$nome]['def']) and !f_is_real_post()) $valore = $F[$nome]['def'][$lang]; @reset($VALORI); while(list($k, $v)=@each($VALORI)) { if(trim($k) == $valore and trim($k) != "") $selezionato = TRUE; else $selezionato = FALSE; if(trim($k) == trim($valore) or $selezionato) $stato = "selected"; else $stato = ""; $out .= ''; } if($F[$nome]['id'] && substr($AGG, 0, 3) != 'id=' && strpos($AGG, ' id=') === false){ $AGG = 'id="'.indi_htmlentities($F[$nome]['id']).'" '.$AGG; } return $ret_hidden_check_input.''; } // SELECT VALORI MULTIPLI CON SELECT2 else if($F[$nome]['tipo'] == "select2_multiple") { $STYLE = ($stileObbligatorio) ? $F[f_css_sel_select] : ""; $VALORI = $F[$nome][val][$lang]; $PLACEHOLDER = $F[$nome][def][$lang] ? "data-placeholder='" . $F[$nome][def][$lang] . "'" : ""; if(is_array($F[$nome]['sel']) and !$FORM) $valore = $F[$nome]['sel'][$lang]; @reset($VALORI); while(list($k, $v)=@each($VALORI)) { $selezionato = (is_array($valore) AND in_array($k, $valore)) || ($valore AND trim($k) == $valore) ? TRUE : FALSE; $stato = $selezionato ? "selected='SELECTED'" : ""; $out .= ''; } //$DATI['body:$(document).ready(function(){$("#' . $nome . '").select2();});'] = 'VIS,JS'; return $ret_hidden_check_input. ''; } //DATA ################## else if($F[$nome]['tipo'] == "data") { if($stileObbligatorio) $STYLE=$F[f_css_sel_select]; $stato = ""; //$VALORI = explode ("|",$F[$nome][val][$lang]); $VALORI = $F[$nome][val][$lang]; @reset($VALORI); while(list($k, $v)=each($VALORI)) { if(trim($k) == $F[$nome][sel][$lang] and trim($k) != "") $selezionato = TRUE; else $selezionato = FALSE; if(trim($k) == trim($valore) or $selezionato) $stato = "selected"; else $stato = ""; $out .= ''; } return $ret_hidden_check_input.''; } //RADIO ################## else if($F[$nome]['tipo'] == "radio") { if($stileObbligatorio) $STYLE=$F[f_css_sel_select]; $stato = ""; if($F[$nome]['f_radio_tpl'] != "") $radio_tpl = $F[$nome]['f_radio_tpl']; else $radio_tpl = $F['f_radio_tpl']; $VALORI = explode ("|",$F[$nome][val][$lang]); reset($VALORI); while(list($k, $v)=each($VALORI)) { $id = $nome_form . "_option".$k; if((trim($v) == $F[$nome]['sel'][$lang] || trim($v) == $F[$nome]['default'][$lang]) and trim($v) != "") $selezionato = TRUE; else $selezionato = FALSE; if(trim($v) == trim($valore) or $selezionato) $stato = "checked=\"checked\""; else $stato = ""; //$out .= ' '.$v.$F["f_radio_sep"].''; $input = ''; $riga = str_replace('#RADIO#',$input,$radio_tpl); $riga = str_replace('#VALORE#',$v,$riga); //$riga = str_replace('#VALORE#','',$riga); $out .= $riga; } return $ret_hidden_check_input.$out; } //RADIO KV ################## else if($F[$nome]['tipo'] == "radio_kv_cdn") { $erroreObb = false; $return_custom_checkbox_cfg = $F[$nome]['custom_checkbox_cfg'] ? $F[$nome]['custom_checkbox_cfg'] : []; $return_custom_checkbox_cfg['tipo'] = "radio"; $stampa_messaggio_campo = true; if($F[$nome]['obb'] == "SI" && $FORM && !$valore && f_is_real_post()){ if(isset($F[$nome]["stampa_messaggio_errore"]) and !$F[$nome]["stampa_messaggio_errore"]) $stampa_messaggio_campo = false; if($stampa_messaggio_campo) $return_custom_checkbox_cfg["errore"]["messaggio"] = 'Errore, compilare correttamente questo campo'; $erroreObb = true; } if($F[$nome]["val"][$DATI["lang"]]) { $conta_campo = 0; foreach($F[$nome]["val"][$DATI["lang"]] as $k_campo => $v_campo) { $array_entry[$conta_campo]["id"] = $F["f_nome_form"] . '[' . $nome . ']_option' . ($conta_campo+1); $array_entry[$conta_campo]["name"] = $F["f_nome_form"] . '[' . $nome . ']'; $array_entry[$conta_campo]["value"] = $k_campo; $array_entry[$conta_campo]["valore_txt"] = $v_campo; if($F[$nome]['obb'] == "SI") $array_entry[$conta_campo]["obb"] = true; if(( (isset($F[$nome]['default']) && $F[$nome]['default'] == $k_campo) || (isset($F[$nome]['sel']) && $F[$nome]['sel'] == $k_campo) ) && !f_is_real_post()) $valore = $k_campo; if($erroreObb) { $array_entry[$conta_campo]["errore"]["campo_errato"] = true; if($F[$nome]["html_messaggio_errore"] != "") $array_entry[$conta_campo]["errore"]["errore_html"] = $F[$nome]["html_messaggio_errore"]; } if(isset($valore) && $k_campo == $valore) $array_entry[$conta_campo]["checked"] = true; $conta_campo++; } $return_custom_checkbox_cfg["entries"] = $array_entry; } if($F[$nome]['cfg_tipologie']) $return_custom_checkbox_cfg['cfg_tipologie'] = $F[$nome]['cfg_tipologie']; if($F[$nome]["radio_kv_cdn"]["entries"]) { $return_custom_checkbox_cfg["entries"] = array_merge_recursive_replace($return_custom_checkbox_cfg["entries"], $F[$nome]["radio_kv_cdn"]["entries"]); } if($F[$nome]["css"]) $return_custom_checkbox_cfg["input"]["classi_css"] = [$F[$nome]["css"]]; $return_custom_checkbox_cfg["id_div_contenitore"] = $F["f_nome_form"] . "-" . $nome; if(is_array($F[$nome]["radio_kv_cdn"]["elemento_cdn"]["params"])) { $varsBackupCustomCRS = $vars; ob_start(); $vars = indiConvertModFormCBToCustomCRS(["campo_modform" => $F[$nome], "form" => $F, "custom_checkbox_cfg" => $return_custom_checkbox_cfg]); // if($_SERVER['REMOTE_ADDR'] == '192.168.0.77' || $_GET['debugtnx']){ // echo '
    ';
    				// $debugBacktrace = debug_backtrace(); array_unshift($debugBacktrace, array('file'=>__FILE__, 'line'=>__LINE__, 'function'=>'debugTnx')); foreach($debugBacktrace as $debugLine) echo "".str_replace("/tnx/www/html/www/", "", $debugLine['file']).""." ".$debugLine['function']."()
    "; // $printMe = $vars; ob_start(); if(is_object($printMe)||is_array($printMe)) print_r($printMe); else var_dump($printMe); echo htmlentities(ob_get_clean(), ENT_COMPAT|ENT_HTML401|ENT_SUBSTITUTE, 'UTF-8'); // echo '
    '; // die; // } // if($_SERVER['REMOTE_ADDR'] == '192.168.0.77' || $_GET['debugtnx']){ // echo '
    ';
    				// $printMe = $F; ob_start(); if(is_object($printMe)||is_array($printMe)) print_r($printMe); else var_dump($printMe); echo htmlentities(ob_get_clean(), ENT_COMPAT|ENT_HTML401|ENT_SUBSTITUTE, 'UTF-8');
    				// echo '
    '; // } $vars["tipo_input"] = "radio"; $vars["elemento_label"]["padding"] = "0"; $vars["elemento_entries"]["classi_css_aggiuntive"] = ["fields_cont"]; $vars["elemento_entries"]["classe_css"] = "row-radio-entries"; $vars["elemento_entries"]["usa_selettore_classe"] = true; $vars["elemento_entries"]["usa_selettore_custom"] = "#" . $F["f_nome_form"] . " ." . $vars["elemento_entries"]["classe_css"]; if($erroreObb) $vars["elemento_entries"]["errore"]["attiva"] = true; $vars = array_merge_recursive_replace($vars,$F[$nome]["radio_kv_cdn"]["elemento_cdn"]["params"]); include($DATI["cdn_basepath"]."_pagine/elementi/customCRS/customCRS.inc.php"); return ob_get_clean(); $vars = $varsBackupCustomCRS; } else { return $ret_hidden_check_input.custom_checkbox_radio($return_custom_checkbox_cfg); } } else if($F[$nome]['tipo'] == "radio_kv") { if($stileObbligatorio) $STYLE=$F[f_css_sel_select]; $stato = ""; if($F[$nome]['f_radio_tpl'] != "") $radio_tpl = $F[$nome]['f_radio_tpl']; else $radio_tpl = $F['f_radio_tpl']; // Aggiunto Lore 22/10/2020 if($F[$nome]['default'] && !$FORM) $valore = $F[$nome]['default'][$lang]; else if($F[$nome]['sel'] && !$FORM) $valore = $F[$nome]['sel'][$lang]; $VALORI = $F[$nome][val][$lang]; @reset($VALORI); $i = 0; while(list($k, $v)=@each($VALORI)) { // Modifica Lore 22/10/2020 if(trim($k) == $valore and trim($k) != "") $selezionato = TRUE; else $selezionato = FALSE; if(trim($k) == trim($valore) or $selezionato) $stato = "checked=\"checked\""; else $stato = ""; $id = $nome_form . "_option".$i++; $input = ''; $riga = str_replace('#RADIO#',$input,$radio_tpl); $riga = str_replace('#VALORE#',$v,$riga); //$riga = str_replace('#VALORE#','',$riga); $out .= $riga; } return $ret_hidden_check_input.$out; } //RADIO KV DIV ################## else if($F[$nome]['tipo'] == "radio_kv_div") { if($stileObbligatorio) $STYLE=$F[f_css_sel_select]; $stato = ""; if($F[$nome]['f_radio_div_tpl'] != "") $radio_tpl = $F[$nome]['f_radio_div_tpl']; else $radio_tpl = $F['f_radio_div_tpl']; $VALORI = $F[$nome][val][$lang]; if($F[$nome]['num_col'] != "") $num_col = $F[$nome]['num_col']; else $num_col = 1; $tot = count($VALORI); $radio_per_colonna = ceil($tot / $num_col); $C = 1; @reset($VALORI); $i = 0; $out .= "
    "; while(list($k, $v)=@each($VALORI)) { if(trim($k) == $F[$nome][sel][$lang] and trim($k) != "") $selezionato = TRUE; else $selezionato = FALSE; if(trim($k) == trim($valore) or $selezionato) $stato = "checked=\"checked\""; else $stato = ""; $id = $nome_form . "_option".$i++; $input = ''; $riga = str_replace('#RADIO#',$input,$radio_tpl); $riga = str_replace('#VALORE#',$v,$riga); // Lore - modifica del 10-05-2019 per errore doppia label e label non personalizzabile // $out .= "
    "; $out .= '
    ' . $riga . '
    '; if($C % $radio_per_colonna == 0 && $C != $tot) $out .= '
    '; $C++; } $out .= "
    "; return $ret_hidden_check_input.$out; } //CALENDAR2 ################## else if($F[$nome]['tipo'] == "calendar2") { $DATI["dir:_files/calendar_langs"] = "COPY"; $DATI["dir:_files/calendar_skins"] = "COPY"; $DATI["file:_files/calendar.js"] = "COPY,VIS"; $DATI["file:_files/calendar-setup.js"] = "COPY,VIS"; $DATI["file:_files/calendar_skins/aqua.css"] = "VIS"; $DATI["file:_files/calendar_skins/calendar.png"] = "COPY"; $DATI["file:_files/calendar_langs/calendar-$DATI[lang2].js"] = "VIS"; if($stileObbligatorio) $STYLE=$F[f_css_sel]; //controllo campo default if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang]; else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang]; if(is_array($F[$nome][val]) and !$FORM) $valore = $F[$nome][val][$lang]; if($F[$nome]['update_on_close']) $update_on_close = ', onClose : function(){ document.getElementById("'.$F[$nome]['update_on_close'].'_calendar").value = document.getElementById("'.$nome.'_calendar").value; this.hide(); }'; else $update_on_close = ''; return $ret_hidden_check_input.' '; } else if($F[$nome]['tipo'] == "calendar3") { $cssCal = $F[$nome]['calendar_css'] ? $F[$nome]['calendar_css'] : "aqua"; $DATI["dir:_files/calendar_langs"] = "COPY"; $DATI["dir:_files/calendar_skins"] = "COPY"; $DATI["file:_files/calendar.js"] = "COPY,VIS"; $DATI["file:_files/calendar-setup.js"] = "COPY,VIS"; $DATI["file:_files/calendar_skins/$cssCal.css"] = "VIS"; $DATI["file:_files/calendar_skins/calendar.png"] = "COPY"; $DATI["file:_files/calendar_langs/calendar-$DATI[lang2].js"] = "VIS"; if($stileObbligatorio) $STYLE=$F[f_css_sel]; //controllo campo default if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang]; else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang]; if(is_array($F[$nome][val]) and !$FORM) $valore = $F[$nome][val][$lang]; if($F[$nome]['f_calendar_dis_date'] != "") $dis_date = $F[$nome]['f_calendar_dis_date']; else $dis_date = $F['f_calendar_dis_date']; if($dis_date == "SI"){ $disableFunct = ", disableFunc: function(date) { var d = new Date(); var time = d.getTime() - Date.DAY; if (date.getTime() < time) { return true; } else { return false; } }"; } else { $disableFunct = ""; } if($F[$nome]['update_on_close']) $update_on_close = ', onClose : function(){ document.getElementById("'.$F[$nome]['update_on_close'].'_calendar").value = document.getElementById("'.$nome.'_calendar").value; this.hide(); }'; else $update_on_close = ''; return $ret_hidden_check_input.' '; } else if($F[$nome]['tipo'] == "calendar4") { $cssCal = $F[$nome]['calendar_css'] ? $F[$nome]['calendar_css'] : "win2k/win2k"; $DATI["dir:_files/calendar/js"] = "COPY"; $DATI["dir:_files/calendar/css"] = "COPY"; $DATI["file:_files/calendar/js/jscal2.js"] = "COPY,VIS"; $DATI["file:_files/calendar/js/lang/$DATI[lang2].js"] = "COPY,VIS"; $DATI["file:_files/calendar/css/jscal2.css"] = "VIS"; $DATI["file:_files/calendar/css/border-radius.css"] = "VIS"; $DATI["file:_files/calendar/css/$cssCal.css"] = "VIS"; if($stileObbligatorio) $STYLE=$F[f_css_sel]; //controllo campo default if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang]; else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang]; if(is_array($F[$nome][val]) and !$FORM) $valore = $F[$nome][val][$lang]; if($F[$nome]['f_calendar_dis_date'] != "") $dis_date = $F[$nome]['f_calendar_dis_date']; else $dis_date = $F['f_calendar_dis_date']; if($dis_date == "SI"){ $disableFunct = ", disabled: function(date) { var d = new Date(); var time = d.getTime() - Date.DAY; if (date.getTime() < time) { return true; } else { return false; } }"; } else { $disableFunct = ""; } if($F[$nome]['update']) $update_on_close = 'document.getElementById("'.$F[$nome]['update'].'_calendar").value = document.getElementById("'.$nome.'_calendar").value;'; return $ret_hidden_check_input.' '; } //CALENDAR ################## else if($F[$nome]['tipo'] == "calendar") { $DATI["dir:_files/calendar_langs"] = "COPY"; $DATI["dir:_files/calendar_skins"] = "COPY"; $DATI["file:_files/calendar.js"] = "COPY,VIS"; $DATI["file:_files/calendar-setup.js"] = "COPY,VIS"; $DATI["file:_files/calendar_skins/aqua.css"] = "VIS"; $DATI["file:_files/calendar_skins/calendar.png"] = "COPY"; $DATI["file:_files/calendar_langs/calendar-$DATI[lang2].js"] = "VIS"; if($stileObbligatorio) $STYLE=$F[f_css_sel]; //controllo campo default if(is_array($F[$nome]['default']) and !$FORM) $valore = $F[$nome]['default'][$lang]; else if(is_array($F[$nome][def]) and !$FORM) $valore = $F[$nome][def][$lang]; if(is_array($F[$nome][val]) and !$FORM) $valore = $F[$nome][val][$lang]; if($F[$nome]['update_on_close']) $update_on_close = ', onClose : function(){ document.getElementById("'.$F[$nome]['update_on_close'].'_calendar").value = document.getElementById("'.$nome.'_calendar").value; this.hide(); }'; else $update_on_close = ''; return $ret_hidden_check_input.' '; } else if($F[$nome]['tipo'] == "recaptcha") { if($stileObbligatorio) $STYLE=$F[f_css_sel]; if($F[$nome]['tipo2'] == "invisible"){ return $ret_hidden_check_input.inserisciRecaptcha($F[$nome]['submit-id']); }else{ return $ret_hidden_check_input.'
    '.inserisciRecaptcha().'
    '; } } // else{ // ne arrivano parecchi... // trigger_error("MOD_FORM chiamata f($nome): tipo non trovato (o $F[$nome] non definito)"); // } } function verificaRecaptcha($invisible = true){ if(!$_POST['g-recaptcha-response']) return false; else{ $context = stream_context_create(array( 'http' => array( 'method' => 'POST', 'content' => http_build_query(array( 'secret' => $invisible ? $GLOBALS['DATI']["f_recaptcha_secret_invisible"] : $GLOBALS['DATI']["f_recaptcha_secret"], 'response' => stripslashes($_POST['g-recaptcha-response']), 'remoteip' => $_SERVER['REMOTE_ADDR'] )) ) )); $result = json_decode(file_get_contents("https://www.google.com/recaptcha/api/siteverify", false, $context)); if(!$result->success){ if(array_intersect(array("missing-input-secret", "invalid-input-secret"), $result->{'error-codes'})){ trigger_error("Errore con le chiavi recaptcha, le nostre sono su https://www.google.com/recaptcha/admin/site/338906860 oppure https://www.google.com/recaptcha/admin/site/338907004(se il dominio non era inserito non caricava nemmeno la casella)"); } return false; } else $GLOBALS['indiControlloAntispamInserito_verificaRecaptcha'] = true; } return true; } function inserisciRecaptcha($invisibleSubmitId = null, $inline = false){ global $DATI; // ricordati di aggiungere il dominio su: // https://www.google.com/recaptcha/admin/site/338907004 (invisibile) // oppure // https://www.google.com/recaptcha/admin/site/338906860 (visibile) if($invisibleSubmitId){ $DATI["file:https://www.recaptcha.net/recaptcha/api.js?onload=onloadCallback&render=explicit"] = "JS,FORCE,VIS"; return ""; } else{ $DATI["file:https://www.recaptcha.net/recaptcha/api.js"] = "JS,FORCE,VIS"; return '
    '; } } //DEPRECATA function f_submit() { global $F,$DATI; $lang = $DATI["lang"]; return encode($F['f_submit'][$lang]); } function f_merge($nome) { global $F; if(is_array($F[$nome])) { if(isset($F[$nome]["f_duepunti"])) $F["f_duepunti"] = $F[$nome]["f_duepunti"]; if(isset($F[$nome]["f_txt_t"])) $F["f_txt_t"] = $F[$nome]["f_txt_t"]; if(isset($F[$nome]["f_txt_t_gruppo"])) $F["f_txt_t_gruppo"] = $F[$nome]["f_txt_t"]; } } //stampa il nome function fn($nome,$AGG=NULL) { global $CONF; //devo rinominare fn perchè non si può piu usare in php 8 $dbt = debug_backtrace(); if ($dbt[1]["function"] != "flabel") { $dbg = "https://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]\n"; foreach($dbt as $v) { $dbg .= $v["file"] .":". $v["line"] . " > " . $v["function"] . "\n"; } //if($CONF['dove_sono'] == 'loc'){ //trigger_error("'fn' diventerà keyword di PHP, utilizza 'flabel' per favore, grazie, cecca"); //} } global $F, $DATI; if($F["$nome"] == "") return NULL; //merge f_merge($nome); $lang = $DATI["lang"]; //if($F[f_txt_stili] == "SI") $out = ''.$F[$nome][$lang].''; if($F[f_err] != "" && $F[$nome]["obb_gruppo"] != ""){ $out = str_replace("#ASTERISCO#",$F['f_err'],$F['f_txt_t_gruppo']); }elseif($F[f_err] != "" && $F["$nome"]["obb"] == "SI"){ $out = str_replace("#ASTERISCO#",$F['f_err'],$F['f_txt_t']); } else $out = str_replace("#ASTERISCO#","",$F['f_txt_t']); //template per il testo $out = str_replace("#NOME#",$F[$nome][$lang],$out); $out = str_replace("#NOME_FORM#",$F['f_nome_form'],$out); $out = str_replace("#DUEPUNTI#",$F['f_duepunti'],$out); return encode($out); } function f_crea_form($nome_form=NULL) { //ciclo principale } function f_errori($nome_form=NULL) { global $F,$FORM,$DATI; if(is_array($F['f_errori'])) { $lang = $DATI['lang']; //creo errori reset($F['f_errori']); while(list($k, $v)=@each($F['f_errori'])) { //fix privacy if($k === "privacy" and $v) $v = strip_tags($v); $errori .= str_replace("#ERRORE#",$v,$F['f_erro_temp'][$lang]); } reset($F['f_errori']); while(list($k, $v)=@each($F['f_errori'])) { $errori2 .= "[name*='$k'],"; } $errori2 = indi_trim_stringa($errori2,","); $out = str_replace("#ERRORI#",$F['f_erri_temp'][$lang],$F['f_txt_errore'][$lang]); $out = str_replace("#ERRORI#",$errori,$out); $out = str_replace("#ERRORI2#",$errori2,$out); $out = str_replace("#NOME_FORM#",$F['f_nome_form'],$out); return encode($out); } else return FALSE; //ciclo principale } function f_messaggio() { global $F,$FORM,$DATI,$lang; //DEFAULT INVIO I CAMPI CON QUELLO CHE APPARE NEL $_POST ($FORM) if($F['f_invio_tipo'] == "DA_FORM") { @reset($FORM); while (list ($k, $v) = each ($FORM)) { if($v != "") { //privacy bugfix if($k == "privacy" and $v) $F[$k][$lang] = strip_tags($F[$k][$lang]); //controllo se l' invio e' disabilitato (FLAG invio) if($F[$k][invio] != "NO") { //TEMPLATE mi prendo la configurazione del campo senno' quella gobale if($F[$k]['f_form_tpl']) $f_form_tpl = $F[$k]['f_form_tpl']; else $f_form_tpl = $F['f_form_tpl']; //se il tipo e select_kv if($F[$k][tipo] == "select_kv" OR $F[$k][tipo] == "select_multiple") { //costruisco risposta $stringa1 = ""; $stringa1 = str_replace("#NCAMPO#",indi_br2nl($F[$k][$lang]),$f_form_tpl); $stringa .= str_replace("#VCAMPO#",$F[$k]['val'][$lang][$v],$stringa1); //$stringa .= "- ".$F[$k][$lang].": $v \n\n"; } else if($F[$k][tipo] == "check_kv" OR $F[$k][tipo] == "check_kv_div" OR $F[$k][tipo] == "checkbox_kv_cdn") {//fatto carlo per cruisersinitaly $stringa1 = ""; $stringa1 = str_replace("#NCAMPO#",indi_br2nl($F[$k][$lang]),$f_form_tpl); $valckv = array(); foreach($F[$k]['val'][$lang] as $kk=>$vv) if(isset($FORM[$k][$kk])) $valckv[] = $vv; $stringa .= str_replace("#VCAMPO#",implode(", ", $valckv),$stringa1); } else if($F[$k][tipo] == "file2") {//fatto lorenzo 01/02/2021 $stringa1 = ""; $stringa1 = str_replace("#NCAMPO#",indi_br2nl($F[$k][$lang]),$f_form_tpl); $stringa .= str_replace("#VCAMPO#",$_FILES['file_'.$k]['name'],$stringa1); } else{ //costruisco risposta $stringa1 = ""; $stringa1 = str_replace("#NCAMPO#",indi_br2nl($F[$k][$lang]),$f_form_tpl); $stringa .= str_replace("#VCAMPO#",$v,$stringa1); //$stringa .= "- ".$F[$k][$lang].": $v \n\n"; } } } } } //Ordine preso dal file di CONFIGURAZIONE if($F['f_invio_tipo'] == "DA_CONF") { reset($F); while (list ($k, $v) = each ($F)) { //controllo se l' invio e' disabilitato (FLAG invio) if((!is_array($F[$k]) || $F[$k][invio] != "NO") and stristr($k,"f_") == FALSE) { //TEMPLATE mi prendo la configurazione del campo senno' quella gobale if($F[$k]['f_form_tpl']) $f_form_tpl = $F[$k]['f_form_tpl']; else $f_form_tpl = $F['f_form_tpl']; //costruisco risposta $stringa1 = ""; $stringa1 = str_replace("#NCAMPO#",$F[$k][$lang],$f_form_tpl); $stringa .= str_replace("#VCAMPO#",$FORM[$k],$stringa1); } } } //sistemo messaggio $messaggio = str_replace("#SITO#",$F['f_nome_sito'],$F['f_testo'][$lang]); $messaggio = str_replace("#MESSAGGIO#",$riga_prima.$stringa.$riga_dopo,$messaggio); $messaggio = str_replace("#NOME_FORM#",$F['f_nome_form'],$messaggio); $messaggio = str_replace("#NOME#",$F['f_nomecognome'],$messaggio); //cecca 13/04/2016 - aggiungo eventuali allegati if ($_FILES && $F["f_allega_files"]) { foreach($_FILES as $file){ $messaggio .= "- File allegato: " . $file['name']; } } return $messaggio; } function f_resoconto() { global $F,$FORM,$DATI,$lang; //RESOCONTO //creo output resoconto reset($FORM); while(list($k, $v)=@each($FORM)) { if($F[$k]) { if($F[$k]['risposta'] != "NO") { if($F[$k]['tipo'] == "select_kv" OR $F[$k]['tipo'] == "select_multiple") { $v = $F[$k]['val'][$lang][$v]; } else if($F[$k][tipo] == "check_kv" OR $F[$k][tipo] == "check_kv_div" OR $F[$k][tipo] == "checkbox_kv_cdn") {//fatto carlo per cruisersinitaly $valckv = array(); foreach($F[$k]['val'][$lang] as $kk=>$vv) if(isset($FORM[$k][$kk])) $valckv[] = $vv; $v = implode(", ", $valckv); } if($F[$k][tipo] == "file2") $v = $_FILES["file_".$k]['name']; //fix privacy if($k == "privacy") $F[$k][$lang] = strip_tags($F[$k][$lang]); $dati_tmp = nl2br(str_replace("#DATO#",$v,$F['f_dato_temp'][$lang])); $campo = $F[$k][$lang]; $dati .= str_replace("#CAMPO#",$campo,$dati_tmp); } } } //TEMPLATE VARI RISPOSTA $out = str_replace("#DATI#",$dati,$F['f_dati_temp'][$lang]); $out = str_replace("#DATI#",$out,$F['f_txt_invio'][$lang]); $out = str_replace("#NOME#",$F['f_nomecognome'],$out); $out = str_replace("#NOME_FORM#",$F['f_nome_form'],$out); $out = indi_tpl($out,$GLOBALS['DATI'],0); $out = indi_tpl($out,$FORM,0,"Q"); return $out; } //creata per semplificare il caso di invio al cliente (imposta automaticamente from/to senza doverli settare manualmente) function f_invio_visitatore($forzaReplyTo = ''){ /* $forzaReplyTo può servire nel caso del form di un portale per ottenere: - mittente: email portale (necessariamente) - destinatario: esercente / struttura - reply-to: visitatore si ottiene mettendo l'esercente / struttura come "compilatore del form" e chiamando f_invio_visitatore col parametro: $F['f_email_form'] = $struttura['email']; f_invio_visitatore($FORM['email']);//oppure f_invio_visitatore(array($FORM['email'], $FORM['nome_cognome'])); */ global $F, $DATI; $invioStandard = array( 'f_email_form' => $F['f_email_form'],//c'è la mail del visitatore 'f_nomecognome' => $F['f_nomecognome'],//c'è il nome del visitatore 'f_email_dest' => $F['f_email_dest'],//c'è la mail del proprietario del sito (@dominodelsito) 'f_force_from' => $F['f_force_from'],//di normale a false 'f_invio_agg' => $F['f_invio_agg'],//dati tracciatura utente (con controllo email) 'f_invio_agg_force' => $F['f_invio_agg_force'],//dati tracciatura utente (a prescindere) ); $forzaReplyToNome = ''; $forzaReplyToEmail = ''; if($forzaReplyTo){ if(!is_array($forzaReplyTo)) $forzaReplyTo = array($forzaReplyTo); $forzaReplyToEmail = $forzaReplyTo[0]; $forzaReplyToNome = $forzaReplyTo[1]; } $F['f_email_dest']= $invioStandard["f_email_form"];//questa mail va al visitatore $F['f_email_form'] = $forzaReplyToEmail ? $forzaReplyToEmail : $invioStandard["f_email_dest"];//il mittente è il proprietario del sito $F['f_nomecognome'] = $forzaReplyToNome ? $forzaReplyToNome : $DATI["nome_sito"];//il mittente è il proprietario del sito $F['f_force_from'] = $invioStandard["f_email_dest"];//devo forzare il from atrimenti viene usato il destinatario $F['f_invio_agg'] = "NO";//mai al visitatore $F['f_invio_agg_force'] = "NO";//mai al visitatore if($F['f_testo_visitatore']) $F['f_testo'] = $F['f_testo_visitatore']; $return = f_invio(); //ripristino tutto allo standard $F = array_merge($F, $invioStandard); return $return; } function f_invio($nome_form=NULL) { global $_DB; //sistemo variabili //inizializzo form //se non ci sono errori ed e' stato premuto il pulsante invia, mando conferma ed e-mail global $F,$FORM,$DATI,$lang; //controllo antispam $isSpam = !indiControlloAntispamCheckInvio($F['f_nome_form']); if ($isSpam) { $ARR["email_debug"] = "mceccarelli@demo.tnx.it"; } //in ogni caso se ci sono errori torna FALSE if ((!is_array($F['f_errori']) and $FORM and $_REQUEST['f_nosubmit'] != 1) || $isSpam) { //cecca, se spam la invio comunque per debug a me // if(!$GLOBALS['indiControlloAntispamInserito']) trigger_error_to_email("carlo@tnx.it", "Questo form non ha una protezione antispam"); //mando e-mail //sistemo oggetto $F['f_oggetto'][$lang] = str_replace("#SITO#",$F['f_nome_sito'],$F['f_oggetto'][$lang]); $F['f_oggetto'][$lang] = str_replace("#NOME#",$F['f_nomecognome'],$F['f_oggetto'][$lang]); $messaggio = f_messaggio(); //intorno al messaggio //$riga_prima .= "\n-------------------------- ".$F[f_testo_msg][$lang]." --------------------------\n"; //$riga_dopo .= "\n---------------------------------------------------------------"; //info prima e dopo //$messaggio = $F[f_msg_prima].$messaggio.$F[f_msg_dopo]; $messaggio_agg = stat_dati_aggiuntivi(); //Dati aggiuntivi X if($F['f_invio_agg_force'] == "SI" or ($F['f_invio_agg'] == "SI" and ($F['f_email_dest'] == $DATI['email'] or $F['f_email_dest'] == $DATI['f_email_cc']))) $messaggio_agg2 = $messaggio_agg; else $messaggio_agg2 = ""; $fromName = ''; $indirizzoRisposte = $F['f_email_form'];//indirizzo email inserito dall'utente if($F['f_nomecognome'] != ""){//se non c'è nomecognome metto solo email $fromName = $F['f_nomecognome']; } else { $fromName = $F['f_email_form'];//meglio che rimanga vuoto SpamAssassin se trova una mail nel from da' 2.72 (regola PDS_FROM_2_EMAILS) } if ($F["f_use_reply_to"]){ //imposto come from l'email destinatario o quella forzata $fromEmail = $F['f_email_dest']; if ($F['f_force_from']) { $fromEmail = $F['f_force_from']; } //costruisco f_from più sotto } else { $fromEmail = $indirizzoRisposte; $F['f_from'] = 'From: '.indiEncodeQuoteMailHeader($fromName, $DATI['email_encode'], true).' <'.indiEncodeQuoteMailHeader($fromEmail, $DATI['email_encode']).'>'."\r\n"; } if(/*$DATI['dove_sono'] == 'rem' && perchè non attivarlo? */$errore = mittenteProblematico($fromEmail)){ // if(!$DATI['ignoraSegnalazioniSostituzioneMittente']) trigger_error("Mittente problematico $fromEmail, sosituisco con $DATI[email_from_generico] (".$errore.")"); if(!$F["f_use_reply_to"]){ $F["f_use_reply_to"] = true; $indirizzoRisposte = $fromEmail; } //else c'è già un reply-to customizzato, lo lascio e cambio solo il from $fromEmail = $DATI['email_from_generico']; } if($F["f_use_reply_to"]){ $F['f_from'] = //spammassassin ha la regola FROM_WEBSITE che applica 2.50 se trova un sito nel nome from (su 4.5 per essere considerato spam) 'From: '.indiEncodeQuoteMailHeader($fromName/*.' (via '.$DATI['dominio_sito'].')'*/, $DATI['email_encode'], true).' <'.indiEncodeQuoteMailHeader($fromEmail, $DATI['email_encode']).'>'."\r\n". 'Reply-to: '.indiEncodeQuoteMailHeader($fromName, $DATI['email_encode'], true).' <'.indiEncodeQuoteMailHeader($indirizzoRisposte, $DATI['email_encode']).'>'."\r\n". 'Sender: '.$fromEmail."\r\n";//non strettamente necessario, vedi http://stackoverflow.com/a/14555043/2006698 } //$F['f_from'] = 'From: '.$F['f_nomecognome'].' <'.$F['f_email_form'].'>'."\n"; //header e-mail cc di indi per uso nei sito if($F['f_email_cc'] != "") { $CC = $F['f_email_cc']; $CC_header = "Cc: ".$F['f_email_cc']."\r\n"; } $BCC = array(); if($F['f_email_bcc']) $BCC[] = $F['f_email_bcc']; if($F['f_email_indi'] && $GLOBALS['CONF']['dove_sono'] != 'loc') $BCC[] = $F['f_email_indi']; $BCC = implode(", ", $BCC); $BCC_header = $BCC ? ("Bcc: ".$BCC."\r\n") : ''; //SOSTITUZIONE TEMPLATE //sistemo campi lingua in automatico $messaggio = indi_tpl($messaggio,$GLOBALS["DATI"],0); $messaggio = indi_tpl($messaggio,$GLOBALS["TXT"],0,"#"); $messaggio = indi_tpl($messaggio,$GLOBALS["DATI"],0); $messaggio = indi_tpl($messaggio,$GLOBALS["TXT"],0,"#"); $messaggio = indi_tpl($messaggio,$FORM,0,"Q"); $F['f_oggetto'][$lang] = indi_tpl($F['f_oggetto'][$lang],$GLOBALS["DATI"],0); $F['f_oggetto'][$lang] = indi_tpl($F['f_oggetto'][$lang],$GLOBALS["TXT"],0,"#"); $F['f_oggetto'][$lang] = indi_tpl($F['f_oggetto'][$lang],$GLOBALS["DATI"],0); $F['f_oggetto'][$lang] = indi_tpl($F['f_oggetto'][$lang],$GLOBALS["TXT"],0,"#"); $F['f_oggetto'][$lang]= indi_tpl($F['f_oggetto'][$lang],$FORM,0,"Q"); //altri header if($F['f_email_html'] == "SI") { $headers .= "MIME-Version: 1.0\n"; if (!$F["f_allega_files"]) { $headers .= "Content-type: text/html; charset=$DATI[email_encode]\n"; $headers .= "Content-Transfer-Encoding: 8bit\n"; } } else { $headers .= "MIME-Version: 1.0\n"; if (!$F["f_allega_files"]) { $headers .= "Content-Type: text/plain; charset=$DATI[email_encode]\n"; } //$headers .= "Content-Transfer-Encoding: 8bit\n"; } $headers .= $F['f_from'];//"utili" solo per f_return_only dopo passaggio a indi_email / phpmailer6 //cecca 23/03/2016 per return path giusto e passare spf da gmail per esempio //per info da base.inc.php //come standard hack è uguale a SI //$CONF['email_hack_sendmail'] = 'SI'; //imposta come mittente di ritorno della mail l' indirizzo from_email automatico, ovvero quello del sito //$CONF['email_return'] = 'postmaster@tnx.it'; //e-mail di ritorno per tutte le mail inviate con email_hack_sendmail=NO //return path if($DATI["dove_sono"] == "rem") { if($DATI['email_hack_sendmail'] == "SI") { //lo standard, vedi sopra //$sendmail_path = "-F $F[f_email_form] -f $F[f_email_form]"; //cecca, prendeva l'email di chi compilava il form invece di mettere l'email del proprietario del sito //$sendmail_path = "-F $F[f_email_dest] -f $F[f_email_dest]"; $sendmail_path = "-F $fromEmail -f $fromEmail"; //cecca, vedi sopra dove controlla f_reply_to, per forzare il mittente (problema bellatoscana mail ad agente e cc a bellatoscana) $ARR["from_email"] = $fromEmail;//aggiornamento carlo/ceccca dopo phpmailer6 dic 2020 } else { $sendmail_path = "-F $DATI[email_return] -f $DATI[email_return]"; $ARR["from_email"] = $DATI['email_return'];//aggiornamento carlo/ceccca dopo phpmailer6 dic 2020 } } //con indi_email non serve più // $oggetto = indiEncodeQuoteMailHeader($F['f_oggetto'][$lang], $DATI['email_encode']); $oggetto = $F['f_oggetto'][$lang]; //HTML if($F['f_email_html'] == "SI") { $messaggio_html = nl2br($messaggio.$messaggio_agg2); $messaggio = " $messaggio_html "; } else { $messaggio = $messaggio.$messaggio_agg2; } //SPEDIZIONE E-MAIL /* //cecca 13/04/2016 provo invio tramite indi_email per allegati if (!$F["f_allega_files"]) { //e-mail principale del form con eventuale CC if ($F['f_email_dest'] != "") { if($DATI["email_log"] == "SI") { indi_log_file("EMAIL \"$oggetto\" - from: $fromEmail -> to:$F[f_email_dest] cc: $F[f_email_cc]"); } if($F['f_return_only']) { return array($F['f_email_dest'], $oggetto,$messaggio,$headers.$CC_header.$BCC_header, $sendmail_path);//carlo: la uso per gli scammer su mtp } else { indi_email_wrapper($F['f_email_dest'], $oggetto, $messaggio, $headers.$CC_header.$BCC_header, $sendmail_path); } } //e-mail di copia ed e-mail di INDI //CARLO 8/2/2018: adesso usa bcc per vedere vero destinatario e cc //if($F['f_email_indi'] != "" and $F['f_email_dest'] != "" and $GLOBALS['CONF']['dove_sono'] != 'loc') { // indi_email_wrapper($F['f_email_indi'], "INDI:FORM:".$oggetto,$messaggio,$headers, $sendmail_path); //} //copia webmaster disabilitata c'e' Account condiviso } else { $ARR["to"] = $F['f_email_dest']; if($F['f_email_indi'] != "" and $F['f_email_dest'] != "" and $GLOBALS['CONF']['dove_sono'] != 'loc') { $ARR["email_copia"] = $F['f_email_indi']; } //per forzare di non inviare l'email "COPIA:" o cambiare il destinatario dell'email copia if ($F['f_email_copia']) { $ARR["email_copia"] = $F['f_email_copia']; } $ARR["email_allegati_post_files"] = $_FILES; $ARR["oggetto"] = $oggetto; $ARR["messaggio"] = $messaggio; $ARR["headers"] = $headers; // $ARR["sendmail_path"] = $sendmail_path;//aggiornamento carlo/ceccca dopo phpmailer6 dic 2020 $ARR["email_html"] = $F['f_email_html'];//aggiornamento carlo/ceccca dopo phpmailer6 dic 2020 indi_email($ARR); } */ //cecca 14/05/2021 unifico invio email passando da indi_email if ($F['f_email_dest'] != "") { if($DATI["email_log"] == "SI") { indi_log_file("EMAIL \"$oggetto\" - from: $fromEmail -> to:$F[f_email_dest] cc: $F[f_email_cc]"); } if($F['f_return_only']) { return array($F['f_email_dest'], $oggetto,$messaggio,$headers.$CC_header.$BCC_header, $sendmail_path);//carlo: la uso per gli scammer su mtp } $ARR["to"] = $F['f_email_dest']; if($F['f_email_indi'] != "" and $F['f_email_dest'] != "" and $GLOBALS['CONF']['dove_sono'] != 'loc') { $ARR["email_copia"] = $F['f_email_indi']; } //per forzare di non inviare l'email "COPIA:" o cambiare il destinatario dell'email copia if ($F['f_email_copia']) { $ARR["email_copia"] = $F['f_email_copia']; } if ($F["f_allega_files"] && $_FILES) { $listaFiles = []; foreach($_FILES as $kFile => $infoFile) if($infoFile["tmp_name"]) $listaFiles[$kFile] = $infoFile; if($listaFiles) $ARR["email_allegati_post_files"] = $listaFiles; } $ARR["oggetto"] = $oggetto; $ARR["messaggio"] = $messaggio; // $ARR["headers"] = $headers;//non supportati con phpmailer6 $ARR["email_replyto"] = $indirizzoRisposte; $ARR["email_replyto_name"] = $fromName; // $ARR["sendmail_path"] = $sendmail_path; $ARR["email_html"] = $F['f_email_html']; if($CC) $ARR['email_cc'] = $CC; if($BCC) $ARR['email_bcc'] = $BCC; if ($isSpam) { $ARR["oggetto"] = "[indiControlloAntispamCheckInvio:SPAM] " . $oggetto; } //27/10/2025 cecca, aggiungo log per trovare soluzione a questi invii da bot $full_url = ((!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://") . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $dblogform = ["sito"=>$DATI["nome_sito"] , "url"=>$full_url , "mitt"=>$ARR["from_email"] , "reply_to"=>$ARR["email_replyto"] , "dest"=>$ARR["to"] , "dest_cc"=>$ARR["email_cc"] , "dest_bcc"=>$ARR["email_bcc"] , "oggetto"=>$ARR["oggetto"] , "messaggio"=>$ARR["messaggio"] , "altro"=>print_r($ARR, true) , "remote_ip"=>$_SERVER["REMOTE_ADDR"] , "ua"=>$_SERVER["HTTP_USER_AGENT"] ]; if($_DB) $_DB->insert("indi_admin.form_log", $dblogform); indi_email($ARR); } if ($isSpam) return false; $out = encode(f_resoconto()); //d($messaggio,"MESSAGGIO"); //d($out,"RISPOSTA"); return $out; } else { return FALSE; } } //header function f_head($nome_form=NULL) { global $F,$DATI; $lang = $DATI['lang']; $out = str_replace("#NOME_FORM#",$F['f_nome_form'],$F['f_txt_head'][$lang]); return $out; } function f_form() { global $F,$FORM,$DATI; f_init(); //DEBUG //d($F,"CONFIGURAZIONE"); //d($FORM,"FORM"); //se non ci sono errori e if(!is_array($F['f_errori']) and $FORM) { return TRUE; } else return FALSE; } function f_auto() { global $F,$DATI; $lang = $DATI['lang']; f_init(); //print "aa"; //creo la form if(f_invio() == FALSE) { reset($F); $out_table = $F['f_table_t'][$lang]; while(list($k, $v)=@each($F)) { if(is_array($v) and $v['tipo']) { if($F[$k]['tipo'] != "hidden") { $form_tmp = str_replace("#NOME_CAMPO#",fn($k),$F['f_table_riga_t'][$lang]); $form_tmp = str_replace("#CAMPO#",f($k),$form_tmp); $form .= $form_tmp; } else { $out_hidden_tmp .= f($k); } } } $out_table = str_replace("#HEADER#",f_head(),$out_table); $out_table = str_replace("#ERRORI#",f_errori(),$out_table); $out_table = str_replace("#SUBMIT#",$F['f_submit'][$lang],$out_table); $out_table = str_replace("#FORM#",$form,$out_table); $out_table = str_replace("#HIDDEN#",$out_hidden_tmp,$out_table); $out_table = str_replace("#NOME_FORM#",$F['f_nome_form'],$out_table); return $out_table; } else { $out = str_replace("#CONFERMA#",f_invio(),$F['f_table_risp_t'][$lang]); $out = str_replace("#NOME_FORM#",$F['f_nome_form'],$out); return $out; } } // Lore 8/10/20 alias per problemi validazione codice su vscode. fn è diventata una funzione riservata di php7. function flabel($nome,$AGG=NULL) { return fn($nome,$AGG); } function fControllaCampoNonCompilato($obb){ global $DATI, $F; if($DATI["indi_subversion"] > 5) { if($obb == "SI" and $F['f_err_class'] and f_is_real_post()) return true; } else { if($obb == "SI" and $F['f_err_class']) return true; } return false; } ?>