- Home
- Categorie
- Coding e Sistemistica
- PHP
- Implementare funzione "alt" su messaggi.php di chat
-
niente anche con il nuovo pezzo di codice compaiono sempre le due parentesi ma senza nulla dentro.:(
-
Aggiungi la riga evidenziata
[php]
$dati_utente=explode("|",$rows_file_ord*);
$nick=$dati_utente[0];
$nick_orig=$nick; //aggiungi
$msg=$dati_utente[1];
$nick=stripslashes($nick);
$msg=stripslashes($msg);
$nick = str_replace('[em1]','<img src="emoticons/em1.gif">',$nick);
$msg = str_replace('[em1]','<img src="emoticons/em1.gif">',$msg);
[/php]e modifica
[php]
echo "<b><font face="verdana" size="2" color="#000000"><a title="".$rows_utenti_info[$nick_orig]['provincia']."(".$rows_utenti_info[$nick_orig]['citta'].")">$nick</a></font>: </b>"."<font face="verdana" size="2">".$msg."</font><br>";
[/php]
-
@ayrton2001 said:
Aggiungi la riga evidenziata
[php]
$dati_utente=explode("|",$rows_file_ord*);
$nick=$dati_utente[0];
$nick_orig=$nick; //aggiungi
$msg=$dati_utente[1];
$nick=stripslashes($nick);
$msg=stripslashes($msg);
$nick = str_replace('[em1]','<img src="emoticons/em1.gif">',$nick);
$msg = str_replace('[em1]','<img src="emoticons/em1.gif">',$msg);
[/php]e modifica[php]
echo "<b><font face="verdana" size="2" color="#000000"><a title="".$rows_utenti_info[$nick_orig]['provincia']."(".$rows_utenti_info[$nick_orig]['citta'].")">$nick</a></font>: </b>"."<font face="verdana" size="2">".$msg."</font><br>";
[/php]
inoltre mi dici come è formattato il file $file_mess ?
basta copiarmi due righe
-
allora con i nuovi pezzi di codice appaiono sempre le due () senza nulla dentro, per via della formattazione del file messaggi spero tu ti riferisca al file messaggi.txt:
eccolo:
[em4] [21:59 - 26/04/08] gianluca(ud)|Ciao a tutti.
[em4] [21:59 - 26/04/08] marco(pd)|ciao gianluca
[em5] [21:59 - 26/04/08] gianni(tv)|ciao gianluca!...
[em4] [22:00 - 26/04/08] marco(pd)|ora vi saluto ciao a domani
[em5] [22:00 - 26/04/08] gianni(tv)|ciao marco, a domani...
[em4] [22:05 - 26/04/08] gianluca(ud)|In sostanza almeno anche lunedì il tempo dovrebbe reggere.
[em5] [22:07 - 26/04/08] gianni(tv)|si, e non credo farà molto nemmeno per i giorni successivi, vedo bene le prealpi e le alpi, insomma un po nordica ecco...
[em4] [22:08 - 26/04/08] gianluca(ud)|Non mi sbilancio per il momento: intanto mi godo il bel tempo che c'è stato finalmente oggi e che ci sarà domani.
[em5] [22:09 - 26/04/08] gianni(tv)|esatto, ieri mi son visto pure il temporale, quindi per qualche giorno vada pure il sole...
[em4] [22:12 - 26/04/08] gianluca(ud)|Ne riparliamo domani della prossima settimana. Ciao!
[em5] [22:12 - 26/04/08] gianni(tv)|ciao gianluca e buona domenica.
[em4] [22:12 - 26/04/08] gianluca(ud)|Grazie, anche ate.nota che alla fine di ogni frase di ogni utente c'è anche una specie di quadratino che separa ogni messaggio ma postandolo qui non si vede.
-
@giulio3x said:
allora con i nuovi pezzi di codice appaiono sempre le due () senza nulla dentro, per via della formattazione del file messaggi spero tu ti riferisca al file messaggi.txt:
eccolo:
[em4] [21:59 - 26/04/08] gianluca(ud)|Ciao a tutti.
[em4] [21:59 - 26/04/08] marco(pd)|ciao gianluca
[em5] [21:59 - 26/04/08] gianni(tv)|ciao gianluca!...
[em4] [22:00 - 26/04/08] marco(pd)|ora vi saluto ciao a domani
[em5] [22:00 - 26/04/08] gianni(tv)|ciao marco, a domani...
[em4] [22:05 - 26/04/08] gianluca(ud)|In sostanza almeno anche lunedì il tempo dovrebbe reggere.
[em5] [22:07 - 26/04/08] gianni(tv)|si, e non credo farà molto nemmeno per i giorni successivi, vedo bene le prealpi e le alpi, insomma un po nordica ecco...
[em4] [22:08 - 26/04/08] gianluca(ud)|Non mi sbilancio per il momento: intanto mi godo il bel tempo che c'è stato finalmente oggi e che ci sarà domani.
[em5] [22:09 - 26/04/08] gianni(tv)|esatto, ieri mi son visto pure il temporale, quindi per qualche giorno vada pure il sole...
[em4] [22:12 - 26/04/08] gianluca(ud)|Ne riparliamo domani della prossima settimana. Ciao!
[em5] [22:12 - 26/04/08] gianni(tv)|ciao gianluca e buona domenica.
[em4] [22:12 - 26/04/08] gianluca(ud)|Grazie, anche ate.nota che alla fine di ogni frase di ogni utente c'è anche una specie di quadratino che separa ogni messaggio ma postandolo qui non si vede.
Trovata la magagna
Aggiungi e modifica le righe indicate:[PHP]
$dati_utente=explode("|",$rows_file_ord*);
$nick=$dati_utente[0];
eregi("[(.)] [(.)] (.)((.))", $nick, $regnick); //aggiungi
$nick_orig=$regnick; //modifica
$msg=$dati_utente[1];
$nick=stripslashes($nick);
$msg=stripslashes($msg);
$nick = str_replace('[em1]','<img src="emoticons/em1.gif">',$nick);
$msg = str_replace('[em1]','<img src="emoticons/em1.gif">',$msg);
[/PHP]Inoltre se non va copia tutto il codice con tutte le modifiche fino a qui fatte
-
intanto grazie, però nemmeno così funziona sempre solo () appare...
facciamo così ti posto il codice come lo ho adesso e vedi com'è:
[PHP]<html>
<head>
<title>Messaggi degli utenti</title>
<?php
include("config.php");
echo "<meta http-equiv="refresh" content="$time_refresh">";
?>
</head>
<body bgcolor="white">
<?php
//Creo l'array dove inserirò le informazioni
$rows_utenti_info = array();
//Leggo il file utenti
$rows_utenti=$file_reg;
foreach($rows_utenti AS $v)
{
$tmp = explode('|', $v);
$rows_utenti_info[$tmp[0]]['$citta'] = $tmp[6];
$rows_utenti_info[$tmp[0]]['$provincia'] = $tmp[6];
}if (!(file_exists($file_mess))) {
$fpw = fopen($file_mess,"w"); fclose($fpw);
}
$rows_file=file($file_mess);
$rows_file_ord=array_reverse($rows_file);
$count=count($rows_file_ord);
for ($i=0;($i<$count && $i<$num_messag);$i++)
{
$dati_utente=explode("|",$rows_file_ord*);
$nick=$dati_utente[0];
eregi("[(.)] [(.)] (.)((.))", $nick, $regnick);
$nick_orig=$regnick;
$msg=$dati_utente[1];
$nick=stripslashes($nick);
$msg=stripslashes($msg);
$nick = str_replace('[em1]','<img src="emoticons/em1.gif">',$nick);
$msg = str_replace('[em1]','<img src="emoticons/em1.gif">',$msg);
for ($x=1;$x<27;$x++)
{
$img="em".$x;
$img2="[".$img."]";
$path="<img src="emoticons/$img.gif">";
$msg = str_replace("$img2","$path",$msg);
}
for ($x=1;$x<27;$x++)
{
$img="em".$x;
$img2="[".$img."]";
$path="<img src="emoticons/$img.gif">";
$nick = str_replace("$img2","$path",$nick);
}echo "<b><font face=\"verdana\" size=\"2\" color=\"#000000\"><a title=\"".$rows_utenti_info[$nick_orig]['$provincia']."(".$rows_utenti_info[$nick_orig]['$citta'].")\">$nick</a></font>: </b>"."<font face=\"verdana\" size=\"2\">".$msg."</font><br>";
}
?>
</body>
</html>[/PHP]
-
@giulio3x said:
intanto grazie, però nemmeno così funziona sempre solo () appare...
facciamo così ti posto il codice come lo ho adesso e vedi com'è:
[php]<html>
<head>
<title>Messaggi degli utenti</title>
<?php
include("config.php");
echo "<meta http-equiv="refresh" content="$time_refresh">";
?>
</head>
<body bgcolor="white">
<?php
//Creo l'array dove inserirò le informazioni
$rows_utenti_info = array();
//Leggo il file utenti
$rows_utenti=$file_reg;
foreach($rows_utenti AS $v)
{
$tmp = explode('|', $v);
$rows_utenti_info[$tmp[0]]['$citta'] = $tmp[6];
$rows_utenti_info[$tmp[0]]['$provincia'] = $tmp[6];
}if (!(file_exists($file_mess))) {
$fpw = fopen($file_mess,"w"); fclose($fpw);
}
$rows_file=file($file_mess);
$rows_file_ord=array_reverse($rows_file);
$count=count($rows_file_ord);
for ($i=0;($i<$count && $i<$num_messag);$i++)
{
$dati_utente=explode("|",$rows_file_ord*);
$nick=$dati_utente[0];
eregi("[(.)] [(.)] (.)((.))", $nick, $regnick);
$nick_orig=$regnick;
$msg=$dati_utente[1];
$nick=stripslashes($nick);
$msg=stripslashes($msg);
$nick = str_replace('[em1]','<img src="emoticons/em1.gif">',$nick);
$msg = str_replace('[em1]','<img src="emoticons/em1.gif">',$msg);
for ($x=1;$x<27;$x++)
{
$img="em".$x;
$img2="[".$img."]";
$path="<img src="emoticons/$img.gif">";
$msg = str_replace("$img2","$path",$msg);
}
for ($x=1;$x<27;$x++)
{
$img="em".$x;
$img2="[".$img."]";
$path="<img src="emoticons/$img.gif">";
$nick = str_replace("$img2","$path",$nick);
}echo "<b><font face=\"verdana\" size=\"2\" color=\"#000000\"><a title=\"".$rows_utenti_info[$nick_orig]['$provincia']."(".$rows_utenti_info[$nick_orig]['$citta'].")\">$nick</a></font>: </b>"."<font face=\"verdana\" size=\"2\">".$msg."</font><br>";
}
?>
</body>
</html>[/php]Altro errore:
//Leggo il file utenti
$rows_utenti=$file_reg;deve essere
$rows_utenti=file($file_reg);
-
no nemmeno mettendo $rows_utenti=file($file_reg); funziona sempre solo ()
l'errore secondo me è da un'altra parte e secondo me sta qui:
[PHP]foreach($rows_utenti AS $v)
{
$tmp = explode('|', $v);
$rows_utenti_info[$tmp[0]]['$citta'] = $tmp[6];
$rows_utenti_info[$tmp[0]]['$provincia'] = $tmp[6];
} [/PHP]
-
@giulio3x said:
no nemmeno mettendo $rows_utenti=file($file_reg); funziona sempre solo ()
l'errore secondo me è da un'altra parte e secondo me sta qui:
[php]foreach($rows_utenti AS $v)
{
$tmp = explode('|', $v);
$rows_utenti_info[$tmp[0]]['$citta'] = $tmp[6];
$rows_utenti_info[$tmp[0]]['$provincia'] = $tmp[6];
} [/php]Scrivi:
[php]foreach($rows_utenti AS $v)
{
print_r($v); //Add
echo "<br />"; //Add
$tmp = explode('|', $v);
$rows_utenti_info[$tmp[0]]['$citta'] = $tmp[6];
$rows_utenti_info[$tmp[0]]['$provincia'] = $tmp[6];
} [/php]
così vediamo cosa contiene ogni riga.
copiami il risultato.
-
appare questo:
mar|maFVp8RZN29ZI|[email protected]|34|maschio|de|rt|151.35.8.68|15:28 - 05/04/08
[19:32 - 09/05/08] mar: ciao1
[21:41 - 07/05/08] mar: adesso...visto che sto lavorando su una chat a parte mi sono registrato a nome "mar" (non ci sono altri utenti) e appare quindi sulla pagina dei messaggi tutta la banda di dati di mar e sotto compaiono i messaggi degli utenti, anche se poi provo a scrivere un messaggio questo compare ma sopra rimane sempre la frase con i dati...
-
@giulio3x said:
appare questo:
mar|maFVp8RZN29ZI|[email protected]|34|maschio|de|rt|151.35.8.68|15:28 - 05/04/08
[19:32 - 09/05/08] mar: ciao1
[21:41 - 07/05/08] mar: adesso...visto che sto lavorando su una chat a parte mi sono registrato a nome "mar" (non ci sono altri utenti) e appare quindi sulla pagina dei messaggi tutta la banda di dati di mar e sotto compaiono i messaggi degli utenti, anche se poi provo a scrivere un messaggio questo compare ma sopra rimane sempre la frase con i dati...
Fin qui è ok.
ora aggiungi la riga segnata con //Aggiungi:
[PHP]
$dati_utente=explode("|",$rows_file_ord*);
$nick=$dati_utente[0];
eregi("[(.)] [(.)] (.)((.))", $nick, $regnick);
$nick_orig=$regnick;
echo $nick_orig."<br />"; //Aggiungi
$msg=$dati_utente[1];
$nick=stripslashes($nick);
$msg=stripslashes($msg);
[/PHP]
-
mah con questa aggiunta non succede nulla... tutto come prima.
-
@giulio3x said:
mah con questa aggiunta non succede nulla... tutto come prima.
altra magagna.
cambia
$nick_orig=$regnick;
con
$nick_orig=$regnick[3];
-
@ayrton2001 said:
altra magagna.
cambia
$nick_orig=$regnick;
con
$nick_orig=$regnick[3];niente non cambia nulla da prima, appaiono sempre le due () senza nulla dentro,
-
@giulio3x said:
niente non cambia nulla da prima, appaiono sempre le due () senza nulla dentro,
Ho copiato tutto in locale così l'ho provato io stesso.
Ti copio il codice funzionante. Logicamente gli utenti che hanno scritto i messaggi devono essere presenti nel file degli utenti
Se ci pensavo prima avremmo finito in 3 minuti[PHP]
<html>
<head>
<title>Messaggi degli utenti</title>
<?php
include("config.php");
echo "<meta http-equiv="refresh" content="$time_refresh">";
?>
</head>
<body bgcolor="white">
<?php
//Creo l'array dove inserirò le informazioni
$rows_utenti_info = array();
//Leggo il file utenti
$rows_utenti=file($file_reg);
foreach($rows_utenti AS $v)
{
$tmp = explode('|', $v);
$rows_utenti_info[$tmp[0]]['citta'] = $tmp[6];
$rows_utenti_info[$tmp[0]]['provincia'] = $tmp[5];
}if (!(file_exists($file_mess))) {
$fpw = fopen($file_mess,"w"); fclose($fpw);
}$rows_file=file($file_mess);
$rows_file_ord=array_reverse($rows_file);
$count=count($rows_file_ord);
for ($i=0;($i<$count && $i<$num_messag);$i++)
{
$dati_utente=explode("|",$rows_file_ord*);
$nick=$dati_utente[0];
eregi("[(.)] [(.)] (.*)", $nick, $regnick);
$nick_orig=$regnick[3];
$msg=$dati_utente[1];
$nick=stripslashes($nick);
$msg=stripslashes($msg);
$nick = str_replace('[em1]','<img src="emoticons/em1.gif">',$nick);
$msg = str_replace('[em1]','<img src="emoticons/em1.gif">',$msg);
for ($x=1;$x<27;$x++)
{
$img="em".$x;
$img2="[".$img."]";
$path="<img src="emoticons/$img.gif">";
$msg = str_replace("$img2","$path",$msg);
}
for ($x=1;$x<27;$x++)
{
$img="em".$x;
$img2="[".$img."]";
$path="<img src="emoticons/$img.gif">";
$nick = str_replace("$img2","$path",$nick);
}echo "<b><font face=\"verdana\" size=\"2\" color=\"#000000\"><a title=\"".$rows_utenti_info[$nick_orig]['provincia']."(".$rows_utenti_info[$nick_orig]['citta'].")\">$nick</a></font>: </b>"."<font face=\"verdana\" size=\"2\">".$msg."</font><br>";
}
?>
</body>
</html>
[/PHP]
-
ayrton come sempre sei una conferma! bene funziona in modo eccellente!
grazie supermille!avrei adesso bisogno di altre cose posso richiedertele oppure no?
mi piacerebbe fare in modo che quando un utente entra nella chat, al posto del numero di utenti compaia proprio il nome dell'utente connesso e che quando esce scompare il nome, forse bisogna fare una specie di logout...
il file attuale degli utenti on-line è questo:
[PHP]<html>
<head>
<title>Persone online</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
function apri(nick_ut)
{
window.open("profilo.php?nick=" + nick_ut,nick_ut,"width=500, height=280, left=200");
}
</script>
</head>
<body bgcolor="#E7E9FA">
<?
include("config.php");
$ar_online=file($file_online);
$dim=count($ar_online);
for ($i=0;$i<$dim;$i++)
{
$ut_online=chop($ar_online*);
$utente=explode("|",$ut_online);
$nick_ut=$utente[0];
$data=$utente[1];
$orario=$utente[2];
$parti_data=explode("/",$data);
$giorno=$parti_data[0];
$mese=$parti_data[1];
$anno=$parti_data[2];
$parti_orario=explode(":",$orario);
$ora=$parti_orario[0];
$minuti=$parti_orario[1];
$secondi=$parti_orario[2];
$ts=mktime($ora,$minuti,$secondi,$mese,$giorno,$anno);
$diff=time()-$ts;
$min_trascorsi=$diff/60;
if ($min_trascorsi<$min_online)
{
$array_on[]=$nick_ut;
}
}
$ar_unico=array_unique($array_on);
$dim_unico=count($ar_unico);
echo "<font face="Verdana" size="1">$dim_unico persone online</font>";
?>
</body>
</html>
[/PHP]
-
@giulio3x said:
ayrton come sempre sei una conferma! bene funziona in modo eccellente!
grazie supermille!avrei adesso bisogno di altre cose posso richiedertele oppure no?
mi piacerebbe fare in modo che quando un utente entra nella chat, al posto del numero di utenti compaia proprio il nome dell'utente connesso e che quando esce scompare il nome, forse bisogna fare una specie di logout...
il file attuale degli utenti on-line è questo:
[php]<html>
<head>
<title>Persone online</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
function apri(nick_ut)
{
window.open("profilo.php?nick=" + nick_ut,nick_ut,"width=500, height=280, left=200");
}
</script>
</head>
<body bgcolor="#E7E9FA">
<?
include("config.php");
$ar_online=file($file_online);
$dim=count($ar_online);
for ($i=0;$i<$dim;$i++)
{
$ut_online=chop($ar_online*);
$utente=explode("|",$ut_online);
$nick_ut=$utente[0];
$data=$utente[1];
$orario=$utente[2];
$parti_data=explode("/",$data);
$giorno=$parti_data[0];
$mese=$parti_data[1];
$anno=$parti_data[2];
$parti_orario=explode(":",$orario);
$ora=$parti_orario[0];
$minuti=$parti_orario[1];
$secondi=$parti_orario[2];
$ts=mktime($ora,$minuti,$secondi,$mese,$giorno,$anno);
$diff=time()-$ts;
$min_trascorsi=$diff/60;
if ($min_trascorsi<$min_online)
{
$array_on[]=$nick_ut;
}
}
$ar_unico=array_unique($array_on);
$dim_unico=count($ar_unico);
echo "<font face="Verdana" size="1">$dim_unico persone online</font>";
?>
</body>
</html>
[/php]cioè vorrei sia che il numero ma anche i nick di chi è on-line, il file di adesso dopo che uno ha scritto un messaggio è on-line per 60 secondi dopodichè se non scrive per 3 minuti non viene più conteggiato fino al prossimo messaggio e non è bello così...
-
@giulio3x said:
cioè vorrei sia che il numero ma anche i nick di chi è on-line, il file di adesso dopo che uno ha scritto un messaggio è on-line per 60 secondi dopodichè se non scrive per 3 minuti non viene più conteggiato fino al prossimo messaggio e non è bello così...
Perchè non è bello?
E come lo vorresti?
-
@ayrton2001 said:
Perchè non è bello?
E come lo vorresti?si non mi piace molto, io ti spiego:
voglio che quando un utente entra e fa il login mi appare sia il nome di chi è on-line, ma anche quanti sono on-line, e non voglio che sia come adesso che quando uno è 60 secondi che ha scritto il messaggio poi non viene più conteggiato come on-line e in realtà poi lo è...