Chat Sussurri
Chat Sussurri postato il 03/07/2009 12:15:53 nel forum programmazione, open source e hosting e modificato da dottor gregory denis il 03/07/2009 12:16:40
Buon giorno, ho una domanda per voi, più esperti di me.
Ho creato una chat sussurri, ovvero chat esterna e indipendente alle chat di gioco, molto simile alla chat di GDRCDEXTREME, uso il sistema operativo GDRCDEXTREME.
Vorrei esporvi il mio problema...
Allora, ho preso il case sussurri sia nell'input.php e nel refresh.php sempre dell'extreme e, l'ho implementato nella mia chat.
Funziona tutto correttamente però, ho una domanda.
io vorrei che il destinatario dei messaggi privati, venisse dichiarato in un altro <input> e, il messaggio privato, nella stessa <input> dei messaggi non privati.
Vi posto il codice ma, haimè non funziona:
Per prima cosa, dopo aver dichiarato le variabili di sessione, ho richiamato un REQUEST e inserito un POST similare:
$Dest=$_REQUEST['Dest'];
$Dest=$_POST['Dest'];
Subito dopo, sono andato a dichiarare il case stesso del messaggio privato vui posto prima l'originale e poi quello modificato da me:
ORIGINALE:
if ((substr($Msg, 0, 1) == "@") && ($Tipo == "")) {
$Pos = strpos(substr($Msg, 1), "@");
if (($Pos === false) || ($Pos > 20)) {
$Msg = htmlspecialchars($Msg);
$Tipo = "P";
} else {
$MsgTemp = substr($Msg, $Pos+2);
$Dest = substr($Msg, 1, $Pos);
$MySql = "SELECT * FROM Presenti WHERE Nome = '".addslashes($Dest)."'";
$Result = mysql_query($MySql);
if ($rs = mysql_fetch_array($Result)) {
$Msg = $MsgTemp;
$Msg = htmlspecialchars($Msg);
$Dest = trim($rs["Nome"]);
$Tipo = "S";
} else {
$Tipo = "S";
$Msg = $Dest." non è presente";
$Msg = htmlspecialchars($Msg);
$Dest = $Login;
}
mysql_free_result($Result);
}
MODIFICATO:
(I parametri modificati sono scritti solo qui in stampatello, nel mio file gli ho scritti come dichiarati in REQUEST e POST)
if ((substr($DEST, 0, 1) == "@") && ($Tipo == "")) {
$Pos = strpos(substr($Msg, 1), "@");
if (($Pos === false) || ($Pos > 20)) {
$Msg = htmlspecialchars($Msg);
$Tipo = "P";
} else {
$MsgTemp = substr($Msg, $Pos+2);
$Dest = substr($Dest, 1, $Pos);
$MySql = "SELECT * FROM Presenti WHERE Nome = '".addslashes($Dest)."'";
$Result = mysql_query($MySql);
if ($rs = mysql_fetch_array($Result)) {
$Msg = $MsgTemp;
$Msg = htmlspecialchars($Msg);
$Dest = trim($rs["Nome"]);
$Tipo = "S";
} else {
$Tipo = "S";
$Msg = $Dest." non è presente";
$Msg = htmlspecialchars($Msg);
$Dest = $Login;
}
mysql_free_result($Result);
}
poi, subito dopo, ho dichiarato come trovare questo Dest:
<input type=hidden value="<?= $Dest ?> name=Dest>
Secondo voi c'è qualcosa di errato? Dove?
Grazie!
Pagine → 1
03/07/2009 14:08:22
qui:
<input type=hidden value="<?= $Dest ?> name=Dest>
mancano un po' di virgolette..
<input type=hidden value="<?= $Dest ?>" name="Dest">
p.s.
gdr-cd extreme è un OpenSource non un sistema operativo xd
03/07/2009 15:36:38
E' anche definibile come framework volendoci proprio allargare.. xD
Comunque, ciò che mi sembra insolito ad una prima occhiata è questo
$Dest = substr($Dest, 1, $Pos);
Originariamente dovevi separare il destinatario dal messaggio, e per farlo usavi il substring (che tral'altro ora non taglia neanche più $Msg)
Ora se invii il destinatario separatamente questo non ti serve più.
03/07/2009 16:18:03
Ancora nulla... chiedo scusa ragazzi :(
03/07/2009 16:28:08
if ((substr($Msg, 0, 1) == "@") && ($Tipo == "")) {
Inviando il destinatario separatamente, dubito che la @ possa ancora essere utilizzata come carattere di riferimento per capire se c'è un sussurro.
Sarebbe più utile un isset($_POST['Dest']) ;-)
03/07/2009 17:36:34
icuro? perchè, ti dico, in quella chat comunque si vedono i messaggi pubblici e quelli priovati...
quindi, per far si che un messaggio sia rivato, ci vorrebbe un caracter di riferimento che faccia capire al sistema se il messaggio è da considerarsi privato o no giusto?
03/07/2009 17:51:15
dottor gregory denis ha scritto: icuro? perchè, ti dico, in quella chat comunque si vedono i messaggi pubblici e quelli priovati...
quindi, per far si che un messaggio sia rivato, ci vorrebbe un caracter di riferimento che faccia capire al sistema se il messaggio è da considerarsi privato o no giusto?
Certo, GDRCD usa nome mittente e destinatario in fase di lettura (refresh.php) quindi come smisti il nick del destinatario in input ha poca importanza.
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Project Entropy ↗
World of Tanks ↗
War Thunder ↗
Hero Wars ↗
The Coven ↗
Crossout ↗
World of Warship ↗