"; unset($ASS3); //riciclo aggiungendo le parole aggiuntive while(list($k1, $v1)=@each($MIX)) { //array parole linea $MIXP = ind_scomponi_gen($v1,"|"); while(list($k2, $v2)=each($MIXP)) { //print "X".$v2; $parola_pulita[] = $v2; $p1 = str_replace($v2,ind_decidi($KKK3[$k][$v2]), $v2); $p2 = str_replace($v2,ind_decidi($KKK3[$k][$v2]), $v2); $p3 = str_replace($v2,ind_decidi($KKK3[$k][$v2]), $v2); $parola_estesa1[] = $p1; $parola_estesa2[] = $p2; $parola_estesa3[] = $p3; //print "Y".$p;print "---
"; } //ricompongo parola pulita $K10[lang] = "$k"; $K10[peso] = sizeof($parola_pulita); $K10[key] = implode(" ",$parola_pulita); //$K10[parola1] = implode(" ",$parola_estesa1); //$K10[parola2] = implode(" ",$parola_estesa2); //$K10[parola3] = implode(" ",$parola_estesa3); unset($parola_pulita); unset($parola_estesa1); unset($parola_estesa2); unset($parola_estesa3); //assegno la parola nell' array globale $KEYG[]=$K10; // tutto insieme //$KEYG2[$k][]=$K10; } } } //d($KEYG); //devo controllare i duplicati ?? //CONTROLLO UNICITA0 reset($KEYG); while(list($k, $v)=each($KEYG)) { //mi creo array parole provvisorio $TMP[$k] = $v[key]; } $TMP = array_unique($TMP); reset($TMP); while(list($k, $v)=each($TMP)) { //mi creo array parole provvisorio $TMP2[$k] = $KEYG[$k]; } d($TMP2); //scrivo file una volta sola ind_scrivi($IND[file_base],$TMP2); //torna alla home page con redirect header("Location: ".genera_BASEURL()."?".sizeof($TMP2)); exit; //torna INDI;: } //mi cerca una parola con preferenza e relativo peso di preferenza //la preferenza e' come un like function ind_cerca_parola2($lang,$parola,$peso) { global $INDI,$DATI; reset($INDI); while(list($k, $v)=each($INDI)) { if($v[lang] == "$lang" and $v[link]=="") { //print $peso; //controllo la parola if(@stristr($v[key],$parola)) { //if($v[peso] == "$peso") { //assegno il link. return($k); //} } //se non trovo nel peso minore lo aumrnto if($v[peso] > $peso) { $peso++; // print "
- INCPESO -> '$peso'"; } } } //se non trova niente torna 0 return -1; } //torna la chiave della parola function ind_cerca_parola($lang,$parola,$peso) { global $DATI; //possibile rischio ?? if($DATI[lang] != $lang) { $DATI[key] = ""; $DATI[peso] = ""; } //se il peso non c'e' lo metto alto ?? if($peso == "") $peso = $DATI[peso]; if($peso == "") $peso = 1; //imposto la parola di riferimento if($parola == "") $parola = $DATI[key]; if($parola == "") $parola = " "; $k = ind_cerca_parola2($lang,$parola,$peso); //se non torna niente provo la ricerca senza parola preferenziale if($k == -1 and $parola != " ") { //metto parola vuota $k = ind_cerca_parola2($lang," ",$peso); } return $k; } function ind_prende($pagina, $lang, $agg, $parola="", $peso="", $link="") { global $IND,$INDI,$CONF,$DATI,$PRESA; // $ULTIMA_PRESA; c'e' l' array con le informazioni sull' ultima presa //debug //DATI mi serve per avere i valori dell ambiente, soprattutto il peso e la parola ///se e' passato una pagina e una lingua e i parametri aggiuntivi cerco l' indi relativo e lo ritorno //if(trim($pagina) != "" and trim($lang) != "") { reset($INDI); while(list($k, $v)=each($INDI)) { if($v[pagina] == $pagina and $v[lang] == $lang and $v[agg] == $agg) { $PRESA = $v; //d("INDI_PRENDE_PRESA -> PAGINA:$pagina - LANG:$lang - AGG:$agg"); return($v); } } //} //devo riscrivere $CONF["INDI_write"] = "SI"; //d("INDI PRENDE -> PAGINA:$pagina - LANG:$lang - AGG:$agg"); //se ///se e' passato anche un link controllo se questo e' associato ad una parola //se passo vuole dire che non ho trovato il link, prendo quindi una parola chiave // e l associo al link se c'e' //prendo parola random //print "diversa"; //controllo livello di navigazione //se non c'e' un id di riferimento sono nella root //if ($DATI[ref_id] == "") //print "
presa"; $id_ref = $DATI[id]; reset($INDI); //cerco in prima istanza le parole con peso dato e mi faccio una lista //se c'e' il debug dell' indirizzo non assegno nuova if($CONF[debug_link] != "SI") { //cerco una chiave $k = ind_cerca_parola($lang,$parola,$peso); //se non c'e' errore if($k != -1) { //d("INDI PRENDE PAROLA -> PAGINA:$pagina - LANG:$lang - AGG:$agg"); //d($PAROLA); //assegno il link $parola = $INDI[$k][key]; $peso = $INDI[$k][key]; if ($link == "") $INDI[$k][link] = ind_genera_link($parola); else $INDI[$k][link] = $link; //agg $INDI[$k]["agg"] = $agg; $INDI[$k][pagina] = $pagina; $INDI[$k][id] = $k; $INDI[$k][id_ref] = $id_ref; //print "
- ASS -> '$link'"; //print "
- ASS -> '$pagina'"; //creo valori per riempire anche il MENU $OUT[link] = $INDI[$k][link]; $OUT[pagina] = $pagina; $OUT[key] = $parola; $OUT[peso] = $peso; $OUT[lang] = $lang; $OUT[id] = $k; //assegno ultima presa $PRESA = $OUT; d($OUT); return($OUT); } } //fine debug //se siamo qui non ho trovato nessuna parola disponibile nella lingua data, ne assegno una random presa dalla parola di base //se c'e' la parola di base la sfrutto //d("INDI PRENDE RANDOM -> PAGINA:$pagina - LANG:$lang - AGG:$agg"); reset($INDI); //genero la parola alla meno peggio $casuale = mt_rand(1,1000000); $OUT[key] = $lang."-".$pagina."-".$casuale; if ($link == "") $OUT[link] = ind_genera_link($OUT[key]); else $OUT[link] = $link; $OUT[agg] = $agg; $OUT[pagina] = $pagina; $OUT[lang] = $lang; $OUT[peso] = $peso; $OUT[id_ref] = $id_ref; //cerco l' ultimo elemento dell' array $id = count($INDI); $id = $casuale; $OUT[id] = $id; //scrivo indi $INDI[$id] = $OUT; //d($INDI); //print "
- ASSX -> '$link'"; //print "
- ASSX -> '$pagina'"; //print "
- ASSX -> '$parola'"; //assegno ultima presa $PRESA = $OUT; d($OUT); return $OUT; } //ind_prende_key("ita","1",""); // scrive file e serializza, sovrascrive se necessario function ind_scrivi($filename,$MIXED) { $somecontent = serialize($MIXED); // Verifica che il file esista e sia riscrivibile if (!$handle = fopen($filename, 'w+')) { echo "Non si riesce ad aprire il file ($filename)"; exit; } // Scrive $somecontent nel file aperto. if (!fwrite($handle, $somecontent)) { echo "Non si riesce a scrivere nel file ($filename)"; exit; } //echo "Riuscito, scritto nel file ($filename)"; fclose($handle); d("Scritto INDI"); return 1; } //$DATI = array_merge($DATI_VAR,$DATI); //dovrei creare tutte le pagine in base alle key e mettere un campo riconoscibile per poi, gestire l' inclusione nel template //creo un array delle parole chiave del sito, in ordine di importanza //$KEY_AGG = ind_genera_key_agg($k); //adesso ho tutta la lista delle parole chiavi //$KEY_TMP = array_merge($KEY_AGG,$KEY_BASE); //ordino //??Devo prima di tutto generare i LINK di tutto il sito nelle varie lingue per avere la mappa completa, posso anche //print_r(ind_key_base_val("ita")); //print "
".$lang;
//print_r($KEY_BASE);
//print "
"; //############## MAIN ################# function main_link_globale_indi() { global $INDI,$MENU,$LANG; reset($MENU); reset($INDI); reset($LANG); while(list($k, $v)=each($MENU)) { //il mio id globale e' il nome della pagina + la lingua //controllo se per ogni lingua di $k e' gia' stato definito il link reset($LANG); while(list($kl, $vl)=each($LANG)) { // faccio il merge con di tutte le pagine; $MENU[$k][$kl] = array_merge($MENU[$k][xxx], $MENU[$k][$kl]); //imposto il link in base alla parola chiave se c'e' //print "
- VAL -> $k, $kl,".$MENU[$k][$kl][key].",".$MENU[$k][$kl][link]; //ind_prende($pagina,$lang,$agg,$parola="",$peso="",$link="") //se specifico la pagina nella configurazione questa sovrascrive //if($MENU[$k][$kl][pagina] != "") $pagina = $MENU[$k][$kl][pagina]; //else $pagina = $k; $OUT = ind_prende($k, $kl,$MENU[$k][$kl][agg],$MENU[$k][$kl][key],$MENU[$k][$kl][peso],$MENU[$k][$kl][link]); //faccio il merge inserendo nel menu le informazioni uscite dalla presa della parola $MENU[$k][$kl] = array_merge($OUT, $MENU[$k][$kl]); } } //return $MENU; } //usato nel modo non indi function main_link_globale() { global $CONF,$MENU,$LANG; reset($MENU); while(list($k, $v)=each($MENU)) { //il mio id globale e' il nome della pagina + la lingua //controllo se per ogni lingua di $k e' gia' stato definito il link reset($LANG); while(list($k1, $v1)=each($LANG)) { // faccio il merge con di tutte le pagine; $MENU[$k][$k1] = array_merge($MENU[$k][xxx], $MENU[$k][$k1]); //creo link $MENU[$k][$k1]["link"] = $CONF[nome_programma]."?l=$k1&p=$k"; $MENU[$k][$k1]["pagina"] = $k; $MENU[$k][$k1]["lang"] = $k1; } } } //################### INDICIZZAZIONE AVANZATA ############################## //funzione che mixa le parole, in input una serie di array di parole da mescolare nell' ordine dato function ind_array_mix_gen ($ARR) { if (!$ARR[0]) return 0; $ARRX[0] = ""; //d($ARRX); while(list($k, $v)=each($ARR)) { $ARRX = ind_array_mix($v,$ARRX); //d($ARRX); } return($ARRX); } //funzione che mescola due array function ind_array_mix($ARR1,$ARR2) { while(list($k, $v)=@each($ARR1)) { @reset($ARR2); while(list($kk, $vv)=@each($ARR2)) { if(!$vv) $ARR[] = $v; else $ARR[] = $vv."|".$v; } } return $ARR; } //compone una parola ritornando a caso le varianti function ind_componi_parola($parola) { //salvo testo fra parentesi $parentesi = ind_parentesi($parola, "(", ")"); if($parentesi == "") { $ARR[key] = trim($parola); return $ARR; } $PARENTESI = explode("|",$parentesi); //$PARENTESI[] = ""; //$SN = rand(0,count($PARENTESI)-1); //$opz = $PARENTESI[$SN]; $CHIAVE = explode(")",$parola); $parola = trim($CHIAVE[1]); //genero tutte le varianti $ARR[key] = $parola; $c = sizeof($PARENTESI)-1; while(list($k, $v)=each($PARENTESI)) { $v = trim($v); if($k != $c) $alt .= $v." ".$parola."|"; else $alt .= $v." ".$parola; } if(sizeof($PARENTESI) > 2) $alt = $alt."|".$parola; $ARR[alt] = $alt; //if($tipo == "pulita") return trim($CHIAVE[1]); //else return $opz." ".trim($CHIAVE[1]); return $ARR; } function ind_key_val($stringa,$sep,$k_p){ $K = explode($sep,$stringa); while(list($k, $v)=each($K)) { //$k = $k_p.$k; $v = trim($v); $OUT[$k] = $v; //print "$k --> $v \n"; } return $OUT; } //genera una parola chiave in formato esteso, dalla lista delle parole function ind_mix_key($K) { //completo while(list($k, $v)=each($K)) { $Y = ind_key_val($v,",",$k); $SN = rand(0,count($Y)-1); //print $SN; //print $Y[2]; if($k == 1 or $k == 2 or rand(0,1)) $OUT .= ind_componi_parola($Y[$SN])." "; } return $OUT; } //ritorna una parte random di aaaa|bbbbb|ccccc, torna bbbbb function ind_decidi($stringa){ $OPZ = explode("|",$stringa); $SN = rand(0,count($OPZ)-1); $out = $OPZ[$SN]; return $out; } //genera un testo casuale per il meta description function ind_testo_casuale($testo) { global $IND; $pattern = '/\[([^\]\[]*?)\]/si'; //$pattern = '/\(([^\)\(]*?)\)/si'; if (preg_match_all ($pattern, $testo, $matches)) { // nl2br(print_r ($matches)); } else { //print ("Not matched!\r\n"); } while(list($k, $v)=each($matches[1])) { //print ind_decidi($v)."
"; $REP[$k] = ind_decidi($v); } $out = str_replace($matches[0], $REP, $testo); return $out; } //FUNZIONE SUPERGENERICA DI INDI2 //PASSATA UNA STRINGA O UN ARRAY, RITORNA SEMPRE UN ARRAY DI STRINGHE //SCOMPOSTE CON IL SEPARATORE CHE TROVA IN AUTOMATICO FRA (, o |) //se non c'e' un separatore torna un ARRAY di 1 elemento comunque //se c'e' un formato chiave valore, ritorna una chiave numerica incrementale, senno' ritorna chiave valore nel modo giusto //formato $a = "chave->valore, chiave2->valore2", o $a = "valore1, valore2, valore3"; function ind_scomponi2 ($OGGETTO) { //controllo se e' un array if (is_array($OGGETTO)) { return $OGGETTO; } else { $OGGETTO2 = explode(",",$OGGETTO); if(sizeof($OGGETTO2) > 1) { while(list($k, $v)=@each($OGGETTO2)) { $OUT = explode("->",$v); if(sizeof($OUT) > 1) { //Se torna qualcosa, allora torno l' array con chiave valore $chiave = trim($OUT[0]); $valore = trim($OUT[1]); $OUT2[$chiave] = "$valore"; } else { //siamo nel caso in cui non c'e' la chiave, la aggiungo $OUT2[] = trim($v); } } return $OUT2; } else { //E' una stringa controllo preseza parentesi //$OUT = ind_parentesi2($OGGETTO,"[","]"); //if($OUT != FALSE) { $OUT = explode("->",$v); if(sizeof($OUT) > 1) { //Se torna qualcosa, allora torno l' array con chiave valore $chiave = trim($OUT[0]); $valore = trim($OUT[1]); $OUT2[$chiave] = "$valore"; return $OUT2; } else { //siamo nel caso in cui non c'e' la chiave, la aggiungo $OUT[0] = trim($OGGETTO2[0]); return $OUT; } } } } //INDI2 (non usato) //ritorna un array con il testo fra parentesi e quello fuori dalle parentesi function ind_parentesi2($str, $start, $end) { $str_low = @trim(strtolower($str)); $pos_start = @strpos($str_low, $start); $pos_end = @strpos($str_low, $end, ($pos_start + strlen($start))); if ( ($pos_start !== false) && ($pos_end !== false) ) { $pos1 = $pos_start + strlen($start); $pos2 = $pos_end - $pos1; $OUT[chiave] = trim(@substr($str, $pos1, $pos2)); $OUT[valore] = trim(@substr($str, $pos_end+1, strlen($str))); return $OUT; } else return FALSE; } //ritorna il testo fra parentesi in una stringa function ind_parentesi($str, $start, $end) { $str_low = @trim(strtolower($str)); $pos_start = @strpos($str_low, $start); $pos_end = @strpos($str_low, $end, ($pos_start + strlen($start))); if ( ($pos_start !== false) && ($pos_end !== false) ) { $pos1 = $pos_start + strlen($start); $pos2 = $pos_end - $pos1; return @substr($str, $pos1, $pos2); } } //funzione che data una lista separata da un separatore torna un array con il valore e indice progressivo function ind_scomponi_gen ($stringa,$separatore) { if (!$stringa) return FALSE; if (!$separatore) return FALSE; $ARR = explode($separatore,$stringa); return $ARR; } //suddivide inri nelle sue componenti parola valore function ind_scomponi_inri($inri) { //suddivido le parti $LINK = explode("|",$inri); if (!$LINK[1]) { $key = trim($LINK[0]); //seconda parola $val = trim($IND[peso_def]); } else { $key = trim($LINK[1]); $val = trim($LINK[0]); } //Adesso ho la chiave e il valore della key principale //carico la lista $KEY[key] = $key; $KEY[valore] = $val; return $KEY; } function ind_scomponi_parola($key) { //suddivido le parti $KEY = explode(" ",$key); while(list($k, $v)=each($KEY)) { if ($v) $ARR[] = trim($v); } return $ARR; } //Creo un array degli inri trovati function ind_key_base($lang) { global $MENU; reset($MENU); while(list($pag, $APAG)=each($MENU)) { while(list($lan, $dati)=each($APAG)) { if($lan == $lang) { $KEY[$pag] = $MENU[$pag][$lan][inri]; } } } return $KEY; } // indice principale keyword -> peso function ind_key_base_val($lang) { global $MENU,$IND; reset($MENU); while(list($pag, $APAG)=each($MENU)) { while(list($lan, $dati)=each($APAG)) { if($lan == $lang) { $KEY[$pag] = $MENU[$pag][$lan][inri]; } } } if (!$KEY) return 0; while(list($k, $v)=each($KEY)) { $KEYA = explode("|",$v); if (!$KEYA[1]) { $key = trim($KEYA[0]); //seconda parola $val = trim($IND[peso_def]); } else { $key = trim($KEYA[1]); $val = trim($KEYA[0]); } $KEY_DEF[$key] = $val; } asort($KEY_DEF); reset($KEY_DEF); return $KEY_DEF; } // GENERAZIONE ################################ //genera il link a partire da una parola function ind_genera_link($link) { $link = str_replace(" ","-",$link); $link = str_replace("'","-",$link); $link = str_replace("/","-",$link); $link = str_replace("\\","-",$link); //pseudo valore casuale //$rand = abs(crc32($KEYI[key]) + $IND[rand]); return ''.$link.'.html'; } //genera titolo function genera_titolo() { global $DATI; //se e' gia impostato manuale if ($DATI["title"]) return $DATI["title"]; //se uso indi if ($DATI["INDI"] == "SI") return ind_genera_titolo(); //senno' genero automatico da menu if($DATI[nome] != "") $menu = $DATI[nome]; if($DATI[menu_txt] != "") $menu = $DATI[menu_txt]; if($menu) $menu = " - $menu"; //chiave if($DATI[key] != "") $key = " - $DATI[key]"; $DATI["title"] = $DATI[nome_sito].$menu.$key;; return $DATI["title"]; } function genera_mkey() { global $DATI; //se e' gia impostato manuale if ($DATI["mkey"]) return $DATI["mkey"]; //se uso indi if ($DATI["INDI"] == "SI") return ind_genera_mkey(); //senno' genero automatico da menu return $DATI[nome_sito]." - ".$DATI[menu_txt]." - ".$DATI[key]; } function genera_mdesc() { global $DATI; //se e' gia impostato manuale if ($DATI["mdesc"]) return $DATI["mdesc"]; //se uso indi if ($DATI["INDI"] == "SI") return ind_genera_mdesc(); //senno' genero automatico da menu return $DATI[nome_sito]." - ".$DATI[menu_txt]." - ".$DATI[key]; } //Genera titolo a partire da inri function ind_genera_titolo() { global $DATI; //se c'e' il titolo lo metto return ind_rimuove_duplicati(ucfirst($DATI[key])); } function ind_genera_mkey() { global $DATI, $KEYK; $lang = $DATI[lang]; //se c'e' il titolo lo metto $out = str_replace("#KEY#",ucfirst($DATI[key]),$KEYK[$lang]); return ind_rimuove_duplicati(ucfirst($out)); } // 20-40 parole function ind_genera_mdesc() { global $DATI, $KEYM; $lang = $DATI[lang]; $out = $KEYM[$lang]; if($DATI[parola1] == "") $DATI[parola1] = ucfirst($DATI[key]); if($DATI[parola2] == "") $DATI[parola2] = ucfirst($DATI[key]); if($DATI[parola3] == "") $DATI[parola3] = ucfirst($DATI[key]); $out = str_replace("#KEY1#",$DATI["parola1"],$out); $out = str_replace("#KEY2#",$DATI["parola2"],$out); $out = str_replace("#KEY3#",$DATI["parola3"],$out); //$out = ind_testo_casuale($KEYM[$lang]); //$OUT = explode("#KEY#",$out); //nuemro delle chiavi presenti //$numero_chiavi = sizeof($OUT)-1; //creo un array di chiavi in base al numero, le parole aggiuntive sono mella stringa paroel_agg //ind_decidi($DATI[parole_agg]); //d($OUT); //for ($i = 0; $i < $numero_chiavi; $i++ ) { //sostituisco chiavi diversificate se possibile // $out2 .= $OUT[$i]."#KEY$i#"; // } //$pattern = '/\(([^\)\(]*?)\)/si'; //$out = str_replace("#KEY1#", "
-", "$out"); //$out = str_replace("#KEY2#", "
-", "$out"); //$out = str_replace("#KEY3#", "
-", "$out"); return ucfirst(ind_rimuove_duplicati($out)); } function ind_sos_key($out) { global $DATI; return str_replace("#KEY#",ucfirst($DATI["key"]),$out); } function ind_genera_h1() { global $MENU,$pagina,$lang; return $MENU[$pagina][$lang][titolo]; } //breve descrizione simile al meta desc, potrebbe essere uguale function ind_genera_h2() { } //la prima frase e' la piu' importante //5% e 25% del body, link con key + testo function ind_genera_p() { global $DATI,$KEYS,$IND; //se non c'e' trovo soluzione ?? //$txt = ind_testo_casuale($KEYM[ita]); //sostituisco al testo la parola chiave //carico testo $TXT = file_get_contents($IND[testi_indi].$DATI[lang].".txt"); $TXT = str_replace("\n\r", "", "$TXT"); $TXT = explode(".",$TXT); shuffle($TXT); for ($i = 1; $i <= 5; $i++) { $out.=$TXT[$i]."."; } $out = str_replace("?", "?
", "$out"); $out = str_replace(".", ".
", "$out"); $out = str_replace("-", "
-", "$out"); $out = "

".$out."

"; $out = encode($out); return $out; } //genera i testi del link?? function ind_testo_link ($inri) { return $inri; } function ind_genera_menu() { global $MENU,$pagina,$lang; reset($MENU); while(list($k, $v)=each($MENU)) { while(list($kk, $vv)=each($v)) { if($kk == $lang) { //$txtlink = ind_testo_link($MENU[$k][$lang][inri]); //?? $txtlink = $MENU[$k][$lang][key]; $href = genera_link($k,$lang); if($MENU[$k]["xxx"]["vis"] != "NO") { if($pagina == $k) $link .= ''.$txtlink.' | '; else $link .= ''.$txtlink.' | '; } } } } return $link; } function ind_genera_menu_indi() { global $INDI,$CONF,$MENU,$pagina,$lang; if($CONF["INDI"] != "SI") return ""; reset($INDI); reset($MENU); while(list($k, $v)=each($INDI)) { $pagina2 = $v[pagina]; if($v[lang] == $lang and $MENU[$pagina2][xxx][nome] != "") { //$txtlink = ind_testo_link($MENU[$k][$lang][inri]); //?? $txtlink = $MENU[$pagina2][xxx][nome]; $href = $v[link]; if($pagina == $v[pagina]) $link .= ''.$txtlink.' | '; else $link .= ''.$txtlink.' | '; } } return $link; } // ##################### FUNZIONI INDICIZZAZIONE DA RIVEDERE ################################################### // Trasforma sintessi semplice in parolachiave -> valore //e mette valore di def se non specificato //print "
"; //print genera_menu(); //################################################################## //########################## FUNZIONI //############################ //################################################################## //funzione per template di configurazione function tconf($template) { GLOBAL $DATI,$TCONF; if (!$template) return 0; $DATI = array_merge($DATI, $TCONF[$template]); } // DATABASE //###################################################### function query($query) { //print "
$query"; global $db_host, $db_user, $db_pass, $db_name, $db_debug; if (!$link = @mysql_pconnect($db_host, $db_user, $db_pass)) { $result = 0; print ("
Errore nella connessione a $db_host!"); } else { if (!@mysql_select_db($db_name, $link)) { $result = 0; print ("
Errore nella selezione del DB: $db_name
"); } else { if (!$result = @mysql_query($query, $link)) { $result = 0; print ("
Errore nella query: $query!"); } } } return $result; } //funzione importante di generazione link. ??? ancora function genera_link($pagina,$lang=NULL,$agg=NULL,$ancora=NULL) { global $DATI,$INDI,$CONF; if($lang == NULL) $lang = $DATI["lang"]; //sistemo variabili in ingresso in caso di errori $agg=trim($agg); $lang=trim($lang); $pagina=trim($pagina); //$sito = $CONF[path]; //$param="1000"; //controllo lingua e la pagina senno' considero quella corrente //if ($lang2 == "") $lang2 = $lang; //if ($pagina2 == "") $pagina2 = $pagina; //if($MENU[$pagina2][$lang2][inri] == "") $pagina2 = $pagina; if($DATI["INDI"] == "SI") { //passo meno parametri agli altri ci pensa lui //sono nel caso di generazione di una pagina interna $OUT = ind_prende($pagina,$lang,$agg); $link = $OUT[link]; $url_completo = urlencode($link); //$url_completo = $link; return ($url_completo.$ancora); } //sono nell' altro caso non INDI $link = "$CONF[nome_programma]?p=$pagina&l=$lang"; if($agg != "") $link .= "&".$agg; return ($sito.$link.$ancora); } //Genera l' indirizzo e-mail nascosto con il javascript e tracciato con il programma INRI function genera_email($email=NULL,$testo_link=NULL,$STAT=NULL) { global $DATI; //controllo statistiche if($DATI[STAT] == "SI") $stat = " OnClick='+ prog+'(\"'+dp+'\",\"mail\",\"width=10,height=10\");"; //if(is_array($STAT)) $stat_url = serialize($STAT); $path = "index.php?t=stat&stat=".urlencode($stat_url); //$path = "index.php?t=stat"; if($email == NULL) $email = $DATI[email]; if($email != "") { $EMAIL = explode("@",$email); if($testo_link == NULL) $testo = "emailX=emailE;"; else $testo = 'emailX="'.encode($testo_link).'";'; $email_java = ' '; return $email_java; } } // GENERA //###################################################### /*function genera_BASE() { $HH = $_SERVER["HTTP_HOST"]; $DR = $_SERVER["DOCUMENT_ROOT"]; $SF = $_SERVER["SCRIPT_FILENAME"]; $AA = explode($DR,$SF); $BB = explode("/",$AA[1]); for ($i = 0; $i < sizeof($BB)-1; $i++ ) { $U = $U."/".$BB[$i]; } if (substr($U, 0,1) == "/") return substr($U, 1); else return $U; } */ function genera_BASEURL() { $HH = $_SERVER["HTTP_HOST"]; $DR = $_SERVER["DOCUMENT_ROOT"]; $SF = $_SERVER["SCRIPT_FILENAME"]; $AA = explode($DR,$SF); $BB = explode("/",$AA[1]); for ($i = 0; $i < sizeof($BB)-1; $i++ ) { $U = $U."/".$BB[$i]; } //if (substr($U, 1,1) == "/") $U = substr($U, 1); $U = str_replace("//","/",$U."/"); return ("http://".$HH.$U); } function genera_BASE() { $HH = $_SERVER["HTTP_HOST"]; $DR = $_SERVER["DOCUMENT_ROOT"]; $SF = $_SERVER["SCRIPT_FILENAME"]; $AA = explode($DR,$SF); $BB = explode("/",$AA[1]); for ($i = 0; $i < sizeof($BB)-1; $i++ ) { $U = $U."/".$BB[$i]; } $U = str_replace("//","/",$U."/"); //if (substr($U, 1,1) == "/") $U = substr($U, 1); return $U; } /* function genera_PATH() { global $CONF; return genera_BASEURL().$CONF[nome_programma]; } */ function HCSS() { global $DATI; if ($DATI[HCSS] == "SI"){ return (' '); } } function genera_IND_TXT() { global $DATI; if ($DATI[INDI] == "SI"){ return ('

H111111111111111111

'); } } function genera_dominio() { global $CONF; //if (!stristr($_SERVER['SERVER_NAME'],$CONF[locale])) $sito = $CONF[sito_locale]; //else $sito = $CONF[sito_remoto]; return $CONF[baseurl]; } // INCLUSIONI E PAGE REL //###################################################### function includi_pagina($pagina,$lang) { GLOBAL $DATI; $pagina_inc = $DATI[dir_pagine].'_'.$pagina.'.inc.php'; if ($pagina_inc) include($pagina_inc); else print "###### ERRORE PAGINA $pagina ########"; } //FUNZIONI BASE ########################################### //funzione per fare merge di configurazione su gruppi livelli e riferimenti function glr($pagina) { global $CONF; //$DATI = array_merge($CONF, $DATI); //ritorno superglobal $GLOBALS["MENU"] = $MENU; $GLOBALS["DATI"] = $DATI; $GLOBALS["CONF"] = $CONF; } //genra il codice per il javascript function genera_javascript() { global $DATI; if($DATI["javascript"] != "") { return(' '); } } function genera_css() { global $DATI; if($DATI["css"] != "") { return("\n\r"); } } //aggiungo del codice javascript nella pagina function javascript($codice) { global $DATI; if ($codice != "") { $DATI["javascript"] .= $codice."\n\r"; } } function css($codice) { global $DATI; if ($codice != "") { $DATI["css"] .= $codice."\n\r"; } } //ripristina i valori provenienti dal GET function ind_valori_agg($agg) { //$origin="http://inri.tnx.dyndns.org/index.php/eng_test1_.html?a=100&b=1000"; //$tab=parse_url($origin); //$query=$tab["query"]; if(@stristr("&",$agg)) { $variables=explode("&",$query); for ($i=0;$i<=count($variables);$i++){ $tab=explode("=",$variables[$i]); // $$tab[0]=$tab[1]; $_GET[$tab[0]] = $tab[1]; } } else { $query=$agg; $variables=explode("&",$query); for ($i=0;$i<=count($variables);$i++){ $tab=explode("=",$variables[$i]); // $$tab[0]=$tab[1]; $_GET[$tab[0]] = $tab[1]; } } } function valori_redirect($agg) { //$origin="http://inri.tnx.dyndns.org/index.php/eng_test1_.html?a=100&b=1000"; //$tab=parse_url($origin); //$query=$tab["query"]; $query=$agg; $variables=explode("&",$query); for ($i=0;$i<=count($variables);$i++){ $tab=explode("=",$variables[$i]); // $$tab[0]=$tab[1]; $_GET[$tab[0]] = $tab[1]; } } function simile($a,$b) { $len = strlen($a); $similar = similar_text($a,$b); $out = abs(round((((($len - $similar) / $len)*100))-100)); return $out; } function vemail($e,$v=-1) { global $verbose; /* Return codes: 0: appears to be a valid email 1: didn't match pattern of a valid email 2: looks valid by the pattern, but no DNS records found Try several things to make sure it is most likely valid: 1. preg_match it to make sure it looks valid 2a. If that passes, check for an MX entry for the domain 2b. If no MX, check for any DNS entry for the domain */ if ($v==-1) { $v=$verbose; } if (!preg_match("/^[a-z0-9.+-_]+@([a-z0-9-]+(.[a-z0-9-]+)+)$/i", $e, $grab)) { return 1; } # $grab[0] is the whole address # $grab[1] is the domain $domain = $grab[1]; $cmds = array("host -t MX $domain 2>&1 ","host $domain 2>&1 "); foreach ($cmds as $cmd) { $dns = trim(`$cmd`); if ($v) { print "n"; } if (strpos($dns,"$domain mail is handled ")!==false || strpos($dns,"$domain has address ")!==false || strpos($dns,"$domain is an alias ")!==false) { # It is valid return 0; } } # If it didn't return yet, it's invalid, even though it passed the preg. return 2; } function dbquote($a) { if (get_magic_quotes_gpc() == 0) { if (is_array($a)) { while (list ($k, $v) = each ($a)) { $b[$k] = addslashes ($v); } return $b; } else { $b = addslashes($a); return $b; } } else { return $a; } } function dbquote2($a) { if (is_array($a)) { while (list ($k, $v) = each ($a)) { $b[$k] = addslashes ($v); } return $b; } else { $b = addslashes($a); return $b; } } //funzione da richiamare prima della manipolazione del testo che proviene da form o da url, la funzione toglie gli slash che vegono aggiunti se la magick quote sono attive function dataquote($a) { if (get_magic_quotes_gpc() == 1) { if (is_array($a)) { $b = array(); while (list($key,$val) = each($a)) $b[$key] = stripslashes($val); return $b; } else { $b=stripslashes($a); } return $b; } else { return $a; } } // funzione da richiamare prima di mandare il testo al browser, in pratica quota i caratteri speciali dell' html come "<>&" ecc. function webquote2($a) { if (is_array($a)) { $b = array(); while(list($k,$v) = each($a)) $b[$k]=str_replace("'", "'", htmlentities($v)); return $b; } else { $b=str_replace("'", "'", htmlspecialchars($a)); } return $b; } // funzione da richiamare prima di mandare il testo al browser, in pratica quota i caratteri speciali dell' html come "<>&" ecc. function webquote($a) { if (is_array($a)) { $b = array(); while(list($k,$v) = each($a)) $b[$k]=htmlentities($v); return $b; } else { $b=htmlentities($a); } return $b; } function webquote_dataquote($a) { if (is_array($a)) { $b = array(); while(list($k,$v) = each($a)) $b[$k]=webquote(dataquote($v)); return $b; } else { $b=webquote(dataquote($a)); } return $b; } function encode($string) { $pattern = '<([a-zA-Z0-9\.\, "\'_\/\-\+~=;:\(\)?&#%![\]@]+)>'; preg_match_all ('/' . $pattern . '/', $string, $tagMatches, PREG_SET_ORDER); $textMatches = preg_split ('/' . $pattern . '/', $string); foreach ($textMatches as $key => $value) { $textMatches [$key] = htmlentities ($value); } for ($i = 0; $i < count ($textMatches); $i ++) { $textMatches [$i] = $textMatches [$i] . $tagMatches [$i] [0]; } return str_replace("&nbsp;", " ",implode ($textMatches)); } function encode2($str) { $str = ereg_replace("’", "'", $str); $str = ereg_replace("‘", "'", $str); $tbl = get_html_translation_table(HTML_ENTITIES); unset ($tbl["<"]); unset ($tbl[">"]); unset ($tbl["'"]); unset ($tbl['"']); unset ($tbl['&']); $tbl["“"] = """; $tbl["”"] = """; $tbl["…"] = "..."; $tbl["-"] = "-"; $tbl["»"] = "»"; $tbl["«"] = "«"; return str_replace(array_keys($tbl),array_values($tbl),$str); } // FUNZIONE DI OUTPUT //riscrive tutto in base a tante cosine :-)) function output($buffer){ global $DATI; //JETBOX if($DATI[jetbox] == "SI") { $buffer = str_replace($DATI[jetbox_webimage_src],$DATI[jetbox_webimage_dst], $buffer); $buffer = str_replace($DATI[jetbox_webfiles_src],$DATI[jetbox_webfiles_dst], $buffer); } //imposto base $buffer = str_replace("#BASE#", $DATI[baseurl], $buffer); //per ind avanzata $buffer = str_replace("#TITLE#",genera_titolo(), $buffer); $buffer = str_replace("#MKEY#",genera_mkey(), $buffer); $buffer = str_replace("#MDESC#",genera_mdesc(), $buffer); //PAGINA $buffer = str_replace("#PAGINA#",$DATI[menu_txt], $buffer); // sostituisco le chiavi sparse $buffer = ind_sos_key($buffer); $buffer = str_replace("#JAVASCRIPT#",genera_javascript(), $buffer); $buffer = str_replace("#CSS#",genera_css(), $buffer); $buffer = str_replace($DATI["path_rel"].$DATI["dir_indi"], $DATI["dir_indi"], $buffer); $buffer = str_replace($DATI["path_rel"].$DATI["dir_pagine"], $DATI["dir_pagine"], $buffer); $buffer = str_replace($DATI["path_rel"].$DATI["dir_file"], $DATI["dir_file"], $buffer); $buffer = str_replace($DATI["path_rel"].$DATI["dir_pic"], $DATI["dir_pic"], $buffer); return($buffer); } //############## DEBUG ############################### //##################################################### //##################################################### function d_info($D,$nome=NULL,$gruppo=NULL) { d($D,$nome,"info",$gruppo); } function d_err($D,$nome=NULL,$gruppo=NULL) { d($D,$nome,"errore",$gruppo); } function d($D,$nome=NULL,$tipo=NULL,$gruppo=NULL) { global $CONF; global $DEBUG; $indice = sizeof($DEBUG)+1; if($gruppo == "") $gruppo = $CONF[debug_gruppo_def]; if($tipo == "") $tipo = $CONF[debug_tipo_def]; $DEBUG[$indice][vari] = $D; $DEBUG[$indice][nome] = $nome; $DEBUG[$indice][tipo] = $tipo; $DEBUG[$indice][gruppo] = $gruppo; $DEBUG[$indice][contesto] = $DATI[debug_contesto]; } //da togliere vecchia function dd($D) { //cicolo il mio debug while(list($k,$v) = each($D)) { ddd($v); } } //funzione di visualizzazione che usa la funzione passata per fare quello che si vuole function d_vis($D,$f_vis="d_vis_default") { //cicolo il mio debug while(list($k,$v) = each($D)) { $f_vis($v); } } //vecchia da togliere function ddd($D,$nome="") { global $DATI; if($DATI[debug] == "SI") { //funzione di debug if(is_array($D[vari])) { print "
";
			print ("$D[tipo] : $D[nome] :");
			print_r($D[vari]);
			print "
"; } else { print ("$D[tipo] : $D[nome] : $D[vari]
"); } } } function d_vis_default($D) { global $DATI; //if($DATI[debug] == "SI") { //funzione di debug if(is_array($D[vari])) { print "
";
			print ("$D[tipo] : $D[nome] :");
			print_r($D[vari]);
			print "
"; } else { print ("$D[tipo] : $D[nome] : $D[vari]
"); } //} } ?>