Guestbook con file singolo o multipli?

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
ciao
fammi capire da quello che vedo fai una lista di siti non consentiti
$sitiArray = array ("/\bsito.it\b/i");
e se per esempio uno scrive (metto gli spazi)
http : // www. bisito.it (che è un sito non consentito) non riesci a toglere l'http:// giusto? o ho capito male?

p.s.
devo andare a spalare la neve :(

si, però lo deve togliere solo ai siti se sono inseriti nel campo url, non a quelli che vengono inseriti nel campo messaggio (altrimenti non sono linkabili)
 
ciao
prova a parte questa paginetta, e se ti va bene sostituisci qulle righe che hai postato per sostituire l'htttp e www

PHP:
<?php
$sitiArray = array("/\bsito.it\b/i");
var_dump($sitiArray);echo "<br>";
$replacements1 = "<span class=\"badWord\">[Sito no good]</span>";
$tolgo_http_www=array('http://', 'www.');
//***************
$riga['url']="http://http://WWW.sito.it";//prova anche con un altro consentito
$riga['url']=str_ireplace($tolgo_http_www,"",$riga['url']);
var_dump($riga['url']);echo "<br>";//poi togliere o commetare
$riga['url1']="http://".$riga['url']."";//non dovresti aggiungere http://www. ??
var_dump($riga['url1']);echo "<br>";
$riga['url'] = preg_replace($sitiArray, $replacements1, $riga['url']);
var_dump($riga['url']);echo "<br>";
if (strlen($riga['url']) >= 19) {  
      $riga['url']=substr($riga['url'],0,16)."..."; 
}elseif($riga['url'] == "") { 
       $riga['url']= "<span style=\"color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span>";
}
var_dump($riga['url']);echo "<br>";
var_dump($riga['url1']);echo "<br>";
?>

poi un consiglio per i siti non consentiti
ricordati che meno o più semplicemente si scrive e meno errori si fanno, quindi invece di scrivere $sitiArray = array("/\bsito.it\b/i");
PHP:
<?php
function fai_pat($s){//funzione che puoi mettere se vuoi nel file funzioni che includi
	return "/\b".$s."\b/i";//crea il patner per il preg_replace
}

$siti=array('aaa.it','ccc.com','ddd.org');
var_dump($siti);echo "<br>";
$siti=array_map("fai_pat",$siti);
var_dump($siti);echo "<br>";
?>
in questo modo se devi aggiungere siti all'array scrivi semplicemente es
$sitiArray = array("sito.it", "altro_sito.com");
 
Ho messo così, ma anche se inserisco un sito non proibito, stampa sempre sito.it

PHP:
//vanno scritti senza il prefisso
$sitiArray = array (
"/\bsito.it\b/i"
);
//var_dump($sitiArray);echo "<br>"; 
$replacements1 = "<span class=\"badWord\">[Sito no good]</span>";
$tolgo_http_www=array('http://', 'www.'); 
?>

...

 $riga['url']="http://http://WWW.sito.it";//prova anche con un altro consentito 
      $riga['url']=str_ireplace($tolgo_http_www,"",$riga['url']); 
      $riga['url1']="http://".$riga['url']."";//non dovresti aggiungere http://www. ?? 
      $riga['url'] = preg_replace($sitiArray, $replacements1, $riga['url']);  
      if (strlen($riga['url']) >= 19) {   
      $riga['url']=substr($riga['url'],0,16)."...";  
      }elseif($riga['url'] == "") {  
       $riga['url']= "<span style=\"color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span>"; 
      } 
      echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\"      target=\"_blank\">".$riga['url']."</a></div>";
 
ciao
verifica quello che hai fatto perche a me i var_dump, con lo script che ti ho postato, restituiscono
array(1) { [0]=> string(14) "/\bsito.it\b/i" }
string(7) "sito.it"
string(14) "http://sito.it"
string(43) "[Sito no good]"
string(19) "string(14) "http://sito.it"

volevi che anche $riga['url1'] retisuisca "[Sito no good]" cioè l'ultimo var_dump?
 
ciao
verifica quello che hai fatto perche a me i var_dump, con lo script che ti ho postato, restituiscono


volevi che anche $riga['url1'] retisuisca "[Sito no good]" cioè l'ultimo var_dump?

Quando viene inserito il sito proibito deve stampare a video [Sito no good] possibilmente anche se inserito nel campo messaggio.

Questa riga serve? $riga['url']="http://http://WWW.sito.it";//prova anche con un altro consentito
 
ciao
Questa riga serve? $riga['url']="http://http://WWW.sito.it";//prova anche con un altro consentito
no era solo per fare il test, mettendo al suo posto es.
PHP:
$riga['url']="http://http://WWW.consentito.it";
ti da un altro risultato
array(1) { [0]=> string(14) "/\bsito.it\b/i" }
string(13) "consentito.it"
string(20) "http://consentito.it"
string(13) "consentito.it"
string(13) "consentito.it"
string(20) "http://consentito.it"
 
ciao
prova ad aggiungere questa modifica
PHP:
<?php
//.....
  if($riga['url'] != "[Sito no good]"){
		echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\"      target=\"_blank\">".$riga['url']."</a></div>";
	}else{
		echo "<span class=\"badWord\">[Sito no good]</span>";
	}
//....
?>
così a video se il sito è consentito ti stampa il nome e il link, altrimenti solo [Sito no good]
 
Così va meglio, stampa [Sito no good] ma è linkabile, si può renderlo non linkabile?

Poi ho provato con un sito normale lo stampa linkabile ma senza http://, si può aggiungerlo?

Questa riga non l'ho capita, cos'è quel commento? $riga['url1']="http://".$riga['url']."";//non dovresti aggiungere http://www. ??

PHP:
$riga['url']=str_ireplace($tolgo_http_www,"",$riga['url']); 
      $riga['url1']="http://".$riga['url']."";//non dovresti aggiungere http://www. ?? 
       //Se la stringa è 19 caratteri o più (con lo spazio interno), viene accorciata a 16 e mette i 3 puntini, TOT a video 19
      if (strlen($riga['url']) >= 19) {   
      $riga['url']=substr($riga['url'],0,16)."...";  
      }elseif($riga['url'] == "") {  
       $riga['url']= "<span style=\"color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span>"; 
       } 
       $riga['url'] = preg_replace($sitiArray, $replacements1, $riga['url']);
 if($riga['url'] != "[Sito no good]"){ 
      echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">".$riga['url']."</a></div>";
      }else{ 
        echo "<span class=\"badWord\">[Sito no good]</span>"; 
    }
 
ciao
quel commento è relativo al fatto del linkabile es. tu hai un sito consentito chiamto www . nel_mezzo_di_camin_di .org
allora
l'html deve risultare
HTML:
<div class="site"><span class="voci2">Sito:</span><a class="carattere-2" href="http://www.nel_mezzo_di_camin_di.org" target="_blank">nel_mezzo_...</a></div>
e a monitor (salvo i css)
Sito: nel_mezzo_...
risultante dalla
PHP:
echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">".$riga['url']."</a></div>";
ora affinche ti risulti a monitor il link come es sopra
in $riga['url1'] => http:// www . nel_mezzo_di_camin_di.org
e
in $riga['url'] => nel_mezzo_... (se più lungo di 16 caratteri)

da quello che stai facendo tu manca il www.
riassumendo
1) siti consenttiti
in $riga['url1'] devi avere http:// www. nome_sito .org
in $riga['url1'] devi avere nome_sito.org (se più corto di 16 caratteri) o nome_si... (se più lungo)
e l'html risultante come gia indicato
2) siti NON consentiti
sia in $riga['url1'] che in $riga['url1'] devi avere [Sito no good]
in questo caso l'html risulterà
HTML:
<span class="badWord">[Sito no good]</span>

quando parlo di html risultante è l'html che vedi a) chiamando la pagina, b) visualizziando con "visualizza sorgente" del bw
p.s.
metto gli spazi nei link per non farli qui vedere
 
Riassumendo, così mi da a video [Sito no good] linkabile
e se il sito è consentito lo scrive senza il prefisso


PHP:
      $riga['url']=str_ireplace($tolgo_http_www,"",$riga['url']); 
      $riga['url1']="http://".$riga['url']."";//Aggiunge http:// ai siti consentiti 
      //Se la stringa è 16 caratteri o più (con lo spazio interno), viene accorciata a 13 e mette i 3 puntini, TOT a video 16
      if (strlen($riga['url']) >= 16) {   
      $riga['url']=substr($riga['url'],0,13)."...";  
      }elseif($riga['url'] == "") {  
       $riga['url']= "<span style=\"color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span>"; 
      } 
      $riga['url'] = preg_replace($sitiArray, $replacements1, $riga['url']); 
      echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">".$riga['url']."</a></div>";
 
L'ideale sarebbe modificare il codice in modo che differenzia se è un sito da censurare o no, dopo questo deve rendere il sito censurato NON linkabile e mettere http:// davanti al sito accettato.

Codice che ho:

PHP:
 //Se la stringa è 16 caratteri o più (con lo spazio interno), viene accorciata a 13 e mette i 3 puntini, TOT a video 16
      if (strlen($riga['url']) >= 16) {   
      $riga['url']=substr($riga['url'],0,13)."...";  
      }elseif($riga['url'] == "") {  
       $riga['url']= "<span style=\"color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span>"; 
      } 
      $riga['url'] = preg_replace($sitiArray, $replacements1, $riga['url']); 
      $riga['url']=str_ireplace($tolgo_http_www,"",$riga['url']); 
      echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">".$riga['url']."</a></div>";
 
ciao
prova in questo modo

PHP:
<?php
//....
$replacements1="[Sito no good]";//metti solo [Sito no good] non i tag
$riga['url'] = preg_replace($sitiArray, $replacements1, $riga['url']); //quesye e tutto quanto per la midifica della varibile devono venirerina dell'if
$riga['url']=str_ireplace($tolgo_http_www,"",$riga['url']); 
//....

//....
if (strlen($riga['url']) !="" && $riga['url'] !="[Sito no good]") {   
	 $riga['url']=substr($riga['url'],0,13)."..."; 
	 echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">".$riga['url']."</a></div>";  
}elseif($riga['url'] == "[Sito no good]") {  
	 echo "<span class=\"badWord\">[Sito no good]</span>";
}else{
	echo "<span style=\"color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span>";
} 
//...
?>
però mi viene in mente che il [Sito no good] sarebbe da verificare prima dell'inserimento in tabella in modo che in tabella ti trovi o l'url o [Sito no good]

quindi quando visualizzi
1) verifichi $riga['url']
if == [Sito no good] stampi solamente "<span class=\"badWord\">[Sito no good]</span>"
elseif == vuoto stampi solamente "<span style=\"color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span>"
else
fai tutte le modifiche togli http... lo accorci e stampi "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">".$riga['url']."</a></div>"

facendo così ti semplificheresti la vita
 
Qualcosa non quadra questo

PHP:
$replacements2="[Sito censurato]";
$riga['url'] = preg_replace($sitiArray, $replacements2, $riga['url']); 
$riga['url'] = str_ireplace($tolgo_http_www,"",$riga['url']);  
if (strlen($riga['url']) !="" && $riga['url'] !="[Sito censurato]") {    
     $riga['url']=substr($riga['url'],0,13)."...";  
     echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">".$riga['url']."</a></div>";   
}elseif($riga['url'] == "[Sito censurato]") {   
     echo "<span class=\"badWord\">[Sito censurato]</span>"; 
}else{ 
echo "<span style=\"color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span>"; 
}

Stampa

Schermata 02-2456336 alle 22.23.19.png
 
Il più è fatto ho sistemato i css e ho messo http://, ora ci sono ancora 2 cose:

1. se metto il puntatore sul link, nella Barra di Stato visualizza il link del mio sito e non quello reale
2. a questo $riga['url']=substr($riga['url'],0,13)."..."; gli manca la prima parte if (strlen($riga['url']) >= 16) { , come lo metto?

PHP:
$replacements2="[Sito censurato]";
$riga['url'] = preg_replace($sitiArray, $replacements2, $riga['url']); 
$riga['url'] = str_ireplace($tolgo_http_www,"",$riga['url']);  
if (strlen($riga['url']) !="" && $riga['url'] !="[Sito censurato]") {    
     $riga['url']=substr($riga['url'],0,13)."...";  
     echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">http://".$riga['url']."</a></div>";   
}
elseif($riga['url'] == "[Sito censurato]") {   
     echo "<div class=\"site\"><span class=\"voci2\">Sito:&nbsp;&nbsp;</span><span class=\"badWord\">[Sito censurato]</span></div>"; 
}
else { 
    echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><span style=\"margin-left:11px; color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span></div>"; 
}
 
Ultima modifica:
ciao
ecco
PHP:
<?php
//....
$replacements2="[Sito censurato]";
$riga['url'] = preg_replace($sitiArray, $replacements2, $riga['url']); 
$riga['url'] = str_ireplace($tolgo_http_www,"",$riga['url']);  
if ($riga['url'] !="" && $riga['url'] !="[Sito censurato]") { //strlen non qui
     if(strlen($riga['url']>=16)){$riga['url']=substr($riga['url'],0,13)."...";}//qui
     echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">http://".$riga['url']."</a></div>";   
}
elseif($riga['url'] == "[Sito censurato]") {   
     echo "<div class=\"site\"><span class=\"voci2\">Sito:&nbsp;&nbsp;</span><span class=\"badWord\">[Sito censurato]</span></div>"; 
}
else { 
    echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><span style=\"margin-left:11px; color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span></div>"; 
} 
//.....
?>
poi un'ossevazione estetica: quella scritta [Sito censurato] è a mio parere piuttosto brutta, non sarebbe meglio mettere a monitor una semplide -
eventualmente di colore diverso da sito vuoto in modo che tu lo possa distinguere?

edit
hai risolto per il link?
se no metti il solito var_dump per verificare cosa c'è in $riga['url']
ecco mi sono dimenticato di mettere $riga['url1'] aggiungilo
 
Ultima modifica:
ciao
ecco
PHP:
<?php
//....
$replacements2="[Sito censurato]";
$riga['url'] = preg_replace($sitiArray, $replacements2, $riga['url']); 
$riga['url'] = str_ireplace($tolgo_http_www,"",$riga['url']);  
if ($riga['url'] !="" && $riga['url'] !="[Sito censurato]") { //strlen non qui
     if(strlen($riga['url']>=16)){$riga['url']=substr($riga['url'],0,13)."...";}//qui
     echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">http://".$riga['url']."</a></div>";   
}
elseif($riga['url'] == "[Sito censurato]") {   
     echo "<div class=\"site\"><span class=\"voci2\">Sito:&nbsp;&nbsp;</span><span class=\"badWord\">[Sito censurato]</span></div>"; 
}
else { 
    echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><span style=\"margin-left:11px; color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span></div>"; 
} 
//.....
?>
poi un'ossevazione estetica: quella scritta [Sito censurato] è a mio parere piuttosto brutta, non sarebbe meglio mettere a monitor una semplide -
eventualmente di colore diverso da sito vuoto in modo che tu lo possa distinguere?

edit
hai risolto per il link?
se no metti il solito var_dump per verificare cosa c'è in $riga['url']
ecco mi sono dimenticato di mettere $riga['url1'] aggiungilo

Non ho risolto per il link, questo $riga['url1'] e var_dump dove li metto?

Ho visto che non mi accorcia più l'url
 
ciao
prima il var_dump poi: appena prima di $replacements2="[Sito censurato]";
poi mi dici cosa risulta anche se non capisco perche non accorcia
 
Messo così non accorcia l'url e linka il mio sito (non quello del link)

PHP:
$replacements2="[Sito censurato]";
$riga['url'] = preg_replace($sitiArray, $replacements2, $riga['url']); 
$riga['url'] = str_ireplace($tolgo_http_www,"",$riga['url']);  
if ($riga['url'] !="" && $riga['url'] !="[Sito censurato]") {
     if(strlen($riga['url'] >=16)) {
     $riga['url']=substr($riga['url'],0,13)."...";
     }
     echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">http://".$riga['url']."</a></div>";   
    }
    elseif($riga['url'] == "[Sito censurato]") {   
    echo "<div class=\"site\"><span class=\"voci2\">Sito:&nbsp;&nbsp;</span><span class=\"badWord\">[Sito censurato]</span></div>"; 
    }
    else { 
    echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><span style=\"margin-left:11px; color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span></div>"; 
    }
 
ciao
prova
PHP:
<?php
//....
//qundi qui hai (dal tuo var_dump) "www.mmm.kk"
$replacements2="[Sito censurato]";
$riga['url'] = preg_replace($sitiArray, $replacements2, $riga['url']); 
$riga['url'] = str_ireplace($tolgo_http_www,"",$riga['url']);  //qui $riga['url'] diventa mmm.kk
if ($riga['url'] !="" && $riga['url'] !="[Sito censurato]") {
     //questa è la parte eseguita SOLO se il sito è consentito e non vuoto
	 //e qui (mia dimenticanza) manca la formazione del link per l'href
	 $riga['url1']="http://www.".$riga['url'];//da farsi prima che venga eventualmente accorciato
	 //poi eventualmente controllo la lunghezza
	 var_dump($riga['url']);//poi lo togli
	 //comunque prova a mettere al posto di >=6 
	 if(strlen($riga['url'] >5)) {//qui dovrebbe accorciare (prova con es. www.pinco_pallo_e_sempronio.com (attento il www. qui non c'è)
     	$riga['url']=substr($riga['url'],0,3)."...";
     }
     echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">http://".$riga['url']."</a></div>";   
    }
    elseif($riga['url'] == "[Sito censurato]") {   
    	echo "<div class=\"site\"><span class=\"voci2\">Sito:&nbsp;&nbsp;</span><span class=\"badWord\">[Sito censurato]</span></div>"; 
    }
    else { 
    	echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><span style=\"margin-left:11px; color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span></div>"; 
    }  
//....
?>
 

Discussioni simili