Utilizzo di sessioni

Vorrei alcuni consigli sull'utilizzo delle sessioni.

Potrebbero essermi utli per implementare un sistema di statistiche del mio sito che mi consenta di conteggiare le cisite al mio sito da qualunque pagine sia l'ingresso?

Beh, cercherò di spiegarmi meglio.

Una delle rubriche del mio sito registra la maggiore frequenza di visitatori.

Attualmente ho semplicemente implementato un piccolo contatore che conta le visite della home page, ma questo esclude tutte le visite che vengono effettuate direttamente alla rubrica interna.

Vorrei per il momento un consiglio su quale strada seguire per cercare di trovare anche attraverso lo studio la soluzione migliore.

Vi ringrazio e scusatemi sono un programmatore php neofita e autodidatta.

P.S. dove trovo un guida all'utilizzo delle funzionalità di PHP relative alle sessioni in italiano (il mio inglese è di livello scolastico e stentavo ad avere il 6)  ;D

inviato 9 anni fa
pasquale
X 0 X
P.S. dove trovo un guida all'utilizzo delle funzionalità di PHP relative alle sessioni in italiano (il mio inglese è di livello scolastico e stentavo ad avere il 6)  ;D

Prova a leggere prima qui, così poi vedi se fanno al caso tuo o ti conviene implementare in un altro modo

http://www.phpnews.it/articoli/php/le-sessioni/

ciao

Lore

risposto 9 anni fa
Lore
Lore
1
X 0 X

Comunque le sessioni non sono adatte a questo tipo di cose, la sessione scade quando il browser del visitatore viene chiuso e/o lascia il sito.

Per avere un riscontro delle pagine devi aggiungere una funzione che memorizzi i dati in ogni pagina.

risposto 9 anni fa
LonelyWolf
X 0 X

Beh effettivamente per le singole pagine ho provveduto a mettere un contatore con un codice di questo tipo

include ('file_con_dati_accesso_o_altro_nome_si_voglia_dare.php');

$db= mysql_connect($hostname, $user, $pass)
or die("connessione con il database al momento non disponibile");

mysql_select_db($database, $db);

$query= "SELECT visite FROM $sezione WHERE id='$id'";

$result= mysql_query($query);

$output= mysql_result($result,visite);

$nuovo = $output + 1;

echo("<P> La pagina è stata letta $nuovo volte</P>");

$query= "UPDATE $sezione SET visite = '$nuovo' WHERE id='$id' ";

$result = mysql_query($query);

la variabile $sezione viene indicata con metodo GET (http://www.amicidomenicani.it/vedi_rubriche.php?sezione=domenicani&id=12), purtroppo il mio hosting non ha attivato le super variabili e la versione utilizzata di PHP è la 4, quindi mi trovo a studiare sul libro il PHP 5 con le super variabili e poi dover adattare a PHP senza supervariabili attive.

Molto interessante l'articolo sulle sessioni.

Comunque infondo la sessioni, se ho capito bene, mi consente di fare un buon conteggio delle visite perché mi indica l'arrivo del visitatore su qualsiasi pagina del sito e si chiude appena il browser viene chiuso o il navigatore abbandona le pagine del sito.

Provo a programmare un contatore con le sessioni e se ho problemi vi faccio sapere.

Grazie

risposto 9 anni fa
pasquale
modificato 9 anni fa
X 0 X

Per far funzionare il contatore su tutte le pagine del sito è necessario che tutte le pagine del sito richiamino il codice del contatore. Le sessioni non ti aiuteranno in questo.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Però dispongo di un database MySQL e se ad ogni avvio di sessione incremento un valore nel database dovrei ottenere il risultato sperato.

Avrei un aumento del contatore delel visite che tenga conto dell'inzio sessione che avviene in ogni parte del sito.

Su ogni pagina ho già un richiamo all'intestazione che è sempre la stessa, se aggiungo al file da includere nell'intestazione una funzione che faccia aumentare il contatore e memorizzi il dato nel database dovrebbe andar bene.

Altrimenti accetterei volentieri un consiglio.

Ringrazio fin d'ora per i vostri consigli e la vostra pazienza.

risposto 9 anni fa
pasquale
X 0 X

Però dispongo di un database MySQL e se ad ogni avvio di sessione incremento un valore nel database dovrei ottenere il risultato sperato.

Avrei un aumento del contatore delel visite che tenga conto dell'inzio sessione che avviene in ogni parte del sito.

Su ogni pagina ho già un richiamo all'intestazione che è sempre la stessa, se aggiungo al file da includere nell'intestazione una funzione che faccia aumentare il contatore e memorizzi il dato nel database dovrebbe andar bene.

Ok, così va bene.  :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Ho provato a creare questa funzione da inserire su ogni pagina

<?php
session_start();

if (!IsSet($_SESSION['incrementa_visita']))

   {
   
   $_SESSION['incrementa_visita'] = 1;


   }
   
else
   {
   
   $_SESSION['incrementa_visita'] = 0;

   }

   include ('file_contenente_dati_accesso_database.php');

$db= mysql_connect($hostname, $user, $pass)
or die("connessione con il database al momento non disponibile");

mysql_select_db($database, $db);

$query= "SELECT visite FROM visite";

$result= mysql_query($query);

$output= mysql_result($result,visite);

$nuovo = $output + $_SESSION['incrementa_visita'];

$query= "UPDATE visite SET visite = $nuovo";

$result = mysql_query($query);

   
?>

Vorrei capire come si comporta la sessione.

Se aggiorno la pagina con internet explorer il valore aumenta.

Se però passo ad un'altra pagina e poi ritorno a quella iniziale e l'aggiorno il valore non aumenta.

Qual'è deve essere il comportamento giusto delle sessioni, all'aggiornarsi della pagina deve o no aumentare?

Se invece passo ad un altra pagina che ha inserito sempre questo stesso codice all'inizio non aumenta e ritornando attraverso il link alla pagina di prima non aumeta.

Sembrerebbe esserci quindi questo comportamento delle sessioni.

La prima pagina da inizio alla sessione, ma se faccio il refresh inizia una nuova sessione.

Se invece mi muovo su un'altra pagina del sito e poi ritorno su quella inziale non si registra una nuova sessione.

E' esatta questa mia congentura?

Un'altra cortesia, secondo voi ho programmato bene questo "contatore" di visite?

Vi ringrazio molto e scusate se approfitto della vostra pazienza e del vostro sapere. Anche se sono sicuro che quello che voi date come insegnamento vi appaga molto. In fondo si ha più gioia nel dare che nel ricevere.

Beh scusate questa parentesi filosofica saranno i fumi della stanchezza che mi annebbiano un po' la mente  ;D

Quest'ultimo passaggio mi pare corretto, poiché passando ad un altra pagina

risposto 9 anni fa
pasquale
X 0 X

potresti riportare il valore della direttiva "session.use_cookies" che trovi nel php.ini?

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Directive session.use_cookies

Local Value on

Master Value on

Comunque non credo di poter cambiare i valori del php.ini, anche se non ho mai chiesto al hosting proprietario del server su cui si trova il mio dominio.

Un saluto

risposto 9 anni fa
pasquale
X 0 X

probabilmente con il refresh della pagina non viene inviato il cookie di sessione spedito alla prima visualizzazione della pagina. Questo potrebbe essere il motivo per cui la sessione viene ricreata al primo refresh.

 :bye:

risposto 9 anni fa
Gianni Tomasicchio
X 0 X

Grazie Gianni,

penso di aver capito.

Pongo i seguenti quesiti:

1. Comunque posso considerare un buon metodo quello che ho programamto per conteggiare le visite?

2. Come mai ora nel navigare il sito mi ritrovo nei link generati dal sito l'id della sessione riportato come se fosse una variabile GET

http://www.amicidomenicani.it/categoria_sacerdote.php?id=11&PHPSESSID=391c0ac4db65344b3d1c61f46887c1cd

3. Si può evitare questa cosa oppure è necessaria?

Saluti

risposto 9 anni fa
pasquale
X 0 X

1) il tuo metodo prevede una UPDATE anche quando non hai da aggioranre il contatore

2) è spiegato qui:

http://www.phpnews.it/articoli/php/le-sessioni/1/

All'avvio di una sessione, che avviene chiamando il comando session_start(), il PHP crea un codice univoco (session ID) che identificherà l'utente corrente nelle successive connessioni e lo invia al client (il browser) attraverso un cookie o accodandolo a tutti gli URL presenti nella pagina richiesta. La scelta tra uno dei due metodi di propagazione del session id viene fatta relativamente alle capacità del browser ed alle impostazioni presenti nel php.ini.

Il nome del cookie e della variabile passata via URL sono impostati di default a PHPSESSID.

3) Alcune direttive del php.ini modificano tale comportamento:

http://www.phpnews.it/articoli/php/le-sessioni/5/

session.use_only_cookies

specifica se i cookies saranno l'unico mezzo da usare per memorizzare il sessioni id sul client. Questo parametro, introdotto con PHP 4.3.0, previene possibili problemi di sicurezza legati al passaggio del session id via URL.

 :bye:

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