Stanze riservate con password
Stanze riservate con password postato il 27/09/2014 12:52:28 nel forum programmazione, open source e hosting
Buongiorno a tutti, avrei bisogno del vostro aiuto per creare delle chat riservate a cui è possibile accedere tramite password.
Premetto che uso il pacchetto gdrcd 5.2 e che non voglio creare delle private come preimpostato e vi spiego perchè:
trattandosi di una land ispirata agli anni 20, quindi con gangster e bische clandestine, vorrei ricreare la situazione di un normale pg che essendo in un giro losco conosce il modo per entrare in una bisca o in un covo di malviventi e per farlo deve conoscere la parola d'ordine. La differenza con una privata è che non dovrebbe pagare, non avrebbe necessità di essere invitato o di invitare altri pg, tutti quelli che conoscono la password possono entrare.
Qualcuno di voi può darmi una mano in tal senso?
Ho già fatto qualche esperimento ma inserire password di accesso con relativi logout e controlli mi ha creato problemi e interferenze con i login e i controlli generali della land.
Grazie!
27/09/2014 13:06:36
Grazie mille per la risposta :)
Dunque mi suggerisci di "imitare" una privata per il controllo dei presenti, ma con la clausola della pass, ho capito bene?
La stringa di codice da inserire sarebbe qualcosa tipo "se la pass inserita è uguale a... (pass messa in db) allora inserisci il tal pg nell'elenco di quelli che accedono alla privata" giusto?
27/09/2014 13:46:05
spyker ha scritto: Vale la pena di sfruttare il sistema delle stanze private che già c'è nel gdrcd.
I agree.
27/09/2014 14:32:38
Riscontro qualche problemino tecnico, che essenzialmente viene dal fatto che non sono programmatore.
Ho inserito nella lista delle opzioni del menù a tendina (dove c'è invita, caccia elenco etc) l'opzione Password, ho creato nel database il campo password in Mappa come suggerito e ora sono bloccata alla parte fondamentale, il codice nella pagina ref_header.inc.php
la parte di codice interessata credo di averla trovata, anche perchè ci sono i commenti vicino, quindi trovo la lista di if e else che permettono di codificare l'invita, caccia etc. ma non so modificarla a dovere.
preciso che quando ho inserito il campo password nel menù a tendina ho dato come clausole SOLO che la stanza fosse privata e ho tolto quelle riguardanti il proprietario, altrimenti l'opzione non l'avrebbe vista nessuno, non essendo nessuno il proprietario di quella chat ed io invece vorrei che chiunque abbia facoltà di inserire la password.
Qualcuno può aiutarmi con quel pezzo di codice?
27/09/2014 14:37:11
Posta la parte interessata con le modifiche che hai tentato di effettuare, magari possiamo fornirti qualche dritta ;-)
27/09/2014 14:49:00
gentilissimi :)
} else { //Altrimenti e' un comando di stanza privata.
$info = gdrcd_query("SELECT invitati, nome, password, proprietario FROM mappa WHERE id=".$_SESSION['luogo']."");
$ok_command=FALSE;
if($info['proprietario']==$_SESSION['login']){$ok_command=TRUE;}
if(strpos($_SESSION['gilda'],$info['proprietario'])!=FALSE){$ok_command=TRUE;}
if (($type=="5")&&($ok_command===TRUE)){ //invita
gdrcd_query("UPDATE mappa SET invitati = '".$info['invitati'].','.gdrcd_capital_letter(strtolower(gdrcd_filter('in', $tag_n_beyond)))."' WHERE id=".$_SESSION['luogo']." LIMIT 1");
gdrcd_query("INSERT INTO chat ( stanza, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", 'System message', '".$_SESSION['login']."', NOW(), 'S', '".gdrcd_capital_letter(gdrcd_filter('in', $tag_n_beyond)).' '.$MESSAGE['chat']['warning']['invited']."')");
if(empty($_POST['tag'])===FALSE)
{
gdrcd_query("INSERT INTO messaggi ( mittente, destinatario, spedito, letto, testo ) VALUES ('System message', '".gdrcd_capital_letter(gdrcd_filter('in',$_POST['tag']))."', NOW(), 0, '".$_SESSION['login'].' '.$MESSAGE['chat']['warning']['invited_message'].' '.$info['nome']."')");
}
} else if (($type=="6")&&($ok_command===TRUE)){ //caccia
$scaccia=str_replace(','.gdrcd_capital_letter(gdrcd_filter('in', $tag_n_beyond)), '',$info['invitati']);
gdrcd_query("UPDATE mappa SET invitati = '".$scaccia."' WHERE id=".$_SESSION['luogo']." LIMIT 1");
gdrcd_query("INSERT INTO chat ( stanza, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", 'System message', '".$_SESSION['login']."', NOW(), 'S', '".gdrcd_capital_letter(gdrcd_filter('in', $tag_n_beyond)).' '.$MESSAGE['chat']['warning']['expelled']."')");
} else if ($ok_command===TRUE){ //elenco
$ospiti=str_replace(',', '', $info['invitati']);
gdrcd_query("INSERT INTO chat ( stanza, mittente, destinatario, ora, tipo, testo ) VALUES (".$_SESSION['luogo'].", 'System message', '".$_SESSION['login']."', NOW(), 'S', '".$MESSAGE['chat']['warning']['list'].': '.$ospiti."')");
}//else
questa è la parte incriminata!
io avevo provato ad inserire qualcosa così tra l'invita e il Caccia:
else if ($type=="8") { //password
else if((empty($_POST['tag'])===FALSE)&&($_POST['tag'])==$password))
gdrcd_query("UPDATE mappa SET invitati = '".$info['invitati'].','.gdrcd_capital_letter(strtolower(gdrcd_filter('in', $_SESSION['login'])))."' WHERE id=".$_SESSION['luogo']." LIMIT 1");
ripeto, programmare non è la mia professione, e non vorrei far mettere le mani nei capelli a nessuno... siate compassionevoli :)
il mio intento era di scrivere:
se il type è 8 (parametro già inserito nel menù a tendina) e nello spazio Tag c'è una parola che è identica alla password per quella chat (parametro già inserito nel DB in Mappe)
allora integra l'elenco degli invitati con il nome del pg che ha inviato l'azione (quindi quello che si è loggato) nel luogo dove ha inviato l'azione.
però poichè mi da un errore è chiaro che non ho saputo codificare, ovviamente ho corretto anche questa riga qui:
$info = gdrcd_query("SELECT invitati, nome, password, proprietario FROM mappa WHERE id=".$_SESSION['luogo']."");
27/09/2014 15:23:24 e modificato da blancks il 27/09/2014 15:23:44
dramsstaff ha scritto: il mio intento era di scrivere:
se il type è 8 (parametro già inserito nel menù a tendina) e nello spazio Tag c'è una parola che è identica alla password per quella chat (parametro già inserito nel DB in Mappe)
allora integra l'elenco degli invitati con il nome del pg che ha inviato l'azione
E' sbagliata la logica a monte.
Un personaggio che non è presente nella lista invitati non può vedere il form della chat, si ritroverà un avviso di "Chat riservata" al suo posto.
Per autenticare questo personaggio e dargli modo di accedere devi andare in pages/frame_chat.inc.php e creare un form con un campo di testo che permetta al personaggio (inserendo la giusta password) di vedersi inserire il nickname tra gli invitati.
Le funzioni su cui stai lavorando nel ref_header dovrebbero permettere invece al proprietario della stanza di cambiare la password.
27/09/2014 15:30:42
Quindi qui di seguito inserire il form con il campo dove mettere la parola d'ordine e far si che questa rimandi all'elenco invitati aggiungendo chi ha messo la password corretta, giusto?
//se e' privata e l'utente non ha titolo di leggerla
if ($allowance === FALSE) {
echo '<div class="warning">'.$MESSAGE['chat']['whisper']['privat'].'</div>';
mi aiuteresti?
27/09/2014 15:38:55
Esattamente all'interno di quel controllo, si.
Ti sto già aiutando xD
Se non sai neanche indicativamente cosa scrivere a livello di codice integrerò la mia risposta appena ho un po di tempo libero in più.
Nel frattempo, ti lascio il collegamento a qualche risorsa -spero- utile per capire come impostare il form ;-)
http://www.html.it/pag/16069/struttura-del-tag-form/ http://www.html.it/pag/16069/struttura-del-tag-form/ ↗
http://www.html.it/pag/16071/il-tag-input/ http://www.html.it/pag/16071/il-tag-input/ ↗
http://www.html.it/pag/16072/i-bottoni-sumbit-reset-button-image/ http://www.html.it/pag/16072/i-bottoni-sumbit-reset-button-image/ ↗
27/09/2014 15:43:05
Grazie mille, provo a creare il campo da me con i link, se proprio dovesse venirne fuori una tragedia vi importunerò nuovamente :)
gentilissimo!
27/09/2014 17:04:05 e modificato da gdr-online.com il 25/07/2022 15:50:25
Dunque, la parte della creazione del campo è riuscita, adesso c'è il campo in cui inserire la password e i relativi bottoni.
Ho avuto diversi dubbi riguardo l'action, per ora non l'ho proprio inserito e sembra che inviando ricarichi sempre la stessa pagina dove si trova il campo, il che dovrebbe essere l'effetto voluto ma poichè il codice fatto da me fa pietà non ho potuto verificare l'effettivo funzionamento del tutto, quindi non so se la mancanza di action potrebbe portare a dei problemi.
Come detto non ho avuto buoni risultati con il codice pertanto copio il codice che ho attualmente e ciò che è uscito fuori graficamente dalla creazione del campo e resto in mistica attesa di aiuto, grazie :)
//se e' privata e l'utente non ha titolo di leggerla
if ($allowance === FALSE) {
echo '<div class="warning">'.$MESSAGE['chat']['whisper']['privat'].'</div>
<br><br>
<div>Farsi riconoscere<br>
<form method="post" target="_self">
<input type="text" name="password" value=""><br>
<input type="submit" value="Entra"><input type="reset" value="Ripeti">
</form></div>';
gdrcd_query("SELECT invitati, nome, password, proprietario FROM mappa WHERE id=".$_SESSION['luogo']."");
if((empty($_POST['password'])===FALSE)&&($value==$password))
{
gdrcd_query("UPDATE mappa SET invitati = '".$info['invitati'].','.gdrcd_capital_letter(strtolower(gdrcd_filter('in', $_SESSION['login'])))."' WHERE id=".$_SESSION['luogo']." LIMIT 1");
}
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Tibia ↗
Hero Wars ↗
RAID Shadow Legends ↗
The Coven ↗
War Thunder ↗
New Orleans ↗
Crossout ↗
Enlisted ↗
Tiles Survive ↗
Sea of Conquest ↗