session_register

  • Creatore Discussione Creatore Discussione minatore
  • Data di inizio Data di inizio

minatore

Utente Attivo
25 Set 2007
410
0
0
Ciao a tutti,
ho un problemino, sto creando un elementare contavisite, come esercizio, ma ho difficoltà con le sessioni.
<?php
if($_GET)
{
$pagina=$_GET['link'];
}
else
{
$pagina="index";
if(file_exists("contatore.txt"))
{
$file = ("contatore.txt");
$visite = file($file);
$visite[0]++;
session_start();
session_register('visite');
$fp = fopen($file , "w");
fputs($fp , "$visite[0]");
fclose($fp);
}
else
{
$visite[0]="File non trovato";
}
}
?>
Alla fine faccio stampare
<?
print"<td width='154' height='16'><font color='#FFFFFF'>Visita: N° $visite[0]</font></td>";
?>
Il problema è che se toglio la parte del codice che riguarda la session,riesco a stampare il contavisite, solo che ogni volta che aggiorno la pagina mi aumenta di 1, mentre se rimango il codice così come vi ho mostrato, non mi visualizza niente.
Vi ringrazio in anticipo
cioa e buona domenica
 
Ciao, non ho capito benissimo a cosa ti servono le sessioni per la creazione di un contavisite. La cosa migliore da fare (e la più semplice) è quello di creare un file .txt (come hai fatto te) dove salvare le visite.
ad esempio:

PHP:
<?php

if (!$_GET)
{
	// apre il file contatore (se già esiste) e legge il valore delle visite ($n_visite)
	$file=fopen("contatore.txt","r");
	$n_visite=fread($file,20);
	fclose($file);
	// // apre il file contatore (o lo crea) aggiorna le visite e le riscrive sul file
	$file=fopen("contatore.txt","w+");
	$n_visite = $n_visite + 1;
	fwrite($file, "$n_visite");	
	fclose($file);
	
	// stampa il numero delle visite.
}
else
{}

print ("<br><center>Numero visite del sito: $n_visite");
?>

questo semplice script in PHP ti crea un contatore funzionante al 100%. Se arrivi in questa pagina da una pagina interna la sito, puoi usare GET per non modificare il contavisite. Se arrivi alla pagina dall'esterno, il contatore di aggiorna.
Le sessioni,secondo me non vanno bene, perchè hai il rischio che si cancellino.

Saluti, Mauri.
 
Ciao, non ho capito benissimo a cosa ti servono le sessioni per la creazione di un contavisite. La cosa migliore da fare (e la più semplice) è quello di creare un file .txt (come hai fatto te) dove salvare le visite.
ad esempio:

PHP:
<?php

if (!$_GET)
{
	// apre il file contatore (se già esiste) e legge il valore delle visite ($n_visite)
	$file=fopen("contatore.txt","r");
	$n_visite=fread($file,20);
	fclose($file);
	// // apre il file contatore (o lo crea) aggiorna le visite e le riscrive sul file
	$file=fopen("contatore.txt","w+");
	$n_visite = $n_visite + 1;
	fwrite($file, "$n_visite");	
	fclose($file);
	
	// stampa il numero delle visite.
}
else
{}

print ("<br><center>Numero visite del sito: $n_visite");
?>

questo semplice script in PHP ti crea un contatore funzionante al 100%. Se arrivi in questa pagina da una pagina interna la sito, puoi usare GET per non modificare il contavisite. Se arrivi alla pagina dall'esterno, il contatore di aggiorna.
Le sessioni,secondo me non vanno bene, perchè hai il rischio che si cancellino.

Saluti, Mauri.

Ciao e grazie x avermi risposto, infatti il mio problema era quello di non incrementare il contavisite se già un utente si trova all'interno del sito, ecco xrchè avevo pensato alle sessioni.
Comunque adesso provo il tuo script e ti faccio sapere.
Scusatemi se non ho scritto il codice tra i tag.
Grazie Mauri
 
Ciao.... finalmente ho capito a cosa ti servivano le sessioni.... :)

Comunque il mio condice non è completo.... cioè..... ogni pagina interna al sito deve passare alla homepage tramite GET (in questo caso) o anche tramite POST (ma è più noioso) una variabile.
Nella homepage, la recuri con $_GET['var'] ed il ciclo IF che ti ho messo ha solo semplicemente il compito di verificare se la variabile esiste (ossia se sei arrivato alla home da una pagina interna al sito) e quindi non aumenta il contatore, altrimenti se la variabile non esiste, il contatore aumenta.
Se hai bisogno di altre spieazioni fammelo sapere.

Ciao, Mauri.
 
Ciao.... finalmente ho capito a cosa ti servivano le sessioni.... :)

Comunque il mio condice non è completo.... cioè..... ogni pagina interna al sito deve passare alla homepage tramite GET (in questo caso) o anche tramite POST (ma è più noioso) una variabile.
Nella homepage, la recuri con $_GET['var'] ed il ciclo IF che ti ho messo ha solo semplicemente il compito di verificare se la variabile esiste (ossia se sei arrivato alla home da una pagina interna al sito) e quindi non aumenta il contatore, altrimenti se la variabile non esiste, il contatore aumenta.
Se hai bisogno di altre spieazioni fammelo sapere.

Ciao, Mauri.


Ciao Mauri, ne approfitto e prendo il tuo invito al volo
ho modificato il mio script con il tuo così
Quando clicco su di un link richiamandomi la stessa pagina mi da un errore
"Notice: Undefined variable: n_visite"
e non mi visualizza + il contavisite.
Con questa cosa voglio provare se stando nello stesso sito mi incrementa il contavisite
Grazie da Minatore
 
Hai ragione.... questo perchè lo script che ti avevo mandato non era competo.
Scrive questo:

PHP:
<?php
// recupera la variabile che mandi dalla pagine interne ES: <a href='prova2.php?var=1'>Index</a>
$var= $_GET['var'];

// apre il file contatore (se già esiste) e legge il valore delle visite ($n_visite)
$file=fopen("contatore.txt","r");
$n_visite=fread($file,20);
fclose($file);

if (!$var)
{
	// // apre il file contatore (o lo crea) aggiorna le visite e le riscrive sul file
	$file=fopen("contatore.txt","w+");
	$n_visite = $n_visite + 1;
	fwrite($file, "$n_visite");	
	fclose($file);
}
else
{}
// stampa il numero delle visite.
print ("<br><center>Numero visite del sito: $n_visite");
?>

In questo modo la variabile $n_visite esiste sempre perchè viene letta dal file, mentre il ciclo IF aumenta le visite se la variabile $var non esiste e non incrementa le visite se $var esiste. Questa variabile ($var) deve essere mandata tramite GET da tutte le pagine interne al sito.
Se non sono stato chiaro e per qualsiasi problema non esitare a scrivermi.

Ciao
 

Discussioni simili