View Full Version : [PHP] Usare un array in più pagina con una sessione
Ciao a tutti,
cercherò di spiegare in modo semplice il mio problema...
sto facendo un sito con altervista per un ufficio (sono in stage con la scuola) e ho creato una pagina in cui si inseriranno degli articoli, però siccome il personale dell'ufficio non riuscirebbe poi a gestire la cosa, volevo inserire in un'area riservata (questa l'ho fatta) un form in cui potranno inserire i dati dell'articolo (titolo, testo ecc.) e poi questi dati si dovranno inserire in un array e tramite la $_SESSION utilizzarlo in un' altra pagina in cui visualizzerò l'articolo usando i dati dell'array...
la mia domanda è se, facendo così i vari articoli inseriti in passato rimarranno visualizzati (magari mettendo in più pagine i vari articoli) o se si cancelleranno e si potrà vedere solo l'ultimo articolo inserito tramite il form?
So che sarebbe molto più facile utilizzare i database ma non so ancora come si usano e ho soltanto 3-4 giorni per finire questo lavoro.
Grazie mille in anticipo
provando, mi sto accorgendo che difficilmente si può fare con $_session perchè l'array che si sposterà nelle pagine non mantiene i vecchi articoli...
conoscete altri metodi per arrivare al risultato che vorrei??
intanto farò altri tentativi con $_session
Grazie
bobbytre
07-03-2011, 22:59
visto che non conosci ancora i database, e che è un esercizio di studio , e quindi si possono tralasciare i problemi di sicurezza e di prestazioni , potresti utilizzare i files e i cookies per ottenere lo stesso scopo.
Crei una cartella che abbia i permessi di lettura e scrittura all'interno della quale poi andrai a scrivere i files.
Dentro ogni file serializzi i valori dell'array che devi salvare e poi per ogni utente che accede assegni un cookie con un valore univoco che corrisponderà al nome del file che contiene di dati
Fatto questo risulta facile il resto , controlli se esiste il cookie , se esiste il cookie controlli se esiste il file , se esiste puoi leggere i dati che ti sei salvato,
se non esiste il cookie allora lo setti e crei anche il file.
Intanto grazie mille per la disponibilità...
forse non ho descritto bene il mio problema, perchè usando i cookies penso che rimarrei sempre nello stesso punto, io vorrei che i dati inseriti in un form, si trasportino (inseriti in un array) in un altro file in cui verranno registrati in un altro array, e poi facendo un banale ciclo vorrei visualizzare i dati...
questo riesco a farlo ma il problema è che se torno una seconda volta nel form e inserisco dei nuovi dati poi nella pagina in cui si visualizzeranno ci saranno soltanto quelli inseriti l'ultima volta e quindi non mi aggiunge questi dati a quelli già passati.
Così un amministratore passando nell'area riservata per inserire un nuovo articolo mediante il form, perderebbe il vecchio articolo già inserito la volta scorsa...
nella pagina in cui registro la sessione ho inserito questo codice:
<?php
if(isset($_POST["inserisci"]))
{ $titolo=$_POST["titolo"];
$immagine=$_POST["immagine"];
$testo=$_POST["testo"];
if($titolo<>"")
{
if($testo<>"")
{
session_start();
$articolo=array("titolo"=>$titolo,"immagine"=>$immagine,"testo"=>$testo);
$_SESSION["articolo"]=$articolo;
echo "articolo inserito";
}
else
{
echo "Non sono stati inseriti alcuni campi!";
}
}
else
{
echo "Non sono stati inseriti alcuni campi!";
}
}
?>
invece nella pagina in cui vorrei visualizzare gli articoli (news.php) ho inserito questo codice:
<?php
session_start();
$articoli=array();
if(isset($_SESSION['articolo']))
{
$articolo=$_SESSION['articolo'];
}
$articoli[count($articoli)]=$articolo;
foreach($articoli as $dati=>$info)
{
foreach($info as $chiave=>$valore)
{
echo $valore;
}
}
?>
creando un cookie avrei lo stesso risultato, porterei i dati del form in news.php inserendoli in un array e quest'ultimo verrà visualizzato però perderà i vecchi dati.:doh:
Forse non ho capito cosa intendi con la questione di creare dei files in cui serializzare i valori.
bobbytre
08-03-2011, 18:44
prova cosi
<?php
$filedb= "./news/news.txt";
if( isset($_POST['sent']) )
{
$val[] = $_POST['titolo'];
$val[] = $_POST['contenuto'];
$val[] = time();
file_put_contents($filedb,base64_encode(serialize($val))."\n", FILE_APPEND | LOCK_EX);
}
?>
<pre><h1>INSERISCI</h1><form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"><input name='sent' value='1' type='hidden' />
Titolo
<input name='titolo' value='' style='width:600px;' /><br />
Contenuto
<textarea name='contenuto' style='width:600px;'></textarea><br />
<button action='submit'>Invia</button>
<br />
</form>
<hr />
<?php
$r = file($filedb);
echo "<h1>NEWS</h1><table border=1><tr><th>Data</th><th>Titolo</th><th>Contenuto</th></tr>";
while( $x = array_pop($r))
{
$val = unserialize(base64_decode($x));
echo "<tr><td>".date("l jS \of F Y h:i:s A",$val[2])."</td><td>".$val[0]."</td><td>".$val[1]."</td></tr>";
}
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.