Guestbook con file singolo o multipli?

  • Creatore Discussione Creatore Discussione Shyson
  • Data di inizio Data di inizio
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>"; 
    }  
//....
?>

Non accorcia e con var_dump stampa come al post #118, però ora mettendo sopra il mouse si linka il sito corretto
 
ciao
attento perè che quel var_dumo (che dici come al #18) non dovrebbe darti www.mmm.kk, ma mmm.kk
se non ti da mmm.kk verifica cosa hai messo nell'array $tolgo_http_www, dovrebbe essere così
PHP:
$tolgo_http_www=array('http://','www.');

dopo òa verifica modifica il var_dum

PHP:
var_dump($riga['url'],strlen($riga['url']));//poi lo togli

dovrebbe darti la lungezza dell'url senza ul www. es. per mmm.kk: (string)6 "mmm.kk" (int)6 (o simile)
 
ciao
attento perè che quel var_dumo (che dici come al #18) non dovrebbe darti www.mmm.kk, ma mmm.kk
se non ti da mmm.kk verifica cosa hai messo nell'array $tolgo_http_www, dovrebbe essere così
PHP:
$tolgo_http_www=array('http://','www.');

dopo òa verifica modifica il var_dum

PHP:
var_dump($riga['url'],strlen($riga['url']));//poi lo togli

dovrebbe darti la lungezza dell'url senza ul www. es. per mmm.kk: (string)6 "mmm.kk" (int)6 (o simile)

Qualcosa non quadra, io ho questo

$riga['url'] = str_ireplace($tolgo_http_www,"",$riga['url']);

questo è nell'array

$tolgo_http_www=array('http://','www.');


EDIT

string(11) "www.sito.it" int(11)
 
Ultima modifica:
ciao
ecco, su un pag a parte guarda il seguente script di prova che mi sembra proprio che funzi (l'ho testato e ritestato)
al posto di preg_replace ho msso tutti str_ireplace (mi sembra che funzi meglio e è più semplice modificare i valori di $sitiArray)
PHP:
<?php
//serie di prove
$sitiArray = array ("siti.it","soti.com");//scrivi senza http e www
$replacements2 = "[Sito no good]";
$tolgo_http_www=array('http://', 'www.');
//primo test
$riga['url']="http://www.siti.it";
$riga['url'] = str_ireplace($tolgo_http_www,'',$riga['url']);
var_dump($riga['url']); echo "1.1<br>";
$riga['url'] = str_ireplace($sitiArray, $replacements2, $riga['url']);
var_dump($riga['url']); echo "1.2<br>";
//secondo test
$riga['url']="http://WWW.pi.it";
$riga['url'] = str_ireplace($sitiArray, $replacements2, $riga['url']);
$riga['url'] = str_ireplace($tolgo_http_www,'',$riga['url']);
var_dump($riga['url']); echo "2.1<br>";
if(strlen($riga['url'])>5){$riga['url']=substr($riga['url'],0,3)."...";}
var_dump($riga['url']); echo "2.2<br>";
//terzo test
$riga['url']="http://WWW.pinco_pallo.it";
$riga['url'] = str_ireplace($sitiArray, $replacements2, $riga['url']);
$riga['url'] = str_ireplace($tolgo_http_www,'',$riga['url']);
var_dump($riga['url']); echo "3.1<br>";
if(strlen($riga['url'])>5){$riga['url']=substr($riga['url'],0,3)."...";}
var_dump($riga['url']); echo "3.2<br>";
//quarto test
$riga['url']="http://www.soti.com";
$riga['url'] = str_ireplace($tolgo_http_www,'',$riga['url']);
var_dump($riga['url']); echo "4.1<br>";
$riga['url'] = str_ireplace($sitiArray, $replacements2, $riga['url']);
var_dump($riga['url']); echo "4.2<br>";
?>

e questo è quanto devi sostituire
PHP:
<?php
//.........
$sitiArray = array ("siti.it","soti.com");//scrivi senza http e www
$replacements2 = "[Sito no good]";
$tolgo_http_www=array('http://', 'www.');
$riga['url'] = trim(str_ireplace($tolgo_http_www,'',$riga['url']));//1) metto un trim per sicurezza 2) per vuoto, nel str_ireplece, usa gli apici singoli ''
$riga['url'] = str_ireplace($sitiArray, $replacements2, $riga['url']);
if($riga['url'] == ""){
	$stampa="<div class=\"site\"><span class=\"voci2\">Sito:</span><span style=\"margin-left:11px; color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span></div>";
}elseif($riga['url'] == "[Sito no good]"){
	$stampa="<div class=\"site\"><span class=\"voci2\">Sito:&nbsp;&nbsp;</span><span class=\"badWord\">[Sito censurato]</span></div>";
}else{
	$riga['url1']="http://www.".$riga['url'];
	if(strlen($riga['url']) > 5){
		$riga['url']=substr($riga['url'],0,3)."...";
	}
	$stampa="<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">http://".$riga['url']."</a></div>";
}
echo $stampa;
//......
?>

p.s.
per me sarebbe più "migliore" per i siti censurati visualizzare così

PHP:
$stampa="<div class=\"site\"><span class=\"voci2\">Sito:&nbsp;&nbsp;</span><span class=\"badWord\">[***]</span></div>";
 
Strano, non stampa [Sito no good], stampa l'url del sito proibito :confused:

PHP:
$replacements2 = "[Sito no good]"; 
$tolgo_http_www=array('http://', 'www.'); 
$riga['url'] = trim(str_ireplace($tolgo_http_www,'',$riga['url']));
$riga['url'] = str_ireplace($sitiArray, $replacements2, $riga['url']); 
if($riga['url'] == "") { 
    echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><span style=\"margin-left:11px; color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span></div>"; 
}elseif($riga['url'] == "[Sito no good]"){ 
    echo "<div class=\"site\"><span class=\"voci2\">Sito:&nbsp;&nbsp;</span><span class=\"badWord\">[Sito censurato]</span></div>"; 
}
else { 
    $riga['url1']="http://www.".$riga['url'];
    if(strlen($riga['url']) > 12){ 
        $riga['url']=substr($riga['url'],0,9)."..."; 
    } 
    echo "<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\">http://".$riga['url']."</a></div>"; 
}
 
Prova a vedere, ora sembra funzionare, ho sostituito

PHP:
$riga['url'] = str_ireplace($sitiArray, $replacements2, $riga['url']);


con

PHP:
$riga['url'] = preg_replace($sitiArray, $replacements2, $riga['url']);

Perciò questo non serve più nell'array esterno visto che è già in questo codice

$tolgo_http_www = array('http://', 'www.');
 
Ultima modifica:
ciao
perche non uso quello che ti ho postato che funzia perfettamente?
PHP:
<?php
//.........se provi a decommetare una alla volta e commentare le altre vedi che funzia perfettamente
//$riga['url']="siti.it";//stampa [Sito censurato]
//$riga['url']="bb.it";//stampa il link con bb.it
//$riga['url']="pinco_pallo.it";//stampa il link con pin...
$riga['url']="";//stampa -
//*****fine prove le 4 righe sopra poi le togli
$sitiArray = array ("siti.it","soti.com");//scrivi senza http e www
$replacements2 = "[Sito no good]";
$tolgo_http_www=array('http://', 'www.');
$riga['url'] = trim(str_ireplace($tolgo_http_www,'',$riga['url']));//1) metto un trim per sicurezza 2) per vuoto, nel str_ireplece, usa gli apici singoli ''
$riga['url'] = str_ireplace($sitiArray, $replacements2, $riga['url']);
//var_dump($riga['url']); echo "<br>";
if($riga['url'] == ""){
    $stampa="<div class=\"site\"><span class=\"voci2\">Sito:</span><span style=\"margin-left:11px; color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span></div>";
}elseif($riga['url'] == "[Sito no good]"){
    $stampa="<div class=\"site\"><span class=\"voci2\">Sito:&nbsp;&nbsp;</span><span class=\"badWord\">[Sito censurato]</span></div>";
}else{
    $riga['url1']="http://www.".$riga['url'];
    if(strlen($riga['url']) > 5){
        $riga['url']=substr($riga['url'],0,3)."...";
    }
    $stampa="<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\"> ".$riga['url']."</a></div>";
}
echo $stampa;
//......
?>
 
ciao
perche non uso quello che ti ho postato che funzia perfettamente?
PHP:
<?php
//.........se provi a decommetare una alla volta e commentare le altre vedi che funzia perfettamente
//$riga['url']="siti.it";//stampa [Sito censurato]
//$riga['url']="bb.it";//stampa il link con bb.it
//$riga['url']="pinco_pallo.it";//stampa il link con pin...
$riga['url']="";//stampa -
//*****fine prove le 4 righe sopra poi le togli
$sitiArray = array ("siti.it","soti.com");//scrivi senza http e www
$replacements2 = "[Sito no good]";
$tolgo_http_www=array('http://', 'www.');
$riga['url'] = trim(str_ireplace($tolgo_http_www,'',$riga['url']));//1) metto un trim per sicurezza 2) per vuoto, nel str_ireplece, usa gli apici singoli ''
$riga['url'] = str_ireplace($sitiArray, $replacements2, $riga['url']);
//var_dump($riga['url']); echo "<br>";
if($riga['url'] == ""){
    $stampa="<div class=\"site\"><span class=\"voci2\">Sito:</span><span style=\"margin-left:11px; color:#a8a8a8; text-shadow:0px 1px 0px white;\">-</span></div>";
}elseif($riga['url'] == "[Sito no good]"){
    $stampa="<div class=\"site\"><span class=\"voci2\">Sito:&nbsp;&nbsp;</span><span class=\"badWord\">[Sito censurato]</span></div>";
}else{
    $riga['url1']="http://www.".$riga['url'];
    if(strlen($riga['url']) > 5){
        $riga['url']=substr($riga['url'],0,3)."...";
    }
    $stampa="<div class=\"site\"><span class=\"voci2\">Sito:</span><a class=\"carattere-2\" href=\"".$riga['url1']."\" target=\"_blank\"> ".$riga['url']."</a></div>";
}
echo $stampa;
//......
?>

L'ho provato, ma non funzionava, non stampava [Sito non good], ho dovuto sostituire la stringa
 
Il mio funziona perché ho il \b, se lo tolgo funziona il tuo

PHP:
//Questo mette /\b"sito proibito"\b/i" ai siti proibiti
function sitoProibito($s1){
return "/\b".$s1."\b/i"; 
} 
$sitiArray=array_map("sitoProibito",$sitiArray);
 
Ultima modifica:
Ora sto cercando di applicare lo stesso principio (sito proibito e sito linkabile) al campo messaggio, ma qui non è così semplice, lui stampa http://[Sito no good], anche qui c'è da togliere il prefisso, mentre invece se è un sito normale lo stampa giusto, qui l'url non deve essere accorciato coi 3 puntini.

PHP:
 $riga['messaggio'] = preg_replace($paroleArray, $replacements, $riga['messaggio']);
       $riga['messaggio'] = preg_replace($sitiArray, $replacements1, $riga['messaggio']);
       //Rende l'URL linkabile nel campo messaggio, va messo qui
       $riga['messaggio'] = preg_replace("/(ftp(s|es)?:\/\/|sftp:\/\/|http(s)?:\/\/|www\.)[A-Za-z0-9_!#$%&;:.,*+=?^{|}()~\/-]+(\.[a-z]{2,6})((\/)[-_!#$%&;:.,*+=?^{|}()~A-Za-z0-9\/]*)*/","<a class=\"carattereText\" href=\"$0\">$0</a>",$riga['messaggio']);                                                                                       
     
 echo "<span class=\"carattereMess\">".$messaggio = $riga['messaggio']."</span>";
 
ciao
potresti provare ad aggingere se risulta sempre http://[Sito no good]
PHP:
<?php
//.....
$riga['messaggio'] = preg_replace("/(ftp(s|es)?:\/\/|sftp:\/\/|http(s)?:\/\/|www\.)[A-Za-z0-9_!#$%&;:.,*+=?^{|}()~\/-]+(\.[a-z]{2,6})((\/)[-_!#$%&;:.,*+=?^{|}()~A-Za-z0-9\/]*)*/","<a class=\"carattereText\" href=\"$0\">$0</a>",$riga['messaggio']);                                                                                       
$riga['messaggio'] = str_ireplace("http://[Sito no good]", "[Sito no good]", $riga['messaggio']);
echo "<span class=\"carattereMess\">".$messaggio = $riga['messaggio']."</span>";
//....
?>
 
Così ci sarebbe da togliere http:// ai siti no good, poi sembrerebbe a posto

PHP:
       $riga['messaggio'] = preg_replace($sitiArray, $replacements2, $riga['messaggio']);
       //Rende l'URL linkabile nel campo messaggio, va messo qui
       $riga['messaggio'] = preg_replace("/(ftp(s|es)?:\/\/|sftp:\/\/|http(s)?:\/\/|www\.)[A-Za-z0-9_!#$%&;:.,*+=?^{|}()~\/-]+(\.[a-z]{2,6})((\/)[-_!#$%&;:.,*+=?^{|}()~A-Za-z0-9\/]*)*/","<a class=\"carattereText\" href=\"$0\">$0</a>",$riga['messaggio']);                                                                                       
       echo "<span class=\"carattereMess\">".$messaggio = $riga['messaggio']."</span>";
 
ciao
evidentemente gli slash danno fastidio
metti così

PHP:
$riga['messaggio'] = str_ireplace("http".chr(47).chr(47).":", "", $riga['messaggio']);
 
ciao
sei sicuro?
PHP:
<?php
$riga['messaggio']="nel mezzi di camin di nostra vita http//:[Sito no good] mi ritrovai per una selva oscura che....";
$riga['messaggio'] = preg_replace("/(ftp(s|es)?:\/\/|sftp:\/\/|http(s)?:\/\/|www\.)[A-Za-z0-9_!#$%&;:.,*+=?^{|}()~\/-]+(\.[a-z]{2,6})((\/)[-_!#$%&;:.,*+=?^{|}()~A-Za-z0-9\/]*)*/","<a class=\"carattereText\" href=\"$0\">$0</a>",$riga['messaggio']);                                                                                       
var_dump($riga['messaggio']);echo "<br>";
$riga['messaggio'] = str_ireplace("http".chr(47).chr(47).":", "", $riga['messaggio']);
var_dump($riga['messaggio']);echo "<br>";
utput:
string(96) "nel mezzi di camin di nostra vita http//:[Sito no good] mi ritrovai per una selva oscura che...."
string(89) "nel mezzi di camin di nostra vita [Sito no good] mi ritrovai per una selva oscura che...."
o in messaggi non hai http//:[Sito no good]
 
ciao
sei sicuro?
PHP:
<?php
$riga['messaggio']="nel mezzi di camin di nostra vita http//:[Sito no good] mi ritrovai per una selva oscura che....";
$riga['messaggio'] = preg_replace("/(ftp(s|es)?:\/\/|sftp:\/\/|http(s)?:\/\/|www\.)[A-Za-z0-9_!#$%&;:.,*+=?^{|}()~\/-]+(\.[a-z]{2,6})((\/)[-_!#$%&;:.,*+=?^{|}()~A-Za-z0-9\/]*)*/","<a class=\"carattereText\" href=\"$0\">$0</a>",$riga['messaggio']);                                                                                       
var_dump($riga['messaggio']);echo "<br>";
$riga['messaggio'] = str_ireplace("http".chr(47).chr(47).":", "", $riga['messaggio']);
var_dump($riga['messaggio']);echo "<br>";
utput:

o in messaggi non hai http//:[Sito no good]

A video

Schermata 02-2456338 alle 21.37.16.png
 
La cosa che non capisco è perché non toglie http://, ho fatto una prova: ho messo questo codice e funziona, le xxx diventano 8888

PHP:
$riga['messaggio'] = str_ireplace("xxx", "8888", $riga['messaggio']);
 

Discussioni simili