[RISOLTO][gdrcd 5.4] Redirect chat
[RISOLTO][gdrcd 5.4] Redirect chat postato il 14/08/2022 15:17:29 nel forum programmazione, open source e hosting e modificato da psycosocial il 18/08/2022 11:25:53
Buongiorno a tutti e buon ferragosto anticipatamente :)
Ho provato a cercare nel forum ma non sono riuscita a trovare nulla quindi, mi appello a voi!
sto sbattendo la testa su di un problemino al quale non riesco a venire a capo.
Molto velocemente: ho creato un sistema di navigazione in cui, attraverso un apposito pannello, si può gestire il movimento delle imbarcazioni attraverso diverse mappe - al click del pulsante, la mappa di appartenenza della chat viene modificata e con essa anche l'ultima mappa di tutti i personaggi a bordo e con un redirect all'invio viene ricaricata la pagina a chi gestisce il pannello.
Il problema nasce proprio qui: per chi ha i comandi, all'invio della navigazione viene appunto ricaricata la pagina e si ritroverà nella dir=X&map_id=nuovamappa mentre chi è semplicemente invitato risulta ancora in dir=x&map_id=mappainiziale e quindi in una chat che, al refresh, risulterà diversa.
C'è un modo per fare sì che la pagina venga ricaricata con l'id della nuova mappa?
Avevo pensato ad inserire un redirect ma non so bene dove infilarlo.
Spero di essermi spiegata bene.
Intanto, grazie in anticipo.
Pagine → 1
16/08/2022 16:44:44
psycosocial ha scritto:
C'è un modo per fare sì che la pagina venga ricaricata con l'id della nuova mappa?
Avevo pensato ad inserire un redirect ma non so bene dove infilarlo.
Hello 👋
Per risolvere il problema dovresti controllare periodicamente per ogni utente se è stato richiesto di muoverlo ad una nuova destinazione e, in caso, lanciare il redirect.
Come concetto generale, GDRCD effettua controlli periodici tramite degli iframe nella pagina e puoi quindi scegliere se usarne uno esistente ( come quello che controlla se ti sono arrivati nuovi messaggi privati per esempio ) o se crearne uno nuovo allo scopo ( soluzione più elegante ma che necessita di qualche minuto in più ).
Quanto al controllo in se, ti consiglierei di creare una nuova colonna nella tabella personaggio con valore di default "0" e chimarla hasbeenmoved ( o come meglio pensi abbia senso ). Quando il capogruppo invia il form di navigazione, oltre ad aggiornare la mappa per gli utenti coinvolti aggiorni anche il nuovo campo assegnandogli il valore "1".
Il tuo controllo effettivo dovrebbe quindi verificare quando questo campo diventa di valore "1", leggere la mappa in cui vuoi tralocare qull'utente, aggiornare nuovamente il campo a "0" (altrimenti rischi di mandarli in loop infinito) e infine azionare la redirect.
17/08/2022 19:50:56 e modificato da gdr-online.com il 18/08/2022 10:55:04
blancks ha scritto:
Grazie per la dritta :)
sto provando un po' a smanettare seguendo il tuo consiglio ma sono ancora ad un punto semi-morto.
Avendo modificato l'impostazione dei presenti, sto provando a fare il controllo proprio in quel frame in base alla posizione del personaggio sulla mappa con un semplicissimo
<?php if($user['ultima_mappa']!=$_SESSION['mappa']) {?> //qui dovrebbe partire il redirect al refresh del frame presenti
.Il problema nasce con il redirect che quando viene lanciato carica
('/main.php?dir='.$record['id'].'&map_id='.$record['id_mappa'])
- ovviamente dentro al frame e non a "tutta pagina". Ovviamente sbaglio qualcosa ma le mie nozioni da smanettona della domenica arrivano fino a qui.
18/08/2022 10:50:02
Probabilmente stai provando a redirezionare l'utente lato PHP.
PHP di per se non ha idea dell'esistenza dei frames sul browser dell'utente perché quando l'utente vede qualcosa a video PHP ha già esaurito il suo compito, pertanto può solo comunicare di redirezionare la singola pagina che viene ricaricata nel frame in cui si trova.
Devi usare javascript per operare il redirect al livello più alto della pagina, con qualcosa del tipo:
<?php if($user['ultima_mappa']!=$_SESSION['mappa']) { ?>
<script>
//qui dovrebbe partire il redirect al refresh del frame presenti
window.top.location.assign('<?php echo '/main.php?dir='.$record['id'].'&map_id='.$record['id_mappa']; ?>');
</script>
<?php } ?>
18/08/2022 11:25:28
blancks ha scritto: Probabilmente stai provando a redirezionare l'utente lato PHP.
PHP di per se non ha idea dell'esistenza dei frames sul browser dell'utente perché quando l'utente vede qualcosa a video PHP ha già esaurito il suo compito, pertanto può solo comunicare di redirezionare la singola pagina che viene ricaricata nel frame in cui si trova.
Devi usare javascript per operare il redirect al livello più alto della pagina, con qualcosa del tipo:
<?php if($user['ultima_mappa']!=$_SESSION['mappa']) { ?>
<script>
//qui dovrebbe partire il redirect al refresh del frame presenti
window.top.location.assign('<?php echo '/main.php?dir='.$record['id'].'&map_id='.$record['id_mappa']; ?>');
</script>
<?php } ?>
Dopo aver aggiustato alcune parti del redirect dove non leggeva la dir e la mappa, ora funziona alla grandissima. Grazie infinite Blancks. Preziosissimo . Chiudo :)
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!
Storie di Agarthi ↗
The Coven ↗
War Thunder ↗
Foundation Galactic Frontier ↗
Exclusive Villa GdR ↗