- Home
- Categorie
- Coding e Sistemistica
- PHP
- Fare in modo che appaiono i nomi degli utenti on-line nella mia chat
-
Ok, non sono molto ferrato, ma il mio consiglio è:
nel primo file quando "scrivi" sul file il messaggio, scrivi anche qualcosa che identifichi l'avvenuta scrittura da parte dell'utente, se non erro, no?
quando rileggi il file, pubblichi i messaggi associando ognuno a un nick...
a questo punto se vuoi visualizzare i nick presenti, scrivi sul messaggio oltre al nick l'ora di invio del messaggio... e crea una funzione che cerca nel file txt i nick di chi ha scritto e per ogni occorrenza (ciclo while) l'ora di scrittura (possibilmente in secondi dal 1970 come ti restituisce time()). A questo punto sempre nel ciclo while richiama time()-60*10 (ipotizziamo che vuoi visualizzare chi ha mandato un messaggio negli ultimi 10 minuti?) e confrontalo col time indicato nel file di fianco al messaggio...
Se il valore nel file è maggiore di time()-60*10 allora visualizzalo, se no scartalo perchè probabilmente non è online...
Senza un database non mi viene in mente altro...
Non vedo la procedura di login, quindi è difficile valutare se e come flaggare l'avvenuto login, ma magari uno si logga e poi non scrive per niente... forse indicare chi ha scritto un messaggio nei 10 minuti precedenti è più utile...
keiske
-
ciao la procedura di login è:
[PHP]<html>
<head>
<title>Login alla chat</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body bgcolor="#FBBEAA">
<table width="185" align="center" cellpadding="4" bordercolor="#000000" bgcolor="#F8EBC2" style="border:1px solid">
<tr bgcolor="#F0DBAA">
<td colspan="2">
<div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>BENVENUTI
IN CHAT</strong></font></div></td>
</tr>
<tr><td>
<p align="justify">Benvenuti nella chat meteo di Globalmeteo, entrando potrete inserire le condizioni meteo
attuali inerenti alla vostra città !
</p>
</tr></td></td></table>
<br><form method="get" action="chat.php">
<table width="185" align="center" cellpadding="4" bordercolor="#000000" bgcolor="#F8EBC2" style="border:1px solid">
<tr bgcolor="#F0DBAA">
<td colspan="2">
<div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>LOGIN
ALLA CHAT</strong></font></div></td>
</tr>
<tr>
<td colspan="2"><div align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">------------------------<br><i><b>
Per la registrazione
<br><font color="#000000">>> <a href="" target="blank">clicca
qui</a> <<</i></b></font><br>------------------------ </font></div></td>
</tr>
<tr>
<td width="60"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Nick:</strong></font></td>
<td><input name="nick" type="text" id="nick" size="14" maxlength="20"></td>
</tr>
<tr>
<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>Pass.:</strong></font></td>
<td><input name="password" type="password" id="nick3" size="14" maxlength="20"></td>
</tr>
<tr>
<td colspan="2"><div align="center"><input type="submit" name="Submit" value="Entra in chat"></td>
</tr>
</table>
</form>
<br><div align="center"><a href="" target="blank">
<font size="2" face="arial"><b>Leggi il regolamento<br>della chat</font></b></a><br>
<br>___________________<br><br><font size="2" face="arial">Ci sono 44 utenti registrati
</body>
</html>
[/PHP]per via di quello che mi hai suggerito può andare bene però non saprei davvro da dove iniziare per scrivere il codice io che il php non lo conosco, se mi facessi un piacere di scrivere per me il codice ti ringrazio, magari tenendo anche conto che ora ti ho postato il login,grazie!
-
@Privacy-Impresa said:
Non vedo la procedura di login, quindi è difficile valutare se e come flaggare l'avvenuto login, ma magari uno si logga e poi non scrive per niente... forse indicare chi ha scritto un messaggio nei 10 minuti precedenti è più utile...
keiske
ti ho postato il file se magari ti viene in mente qualcosaltro..:)
-
Ok, qui chiede nick e password e rimanda l'azione del form a chat.php
il codice di chat.php?
keiske
p.s.: Ci sono 44 utenti registrati lo scrivi tu a mano o lo calcola lui in qualche modo?
-
@Privacy-Impresa said:
Ok, qui chiede nick e password e rimanda l'azione del form a chat.php
il codice di chat.php?
keiske
p.s.: Ci sono 44 utenti registrati lo scrivi tu a mano o lo calcola lui in qualche modo?
no lo scrivo a mano ecco il file chat.php:
[php]
<html>
<head>
<title>Chat meteo globalmeteo</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language = "JavaScript">
function textCounter(field, countfield, maxlimit) {
if(field.value.length > maxlimit){
field.value = field.value.substring(0, maxlimit);
}
else{
countfield.value = maxlimit - field.value.length;
}
}
</script>
<script language="javascript">
function aggiungi(y)
{
espressione=document.form_ins.messaggio.value;
new_espressione=espressione + y;
document.form_ins.messaggio.value=new_espressione;
}
function checkSubmit() {
var subValue = document.form_ins.Submit.value;
if(subValue!="Attendere") { // Se non ha inviato
subValue = "Attendere";
document.form_ins.Submit.disabled = "true"; //Disabilito il pulsante
return true;
} else {
return false;
}
}
</script>
<script type="text/javascript">
<!--
var stile = "top=10, left=10, width=250, height=200, status=no, menubar=no, toolbar=no scrollbar=no";
function Popup(apri) {
window.open(apri, "", stile);
}
//-->
</script>
<style>
.stile {
background:#FFFFFF;
font-family:verdana;
font-size:8pt;
SCROLLBAR-BASE-COLOR: #0099CC;
SCROLLBAR-ARROW-COLOR: #FFFFFF;
}
</style>
</head>
<body bgcolor="#FBBEAA">
<?
include("config.php");
$nick=$_GET['nick'];
$nick=strtolower($nick);
$nick=stripslashes($nick);
$password=$_GET['password'];
$password=strtolower($password);
$password_cr=crypt($password,$nick);
$password_cr=str_replace("|","*",$password_cr);if (!(file_exists($file_reg)))
{fopen($file_reg,"w");}
$utente=$nick."|".$password;
$utente_ok=0;
$ut_regist=file($file_reg);
$dim_reg=count($ut_regist);
for ($i=0;$i<$dim_reg;$i++)
{
$dati_ut=explode("|",$ut_regist*);
$nick_ut=$dati_ut[0];
$pass_ut=$dati_ut[1];
if (($nick==$nick_ut) & ($password_cr==$pass_ut)) $utente_ok=1;
}
if ($utente_ok==1)
{
if (!(file_exists($file_online)))
{fopen($file_online,"w");}
$dim_file=filesize($file_online);
$dim_max=14000; // Dimensione in bytes massima per ricreare il file online
if ($dim_file>$dim_max)
fopen($file_online,"w");
$ar_orario=getdate();
$ora=$ar_orario['hours'];
$minuti=$ar_orario['minutes'];
$secondi=$ar_orario['seconds'];
if (strlen($minuti)==1) $minuti="0".$minuti;
if (strlen($secondi)==1) $secondi="0".$secondi;
$data=date("d/m/Y");
$orario=$ora.":".$minuti.":".$secondi;
$utente=$nick."|".$data."|".$orario."\n";
$ins_online=fopen($file_online,"a+");
fputs($ins_online,$utente);
fclose($ins_online);
}
else
{
echo "<center><b>E' STATO INSERITO<br>UN NICK O UNA PASSWORD<br>NON
CORRETTI,<br>OPPURE NON SEI<br>ANCORA REGISTRATO.</b><br><b>------------------</b><br><br><i><b>IMPORTANTE:<br> se sei sicuro che i dati sono esatti, prova a verificare che la [REDAZIONE] non abbia inviato una mail, all'indirizzo da te fornito nella registrazione, con i tuoi dati corretti. Fatto questo prova a rientrare. Grazie.<br><br>Se non hai ricevuto nessuna mail allora scrivici a:</i><br><u>[email protected]</u><br><i>ti forniremo tutte le info per entrare. Grazie.</b></i> ";
echo "<a href="javascript:history.back();"><br><br>TORNA AL LOGIN</a></center>";
exit;
}
?>
<table width="177" align="center" bordercolor="#000000"
bgcolor="#E7E9FA" style="border:1px solid;">
<tr>
<td width="177" height="21" colspan="6"><div align="center">
<div align="center"><iframe src="messaggi1.php" width="177" height="105" scrolling="yes"></iframe>
</td></tr></table><div align="center"> <br><table width="177" align="center" bordercolor="#000000" bgcolor="#E7E9FA" style="border:1px solid;"> <tr> <td width="177" height="21" bgcolor="#BBC2F2"><div align="center"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>PERSONE ON-LINE </strong></font></div></td> </tr> <tr> <td height="21"><iframe width="177" height="45" src="online.php" scrolling="yes"></iframe></td> </tr> </table>
<br>
<form method="GET" action="insert.php" name="form_ins" onsubmit="checkSubmit();">
<table width="185" align="center" bordercolor="#000000" bgcolor="#E7E9FA" style="border:1px solid;">
<tr>
<td width="185" height="21" colspan="6" bgcolor="#BBC2F2"><div align="center"><font color="#000000" size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>SIMBOLI
METEO-SMILES</strong></font></div></td>
</tr>
<tr><td colspan="4"><div align="center">
<select name="indirizzo_faccina" size="1"><option value="1"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "1" ? " selected="selected"" : ""); ?>>sole</option>
<option value="2"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "2" ? " selected="selected"" : ""); ?>>poco nuvoloso</option>
<option value="3"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "3" ? " selected="selected"" : ""); ?>>nuvoloso</option>
<option value="4"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "4" ? " selected="selected"" : ""); ?>>luna</option>
<option value="5"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "5" ? " selected="selected"" : ""); ?>>luna nuvoloso</option>
<option value="21"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "21" ? " selected="selected"" : ""); ?>>pioggia deb/mod</option>
<option value="6"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "6" ? " selected="selected"" : ""); ?>>pioggia forte</option>
<option value="7"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "7" ? " selected="selected"" : ""); ?>>pioggia/neve</option>
<option value="8"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "8" ? " selected="selected"" : ""); ?>>temporale</option>
<option value="11"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "11" ? " selected="selected"" : ""); ?>>temporale pioggia</option>
<option value="22"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "22" ? " selected="selected"" : ""); ?>>grandine</option>
<option value="23"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "23" ? " selected="selected"" : ""); ?>>pioggia/grandine</option>
<option value="25"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "25" ? " selected="selected"" : ""); ?>>neve deb/mod</option>
<option value="9"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "9" ? " selected="selected"" : ""); ?>>neve forte</option>
<option value="24"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "24" ? " selected="selected"" : ""); ?>>foschia</option>
<option value="10"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "10" ? " selected="selected"" : ""); ?>>nebbia</option>
<option value="12"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "12" ? " selected="selected"" : ""); ?>>caldo</option>
<option value="13"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "13" ? " selected="selected"" : ""); ?>>freddo</option>
<option value="14"<?php echo (isset($_GET['indirizzo_faccina']) && $_GET['indirizzo_faccina'] == "14" ? " selected="selected"" : ""); ?>>vento</option>
</select></td>
<td height="21"><div align="center"><a <a href="javascript:Popup('/emoticons/psmile.html')"><img
src="emoticons/moresm.gif" width="38" height="22" border="0"></div></a></td></tr>
<tr>
<td height="21"><div align="center"><img
src="emoticons/em16.gif" width="15" height="15" onClick="aggiungi('[em16]')"></div></td>
<td height="21"><div align="center"><img
src="emoticons/em17.gif" width="15" height="15" onClick="aggiungi('[em17]')"></div></td>
<td height="21"><div align="center"><img
src="emoticons/em18.gif" width="15" height="15" onClick="aggiungi('[em18]')"></div></td>
<td height="21"><div align="center"><img
src="emoticons/em19.gif" width="15" height="15" onClick="aggiungi('[em19]')"></div></td>
<td height="21"><div align="center"><img
src="emoticons/em15.gif" width="16" height="16" onClick="aggiungi('[em15]')"></div></td></tr>
</table>
<br> <table width="185" align="center" bordercolor="#000000"
bgcolor="#E7E9FA" style="border:1px solid;">
<tr>
<td height="21" bgcolor="#BBC2F2"><div align="center"><font
color="#000000" size="2" face="Verdana, Arial, Helvetica,
sans-serif"><strong>MESSAGGIO</strong></font></div></td>
</tr>
<tr>
<td ><form method="GET" action="insert.php" name="form_ins" >
<table width="170" border="0" align="center">
<tr>
<td colspan="2"><div align="center">
<textarea rows="5" onKeyDown="textCounter(this.form.messaggio,this.form.rem,300);" onKeyUp="textCounter(this.form.cjmsg,this.form.rem,300);" cols="18" type="text" name="messaggio"></textarea>
</div></td>
</tr>
<tr>
<td><div align="right"><font size="1" face="Verdana, Arial, Helvetica, sans-serif">Lettere
rimaste:</font></div></td>
<td><div align="center">
<input readonly class="stile" type=text name=rem size=3 maxlength=3 value="300">
</div></td>
</tr>
<tr>
<td height="26" colspan="2"> <div align="center">
<?
echo "<input type="hidden" name="nick" value="$nick">";
echo "<input type="hidden" name="password" value="$password">"
?>
<input type="submit" name="Submit" value="Invia messaggio">
<input type="hidden" name="hideSubmit" value="hideGo"></div></td>
</tr></table>
</form></td>
</tr>
</table>
</body>
</html>
[/php]
-
fopen($file_online,"w");
$ar_orario=getdate();
$ora=$ar_orario['hours'];
$minuti=$ar_orario['minutes'];
$secondi=$ar_orario['seconds'];
if (strlen($minuti)==1) $minuti="0".$minuti;
if (strlen($secondi)==1) $secondi="0".$secondi;
$data=date("d/m/Y");
$orario=$ora.":".$minuti.":".$secondi;
$utente=$nick."|".$data."|".$orario."\n";
$ins_online=fopen($file_online,"a+");
fputs($ins_online,$utente);
fclose($ins_online);Qui direi che inserisce nel file $_file_online qualcosa relativo all'ora del login... dovresti aprirlo a mano e vedere cosa scrive... penso ora e giorno in un certo formato...
Se è così nel punto dove vuoi visualizzare gli utenti online devi creare una funzione che prenda quel dato per ogni $utente e poi ciclando selezioni quelli online da meno di un certo tempo e li visualizzi...
Penso di poterti struttare il codice ma la sintassi per fopen e fget e fput ora proprio mi sfugge e anche l'analisi della stringa...
- se esiste il file
- apro il file
- inizio un ciclo while condizionato all'esistenza di una riga di testo da analizzare
- cerco la prima[seconda,terza,ecc] stringa relativa all'ora/data che mi serve e la salvo in una variabile insieme al nick corrispondente
- manipolo la variabile di ora/tempo per avere un valore commisurabile
- la misuro con l'ora attuale sottratti i minuti che voglio come "ritardo"
- se il confronto è positivo stampo a video una riga col nick
- chiudo il ciclo while
- chiudo il file
- chiudo il ciclo if
Il codice c'è tutto nei tuoi file... le funzioni sono cmq quelle... vedi un po' anche documentandoti su siti di "funzioni php stringe" su google se trovi qualche indicazione, altrimenti domani vedo se riesco a fare qualcosa
keiske
-
@Privacy-Impresa said:
fopen($file_online,"w");
$ar_orario=getdate();
$ora=$ar_orario['hours'];
$minuti=$ar_orario['minutes'];
$secondi=$ar_orario['seconds'];
if (strlen($minuti)==1) $minuti="0".$minuti;
if (strlen($secondi)==1) $secondi="0".$secondi;
$data=date("d/m/Y");
$orario=$ora.":".$minuti.":".$secondi;
$utente=$nick."|".$data."|".$orario."\n";
$ins_online=fopen($file_online,"a+");
fputs($ins_online,$utente);
fclose($ins_online);Qui direi che inserisce nel file $_file_online qualcosa relativo all'ora del login... dovresti aprirlo a mano e vedere cosa scrive... penso ora e giorno in un certo formato...
Se è così nel punto dove vuoi visualizzare gli utenti online devi creare una funzione che prenda quel dato per ogni $utente e poi ciclando selezioni quelli online da meno di un certo tempo e li visualizzi...
Penso di poterti struttare il codice ma la sintassi per fopen e fget e fput ora proprio mi sfugge e anche l'analisi della stringa...
- se esiste il file
- apro il file
- inizio un ciclo while condizionato all'esistenza di una riga di testo da analizzare
- cerco la prima[seconda,terza,ecc] stringa relativa all'ora/data che mi serve e la salvo in una variabile insieme al nick corrispondente
- manipolo la variabile di ora/tempo per avere un valore commisurabile
- la misuro con l'ora attuale sottratti i minuti che voglio come "ritardo"
- se il confronto è positivo stampo a video una riga col nick
- chiudo il ciclo while
- chiudo il file
- chiudo il ciclo if
Il codice c'è tutto nei tuoi file... le funzioni sono cmq quelle... vedi un po' anche documentandoti su siti di "funzioni php stringe" su google se trovi qualche indicazione, altrimenti domani vedo se riesco a fare qualcosa
keiske
purtroppo per me mettere mano al codice non è cosa che riesco a fare, se tu lo facessi per me sarei molto felice
-
Bisogna aspettare che passi qualcuno che ha più dimestichezza con fopen() e fputs()... io non saprei proprio, non lo uso mai...
keiske
-
io consiglierei di abbondare come metodo un file testuale...anche perchè se la chat risultasse affollata diventerebbe un casino gestirla...
quindi database mysql
-
anche perchè per vedere chi è online potrebbe pure utilizzare anche lui il codice creato per il tuo caso
keiske
-
@Privacy-Impresa said:
anche perchè per vedere chi è online potrebbe pure utilizzare anche lui il codice creato per il tuo caso
keiske
eh va be ma così è troppo facile, ve la cavate tutti indirizzandomi sempre solo a database, invece io con file di testo mi sono sempre molto trovato bene senza mai sentire la mancanza di un database, detto ciò devo ancora contare su di voi per risolvere questa cosa oppure mi abbandonate? :bho::(
-
Non è questione di abbandonarti... è che se qualcuno ha un quesito e so già bene o male come si fa aiuto volentieri... se nemmeno io lo so e devo documentarmi apposta, potrei farlo se è una cosa che poi torna utile anche a me... ma in questo caso non mi serve...
Il punto è che se non sai programmare in php, o ti metti di buona lena e cerchi di capire la logica del linguaggio, oppure prendi degli strumenti già pronti, che usano le procedure più usate e per eventuali dubbi trovi di sicuri chi ti aiuta...
Poi se passa di qui qualcuno che usa abitualmente fopen() e derivati di sicuro ti aiuterà...
keiske