Stanze private postato il 27/04/2009 08:42:37 nel forum programmazione, gdrcd e open source
Torno a riproporre un problema che, nel mio caso ,sembra irrisolvibile.
premetto che non sono un programmatore, ma un autodidatta che , con mille difficolta', cerca di imparare , quindi ringrazio gia' in anticipo tutti quelli che vorranno aiutarmi con chiarimenti il piu' semplici possibili.Gia' Mr Faber ha cercato di delucidarmi in proposito,e lo ringrazio molto, ma purtroppo non ho ancora risolto.
Sto usando il codice Extreme , che peraltro mi sembra ottimo ma , proprio nel file input.php deve esserci qualcosa che mi confonde le idee e non mi permette di far funzionare le stanze private come vorrei.
Ho rilevato nella scrittura un errore di battitura come riporto qui di seguito :
// NETFORGER : rafforzo condizione
{
$pos = stripos(strtoupper($Invitati
( strIpos invece di strpos) e questo mi dava subito un errore .Ma corretto questo, tutto va bene.Gli inviti funzionano , ma non parte il messaggio di invito e , nella chat compare il messaggio " Errore durante il recapito dell'invito ". Inoltre, dopo le 4 ore al PG che ha prenotato la stanza non viene piu' consesso l'ingresso mentre gli invitati possono continuamente entrare anche nei giorni seguenti.
Malgrado i suggerimenti che mi sono stati dati in passato, questo problema non riesco a risolverlo, quindi chiedo scusa se posto questa nuova richiesta di aiuto, sperando che finalmente possa venirne a capo.
Grazie
Pagine → 1
27/04/2009 10:54:33
Il problema degli invitati che restano effettivamente c''e in extreme. Dovresti duplicare il controllo che esclude il proprietario anche ai presenti nel campo lista dei presenti. Quanto al messaggio "sei invititato" quello dovrebbe funzionare nel pacchetto di base, hai cambiato qualcosa?
27/04/2009 11:50:15
Innanzitutto ti ringrazio di avermi risposto .
Puoi dirmi come fare a duplicare cio' che mi consigli?...Quale parte duplicare e come inserirla nel codice di base ?
Purtroppo io non ho esperienza di programmazione e cerco di apprendere, ma ho bisogno della pazienza di chi , come te, gentilmente mi risponde.
Per quanto riguarda il messaggio che non arriva no..non ho cambiato nulla se non le impostazioni di layout ...il colore ecc..ecc...
Se lo desideri e se per te non e' troppo disturbo, potrei allegarti il codice input.php cosi' come risulta ora nel sito che cerco di costruire.
Grazie ancora
27/04/2009 14:11:33
Ora non ho il codice sotto mano, comunque, se guardi input.php tra le prime cose che fa, controlla le stanze private. Se non sei l'owner o lo sei ma l'ora e' scaduta, o non sei tra gli invitati, ti scrive stanza riservata. Dovresti copiare il controllo sull'ora che trovi per l'owner e replicarlo per i guest. Cerca di capire cos'e' che fa.
27/04/2009 14:41:44
Se ti incollo il codice, puoi dirmi qual'e' la parte da duplicare Faber ?
Sinceramente te ne sarei grato.
27/04/2009 19:20:48
ok :) ma metti tutta la pagina, dovrebbe essere abbastanza corta.
27/04/2009 19:33:30
Ti ringrazio molto e te la incollo. Purtroppo pero' non e' corta, trattandosi del file input.php
Volevo chiederti, gia' che mi fai questa cortesia, se puoi anche daere un'occhiata al perche' non parte il messaggio di invito.
Grazie ancora
<?php
session_start();
include ("inc/parametri.inc.php");
include ("inc/controllo.php");
include ("inc/open2.php");
$Login = $_SESSION['Login'];
$Sesso_S = $_SESSION['Sesso_S'];
$DescGilda = $_SESSION['DescGilda_S'];
$ImgGilda = $_SESSION['ImgGilda_S'];
$ImgRazza_S = $_SESSION['ImgRazza_S'];
$DescRazza_S = $_SESSION['DescRazza_S'];
$Messaggio=$_POST['Messaggio'];
$Stanza=$_SESSION['Stanza'];
$op=$_REQUEST['op'];
//$Msg=$_REQUEST['Msg'];
$Tipo=$_REQUEST['Tipo'];
//$StanzaCambia="";
$nome=$_POST['nome'];
$caccia=$_POST['caccia'];
$elenco=$_POST['elenco'];
$invita=$_POST['invita'];
$Tag=$_SESSION['Tag'];
{$Tag=$_POST['Tag'];}
$_SESSION['Tag']=$Tag;
include ("inc/controlloesilio.php");
?>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style>
BODY {font-size:14px; text-decoration: none; font-family:verdana; color:#404040; font-weight:normal;}
TD {font-size:10px; text-decoration: none; font-family:verdana; color:black; font-weight:normal;}
TABLE {font-size:10px; text-decoration: none; font-family:verdana; color:black; font-weight:normal;}
</style>
</head>
<body topmargin=0 leftmargin=0 bgcolor=#000000 background="img/input.jpg">
<?
$CarDefault = '';
$Msg = stripslashes($Msg);
$Msg = substr($Msg, 0, min(strlen($Msg), 500));
$Msg = addslashes($Msg);
if ((strtoupper($op) == "CANCELLACHAT") && ($_SESSION['Master'] == 1)) {
$Msg = "Stanza $Stanza cancellata";
$MySql = "DELETE FROM Chat WHERE Stanza = '".$Stanza."' AND DATE_ADD(Ora, INTERVAL 10 MINUTE) >= NOW()";
mysql_query($MySql);
if ($ImgGilda == "") {
$ImgGilda = "nessuno.gif";
$DescGilda = "cittadino";
}
$MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo)";
$MySql .= "VALUES ('".addslashes($Stanza)."', 'System Op', '".addslashes($Login)."', NOW(), '".$Msg."', '$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'S')";
mysql_query($MySql);
}
#############################
# GESTIONE STANZE RISERVATE #
#############################
$MySql = "SELECT * FROM Mappa WHERE ID = '".addslashes($Stanza)."'";
$Result = mysql_query($MySql);
$rs = mysql_fetch_array($Result);
$Condizione = $rs["Condizione"]."";
$Invitati = $rs["Invitati"]."";
mysql_free_result($Result);
if ($Condizione != "") {
$_SESSION['Mappa']=4;
$Condizione = str_replace("G", "IDGilda", $Condizione);
$pos = strpos($Condizione, "$Numero");
if ($pos == false) {
$MySql = "SELECT * FROM Presenti WHERE Nome = '".addslashes($Login)."' AND ".$Condizione;
} else {
$Condizione = str_replace("$Numero", $Stanza, $Condizione);
$Condizione = str_replace("$Date", "'".strftime("%Y-%m-%d %H:%M:%S")."'", $Condizione);
$MySql = "SELECT * FROM Presenti INNER JOIN Albergo ON Nome = Proprietario AND ".$Condizione." WHERE Nome = '".addslashes($Login)."'";
}
$Result = mysql_query($MySql);
if ($rs = mysql_fetch_array($Result)) {
mysql_free_result($Result);
#Permesso Gestione Stanza
if (strlen($invita) > 0)
// NETFORGER : rafforzo condizione
{
$pos = strpos(strtoupper($Invitati), "!".strtoupper($nome)."!,"); // NETFORGER : imposto case-insensitive
if ($pos === false)
{
$MySql = "SELECT `Nome` FROM `Personaggio` WHERE `Nome` LIKE '$nome' LIMIT 1;"; // NETFORGER : correzione query
$Result = mysql_query($MySql);
if ($rs = mysql_fetch_assoc($Result))
{
$Nome2=$rs["Nome"];
mysql_free_result($Result);
$MySql = "UPDATE `Mappa`
SET `Invitati` = CONCAT(`Invitati`, '!" . addslashes($Nome2) . "!,')
WHERE `ID` = '".addslashes($Stanza)."';"; // NETFORGER : correzione query
mysql_query($MySql);
$sql_stanza = addslashes($Stanza);
$sql_mittente = addslashes($Login);
$sql_destinatario = addslashes($Nome2);
$MySql = "INSERT INTO `Chat`
(
`Stanza`, `Mittente`, `Destinatario`, `Ora`, `Testo`,
`Sesso`, `ImgGilda`, `DescGilda`, `ImgRazza`, `DescRazza`, `Tipo`
)
VALUES
(
'" . $sql_stanza . "', '" . $sql_mittente . "', '" . $sql_mittente . "', NOW(),
'" . $sql_destinatario . " è stato invitato.',
'$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'Y'
);";
mysql_query($MySql);
// NETFORGER : scrivo nuova query per fare arrivare un messaggio all'invitato
$sql = "SELECT `Breve` FROM `mappa` WHERE `ID` = '" . $sql_stanza . "' LIMIT 1;";
$nome_stanza = mysql_query($sql);
$nome_stanza = mysql_fetch_object($nome_stanza);
$sql = "INSERT INTO `messaggi`
(
`ID`,
`Mittente`,
`Destinatario`,
`Spedito`,
`Letto`,
`Testo`
)
VALUES
(
NULL,
'" . $sql_mittente . "',
'" . $sql_destinatario . "',
NOW(),
0,
'" . $sql_mittente . " ti ha invitato nella stanza "" . $nome_stanza->Breve . ""'
);";
$msg_invito = mysql_query($sql);
if (!$msg_invito)
{
$MySql = "INSERT INTO `Chat`
(
`Stanza`, `Mittente`, `Destinatario`, `Ora`, `Testo`,
`Sesso`, `ImgGilda`, `DescGilda`, `ImgRazza`, `DescRazza`, `Tipo`
)
VALUES
(
'" . $sql_stanza . "', '" . $sql_mittente . "', '" . $sql_mittente . "', NOW(),
'Errore durante il recapito dell'invito.',
'$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'Y'
);";
mysql_query($MySql);
}
// NETFORGER : Fine modifica
}
else
{
mysql_free_result($Result);
$MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo)";
$MySql .= " VALUES ('".addslashes($Stanza)."', '".addslashes($Login)."', '".addslashes($Login)."', NOW(), '".htmlspecialchars($nome)." non esiste', '$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'S')";
mysql_query($MySql);
}
}
else
{
$MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo)";
$MySql .= " VALUES ('".addslashes($Stanza)."', '".addslashes($Login)."', '".addslashes($Login)."', NOW(), '".$nome." è già stato invitato.', '$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'S')";
mysql_query($MySql);
}
}
# ********** NON CACCIA!!! *******
if (strlen($caccia) > 0)
{
$pos = strpos(strtoupper($Invitati), "!".strtoupper($nome)."!,");
if ($pos === false) {
$MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo)";
$MySql .= " VALUES ('".addslashes($Stanza)."', '".addslashes($Login)."', '".addslashes($Login)."', NOW(), '".$nome." non era stato invitato.', '$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'S')";
mysql_query($MySql);
} else {
$MySql = "SELECT Nome FROM Personaggio WHERE Nome = '$nome'";
$Result = mysql_query($MySql);
if ($rs = mysql_fetch_array($Result)) {
$Nome2 = $rs["Nome"];
mysql_free_result($Result);
$MySql = "UPDATE Mappa SET Invitati = REPLACE(Invitati, '!$Nome2!,', '') WHERE ID = '".addslashes($Stanza)."'";
mysql_query($MySql);
$MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo)";
$MySql .= " VALUES ('".addslashes($Stanza)."', '".addslashes($Login)."', '".addslashes($Login)."', NOW(),";
$MySql .= " '".addslashes("L'invito di ".htmlspecialchars($Nome2)." è stato revocato.")."', '$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'Y')";
mysql_query($MySql);
} else {
$MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo)";
$MySql .= " VALUES ('".addslashes($Stanza)."', '".addslashes($Login)."', '".addslashes($Login)."', NOW(),";
$MySql .= " '".$nome." non esiste.', '$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'S')";
mysql_query($MySql);
}
}
}
if($elenco != "") {
$Msg = $Invitati;
If ($Msg == "") {$Msg = "nessun invitato,";};
$Msg = substr($Msg, 0, strlen($Msg)-1);
$Msg = str_replace(",", ", ", $Msg);
$Msg = str_replace("!", "", $Msg);
$Msg = addslashes("elenco degli invitati: ".htmlspecialchars($Msg));
$MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo)";
$MySql .= " VALUES ('".addslashes($Stanza)."', '".addslashes($Login)."', '".addslashes($Login)."', NOW(), '$Msg', '$Sesso_S', '$ImgGilda', '$DescGilda', '$ImgRazza_S', '$DescRazza_S', 'S')";
mysql_query($MySql);
}
} else { #controllo permesso tra gli invitati: non è un gestore della stanza
mysql_free_result($Result);
$pos = strpos(strtoupper($Invitati), "!".strtoupper($Login)."!,");
if ($pos === false) {
echo " ------------------E' UNA STANZA RISERVATA...PUOI ENTRARE SOLO SE SEI INVITATO----------------";
exit();
}
}
}
$Messaggio = stripslashes(trim($Messaggio));
$Msg = substr($Messaggio, 0, min(strlen($Messaggio), 500));
$Msg = addslashes($Messaggio);
$CharAdd = "";
$Tipo = "";
if ($Msg != "") {
if ((substr($Msg, 0, 1) == "§") && ($_SESSION['Master'] == 1) && ($Tipo == "")) {
$Msg = substr($Msg, 1);
$Msg = htmlspecialchars($Msg);
$Tipo = "M";
$CarDefault = '§';
}
if ((substr($Msg, 0, 1) == "§") && ($_SESSION['Master'] == 2) && ($Tipo == "")) {
$Msg = substr($Msg, 1);
$Msg = htmlspecialchars($Msg);
$Tipo = "C";
$CarDefault = '§';
}
if ((substr($Msg, 0, 1) == "*") && ($Master == 1) && ($Tipo == "")) {
$Msg = substr($Msg, 1);
$Tipo = "C";
}
if ((substr($Msg, 0, 1) == "-") && ($_SESSION['Master'] == 1) && ($Tipo == "")) {
$Msg = substr($Msg, 1);
$Tipo = "W";
}
if ((substr($Msg, 0, 1) == "$") && ($Tipo == "")) {
if (strtoupper(substr($Msg, 1, 4)) == "DADI") {
$maxnum = min(floor(abs(0 + substr(trim($Msg), 5))), 1000);
if ($maxnum == 0) {$maxnum = 6;};
mt_srand((double)microtime()*1000000);
$num = mt_rand(1, $maxnum);
$Tipo = "Y";
$Msg = $Login." tira $num/$maxnum";
$Msg = htmlspecialchars($Msg);
#$Msg = "[Y]<ORA:" & tempo() & "><MITT:" & Session("Login") & "><MSG:" & server.htmlencode(Session("Login")) & " tira " & num & "/" & maxnum & ">"
}
}
if (((substr($Msg, 0, 1) == "+") || (substr($Msg, 0, 1) == "#")) && ($Tipo == "")) {
$Msg = substr($Msg, 1);
$Msg = htmlspecialchars($Msg);
if($Tag!=""){$Msg=" [".htmlspecialchars($Tag)."] ".$Msg;}
$Tipo = "A";
}
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);
}
}
if (($Msg != "") && ($Tipo == "")) {
$Msg = htmlspecialchars($Msg);
if($Tag!=""){ $Msg="<Font color=#000000> [".htmlspecialchars($Tag)."]</font> ".$Msg;
}
$Tipo = "P";
}
#$Msg = substr($Msg, 0, min(strlen($Msg), 1000));
if ($Tipo != "") {
$MySql = "INSERT INTO Chat (Stanza, Mittente, Destinatario, Ora, Testo, Sesso, ImgGilda, DescGilda, ImgRazza, DescRazza, Tipo)";
$MySql .= "VALUES ('".addslashes($Stanza)."', '".addslashes($Login)."', '".addslashes($Dest)."', NOW(), '".$Msg."', '$Sesso_S', '$ImgGilda', '".addslashes($DescGilda)."', '$ImgRazza_S', '".addslashes($DescRazza_S)."', '$Tipo')";
mysql_query($MySql);
# mysql_query($MySqlBackup); #BACKUP DELLA CHAT
# mysql_query($MySqlBackup2); #CANCELLA I MESSAGGI PIU VECCHI DI 20 MINUTI
$PXRegalati=0.01;
$MySqlREG = "UPDATE Personaggio SET Esperienza = Esperienza + ".$PXRegalati.", Explibera = Explibera + ".$PXRegalati." WHERE Nome = '".$_SESSION['Login']."'";
mysql_query($MySqlREG);
}
#echo "<script>parent.chatrefresh.document.location.href ='refresh.php'</script>";
};
$Msg = "";
?>
<form name=invio action="input.php" method=POST>
<p align=center>
<table bgcolor="#767068" cellpadding=0 height="30" width="630" cellspacing=1 border=2 >
<tr>
<td valign=top align=left width="100%" background="#767068">
<table bgcolor="#767068" cellpadding=0 height="30" width="630" cellspacing=1 border=0 >
<tr>
<td valign=top align=left width=477 >
<a href="#" onClick="Javascript:window.open('helpinput.php','_new','height=400,width=600,toolbar=no,location=no,status=yes,menubar=no,scrollbars=yes,resizable=yes')">
<font color=white>Help Chat</a></font>
<br>
<input type=Text Name=Tag size=10 style="font-weight:normal;font-family:Verdana;font-size:8pt;color=333333" maxlength="30" value="<?= $Tag ?>">
<input type=Text Name=Messaggio class=txtbox size=60 style="font-weight:normal;font-family:Verdana;font-size:8pt;color=333333" maxlength="1000" value="<?= $CarDefault ?>">
<center>
</td>
<td width=55 bgcolor="#767068">
<br>
<INPUT TYPE=Submit VALUE= "Invia" style="font-weight:bold;font-family:Verdana;font-size:8pt"></form>
<SCRIPT LANGUAGE="Javascript">document.invio.Messaggio.focus()</SCRIPT>
<? if ($Master == 1) { ?>
</td>
<td width=55 bgcolor="#767068">
<form name=comandimaster2 action="input.php" target=chatinput method=POST>
<br>
<input type=hidden name=op value=CancellaChat><INPUT TYPE=submit VALUE="Pulisci" style="font-weight:normal;font-family:Verdana;font-size:8pt"></form>
<? } else {echo "<td width=137></td>";} ?>
</td></tr></table>
</td>
</tr>
</font> </a>
</table></div>
</body>
</html>
29/04/2009 08:40:57
Boh, ora non mi salta all'occhio, ci riguardero' meglio quando ho piu' tempo.
Discussione seguita da
Pagine → 1
Rispondi alla Discussione Aggiungi ai Preferiti Inoltra Discussione Forum Programmazione, GDRCD e Open Source Elenco Forum
Celebrando 20 Anni di GDR-Online.com: un grazie di cuore!