Sostituire i frame

Ciao Gianni, avrei bisogno di un'idea  ::)

Ho organizzato la pagina principale del mio sito con 4 frame di questo tipo:

|---------------------------------------------------|

|   frame11     |                                         |

|-----------------|                                         |

|                     |                                         |

|   frame12     |             frame21               |

|                     |                                         |

|---------------- |                                         |

|  frame13      |                                         |

|-------------------------------------------------- |

dove:

  • frame 11: contiene il pannello login-logout;
  • frame 12: contiene il menu dinamico;
  • frame 13: contiene info sugli accessi (effettua un refresh temporizzato);
  • frame 21: contiene il corpo del sito (ogni voce che seleziono dal menu viene visualizzata lì).

Si può pensare di ottenere lo stesso risultato senza form?

Per la colonna 1 non ci dovrebbero essere problemi a inglobarla in un unico file.

Il problema che mi pongo è per la seconda colonna. Come surrogare la funzione "target" dell'html senza avere un "obiettivo" effettivo in cui inviare i dati.

C'è la possibilita di attribuire un "id" all'area e di volta in volta selezionare il contenuto con cui riempirla?

Spero di essere stato chiaro e non troppo esigente...  :bye:

inviato 11 anni fa
Nico Colonna
X 0 X

Innanzitutto sostituire i frames è cosa buona e giusta, anzi doverosa! Se pensi che ogni frame è una chiamata al web server capirai che qualsiasi sforzo per eliminarli non è mai eccessivo.

Dal punto di vista dell'organizzazione grafica ci sono 2 strade: usare una o più tabelle oppure usare i tag div. La prima è consolidata e collaudata, la seconda è più moderna e più flessibile (ma forse meno intuitiva). Io uso le tabelle e quindi ti parlerò di queste  :P

Quindi inizia a realizzare una pagina HTML che contenda delle tabelle con le celle disposte secondo la struttura che intendi realizzare.

Nel tuo caso si potrebbe usare questa tabella:

<table width="100%" border="1">
  <tr> 
    <td width="150">frame 11</td>
    <td rowspan="3" align="center">frame 21</td>
  </tr>
  <tr> 
    <td>frame 12</td>
  </tr>
  <tr> 
    <td>frame 13</td>
  </tr>
</table>

La seconda cosa da considerare è che quando viene richiesta la pagina, lo script incaricato dovrà generare tutto il contenuto delle diverse celle, compito che invece con i frames era delegato a diversi script.

Tenendo presente ciò è lecito supporre che lo script possa inserire tali contenuti in altrettanti variabili: $frame11, $frame12 e così via.

A questo punto il gioco è fatto. Una volta che lo script ha generato e conservato l'output delle diverse regioni della pagina non resta che mettere tutto insieme. Basca quindi "farcire" la tabella con degli echo:

<table width="100%" border="1">
  <tr> 
    <td width="150"><?php echo $frame11?></td>
    <td rowspan="3" align="center"><?php echo $frame21?></td>
  </tr>
  <tr> 
    <td><?php echo $frame12?></td>
  </tr>
  <tr> 
    <td><?php echo $frame13?></td>
  </tr>
</table>

Nota come si ottiene così anche una netta separazione del codice PHP dal codice HTML rendendo tutto molto pulito. Continuando in questa direzione si può lasciare la tabella (o più in generale l'HTML, il cosiddetto template) in un file a parte e richiamarlo al termine dello script con un include.

Gli spunti sono tantissimi...  :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Esiste una funzione php che esegua il "refresh temporizzato" ovvero che ad intervalli di tempo regolari ricarichi una variabile?

Il punto è questo: nel frame13 inserisco il numero di utenti connessi, siccome questi sono ragionevolmente "variabili nel tempo" è necessario ricaricare la variabile $frame13 (come l'hai definita nella soluzione a tabelle).

 :bye:

risposto 11 anni fa
Nico Colonna
X 0 X

O metti un Javascript che ti ricarica la pagina, oppure usi AJAX: http://www.phpnews.it/content/view/267/80/

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Torniamo ai frame. Vediamo se ho capito bene... ???

Con i frame "adesso":

clicco su uno dei link del menu (in frame12) e passo dei parametri che vengono elaborati nel frame21. In pratica richiamo uno script diverso per ogni link, ciascuno con diverse funzioni che, a seconda dei parametri passati, possono essere di volta in volta eseguite.

Con un unica pagina in tabelle:

quando clicco sui link devo richiamare l'intera pagina main. Nella variabile $frame12 andro a caricare di volta in volta la pagina che voglio visualizzare, la scelta la faccio ancora con i parametri passati dal link.

Se è così, posso caricare la $frame12 con degli include dei vari script? In questo modo avrei comunque la possibilità di snellire il codice e separare i vari script in modo da gestirli separatamente!

Grazie

 :bye:

risposto 11 anni fa
Nico Colonna
X 0 X

Esatto, il meccanismo è quello. Come organizzare i singoli file contenenti il codice è comunque un altro problema. Mentre con i frames si è sostretti ad avere script distinti, in questo caso invece devi solo avere uno script che funga da  "gestore eventi" e che a seconda dei parametri passati decida cosa caricare. Ecco perché gli URL delle applicazioni PHP tendono a essere complessi: le query string devono contenere informazioni per le diverse parti della pagina.

Attento però a controllare correttamente i parametri che arrivano dall'URL, in modo che se un utente si mette a "giocare" con l'indirizzo questo non causi qualche grave danno al sistema.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X

Per ovviare al problema dei parametri in chiaro potrei utilizzare vie alternative come:

  • utilizzo del metodo POST;
  • utilizzo delle sessioni;
  • utilizzo delle sessioni solo per impostare un parametro di sicurezza di tipo random che, confrontato con quello passato alla pagina, mi dia accesso;

che ne dici?

 :bye:

risposto 11 anni fa
Nico Colonna
X 0 X

il passaggio via post ha diversi vincoli e quindi non è una tecnica da usare su tutte le pagine di un sito. Le sessioni vanno benissimo, anche senza usare particolari stratagemmi diabolici  >:D

Una volta che hai autenticato l'utente ed hai recuperato i suoi permessi ti basta verificare che ciò che stai per mostrare è lecito.

 :bye:

risposto 11 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili