Entra

View Full Version : [php]sessioni..un pò di chiarezza..


SteR9
11-04-2004, 10:05
non riesco a capire come funzionano le sessioni in php...ho trovato troppi esempi diversi...
per esempio ho trovato le sessioni tipo questa..
session_register("SESSION_DATA");
$SESSION_DATA["count"] = 0;

ma non riesco ad usarle...e ho trovato le sessioni tipo queste...
$_SESSION["ciao"]

ora quali sono le sessioni come quelle in asp...per intenderci session("nome")?

ho usato le sessioni come queste $_SESSION["ciao"] e sul mio pc funzionano ma se per esempio le uso su lycos è come se la sessione rimanesse salvata e non si cancella...help!grazie
ciao :)

Fenomeno85
11-04-2004, 10:17
devi mettere in tutte le pagine che utilizzano la sessione:

session_start();

buona Pasqua ;)

~§~ Sempre E Solo Lei ~§~

Fenomeno85
11-04-2004, 10:19
ah se leggi la guida su www.php.net e cerchi session troverai tutto :)

~§~ Sempre E Solo Lei ~§~

SteR9
11-04-2004, 10:34
Originariamente inviato da Fenomeno85
ah se leggi la guida su www.php.net e cerchi session troverai tutto :)

~§~ Sempre E Solo Lei ~§~
session_start();
lo metto...ma con il primo esempio nn mi funzionano lo stesso...su php.net ho trovato degli esempi ma non mi sono molto chiari...
e soprattutto non capisco perchè sul mio pc utilizzando $_SESSION["ciao"] va...mentre su lycos no...poi non ho ben chiaro a cosa serva session_name();...
non è che potresti farmi un esempio funzionante?? :)

buona pasqua anche a te!;)

Fenomeno85
11-04-2004, 13:29
dipende da come è settato il file php su lycos ... comunque:


----
//si inizializza una variabile

<?session_start();?>
<html>
<head>
<title>Pagina inizializzazione</title>
</head>
<body>
<?
$_SESSION['numero'] = 1;
?>
<a href="pagina2.php">Incrementa</a>
</body>
</html>

----

//si incrementa la variabile
<?session_start();?>
<html>
<head>
<title>Incremento e visualizzo</title>
</head>
<body>
<?
$_SESSION['numero'] ++;
echo $_SESSION['numero'];
?>
</body>
</html>



spero di averti chiarito un pò :) ... poi:

session_name non so che dirti, se non ho capito male serve a far ritornare il nome della sessione che hai registrato. Ormai non ti serve utilizzare session_register perchè basta che usi la variabile di sessione $_SESSION.

Comunque ho provato su lycos ma questo codice non funziona.

~§~ Sempre E Solo Lei ~§~

SteR9
11-04-2004, 18:59
ok allora non è un problema solo mio di lycos e se le variabili di sessione si usano con $_SESSION['numero'] ho capito benissimo come funzionano...quindi a questo punto...uno spazio web che supporti php e che non sia ne lycos e ne altervista? :)
grazie!

Fenomeno85
11-04-2004, 19:06
secondo be basterebbe modificare il file ini ... basta capire il come ;)

Buona Pasqua

~§~ Sempre E Solo Lei ~§~

cionci
11-04-2004, 21:04
Originariamente inviato da SteR9
ok allora non è un problema solo mio di lycos e se le variabili di sessione si usano con $_SESSION['numero'] ho capito benissimo come funzionano...quindi a questo punto...uno spazio web che supporti php e che non sia ne lycos e ne altervista? :)
grazie!
Attenzione...è importante dare session_register prima di qualunque codice PHP che provoca un output e prima di qualunque codice HTML (anche di una riga vuota)...

SteR9
11-04-2004, 21:22
Originariamente inviato da cionci
Attenzione...è importante dare session_register prima di qualunque codice PHP che provoca un output e prima di qualunque codice HTML (anche di una riga vuota)...
ma devo dargli anche un nome?
e in tutte le pagine in cui richiamo le mie variabili di sessione richiamo session_name("nome") ?

cionci
11-04-2004, 21:44
No...nessun nome... Non importa...

nebuk
12-04-2004, 20:08
Originariamente inviato da Fenomeno85
secondo be basterebbe modificare il file ini ... basta capire il come ;)

Buona Pasqua

~§~ Sempre E Solo Lei ~§~

Mi sembra che con le nuove versioni di PHP si usino le cosidette variabili SUPERGLOBALI (come la $_SESSION, $_POST, $_GET ) in quanto le vecchie variabili globali potrebbero portare a problemi di sicurezza e quindi il loro uso e' stato disabilitato di default nel file php.ini.
Per poterle utilizzare basta cambiare l'apposita voce in php.ini (mi sfugge il nome.. tipo "register_globals" o qualcosa del genere).

Fenomeno85
12-04-2004, 20:17
Originariamente inviato da nebuk
Per poterle utilizzare basta cambiare l'apposita voce in php.ini (mi sfugge il nome.. tipo "register_globals" o qualcosa del genere).

il problema è come cambiarle sul server di lycos :)

~§~ Sempre E Solo Lei ~§~

SteR9
12-04-2004, 20:18
Originariamente inviato da nebuk
Mi sembra che con le nuove versioni di PHP si usino le cosidette variabili SUPERGLOBALI (come la $_SESSION, $_POST, $_GET ) in quanto le vecchie variabili globali potrebbero portare a problemi di sicurezza e quindi il loro uso e' stato disabilitato di default nel file php.ini.
Per poterle utilizzare basta cambiare l'apposita voce in php.ini (mi sfugge il nome.. tipo "register_globals" o qualcosa del genere).
il problema è che non penso proprio che si possa modificare il file php.ini di lycos...ma non capisco perchè questo tipo di variabili di sessione non funzionino :confused:

cionci
12-04-2004, 20:41
Ma in locale ti funziona ?

SteR9
12-04-2004, 22:11
Originariamente inviato da cionci
Ma in locale ti funziona ?
si,in locale funziona benissimo!!

cionci
13-04-2004, 01:11
Boh...forse è un php vecchio...

Allora prova con session_start (sempre prima di qualsiasi output ed in ogni pagina) e poi con session_register("nome_variabile")...

Ciao

Fenomeno85
13-04-2004, 10:20
si può modificare il file ini su lycos??

~§~ Sempre E Solo Lei ~§~

cionci
13-04-2004, 10:32
Originariamente inviato da Fenomeno85
si può modificare il file ini su lycos??
Le opzioni del file ini si possono modificare temporaneamente da script...non è questo i problema... Il problema è che se php è una versione vecchia puoi anche modificare le opzioni, ma non servirà sicuramente a niente ;)

Fenomeno85
13-04-2004, 11:30
la versione non è per nulla vecchia :)

guardate qui:

http://utenti.lycos.it/Fenomeno85/PHPINFO.php

~§~ Sempre E Solo Lei ~§~

cionci
13-04-2004, 12:10
Faccio qualche prova e vi faccio sapere...

SteR9
13-04-2004, 12:43
ho prvoato anche con session_register("nome_variabile") ma non va...il bello è che se riavvio il pc poi funziona è come se la sessione non si cancellasse chiudendo il browser... :confused:

cionci
13-04-2004, 12:45
<?php
session_start();
?>
<html>
<head>
<title>Prova</title>
</head>
<body>
<?= $_SESSION["i"] = $_SESSION["i"] + 1; ?>
</body>
</html>

http://utenti.lycos.it/ci0nci/prova.php

Premi aggiorna...

SteR9
13-04-2004, 14:14
Originariamente inviato da cionci

<?php
session_start();
?>
<html>
<head>
<title>Prova</title>
</head>
<body>
<?= $_SESSION["i"] = $_SESSION["i"] + 1; ?>
</body>
</html>

http://utenti.lycos.it/ci0nci/prova.php

Premi aggiorna...
si,si incrementa...come mai a me non funziona?? :confused:

Fenomeno85
13-04-2004, 15:55
il problema è che non funziona se punta ad un'altra pagina come avevo fatto ;)

~§~ Sempre E Solo Lei ~§~

cionci
13-04-2004, 16:04
Non è che avete lasciato i commenti ?

//si incrementa la variabile

E' al di fuori della parentesi...quindi è considerato un output !!!

Comunque:

http://utenti.lycos.it/ci0nci/prova.php
http://utenti.lycos.it/ci0nci/prova2.php

Incrementano la stessa variabile...

Fenomeno85
13-04-2004, 17:36
no nessun commento ... e se faccio un link a un'altra pagina non funziona ... bo :wtf:

~§~ Sempre E Solo Lei ~§~

SteR9
13-04-2004, 18:26
io faccio così

session_start();
session_register("controllo");
if (!isset($_SESSION["controllo"]) ){
aggiornaDb();
Dbgiornaliero();
}

in locale funziona ma su lycos no... :muro: :muro:

cionci
13-04-2004, 18:58
E così ?

session_start(); //ricordati di farlo prima di qualsiasi altro nella pagina
if (!isset($_SESSION["controllo"]) ){
aggiornaDb();
Dbgiornaliero();
}

SteR9
13-04-2004, 19:03
Originariamente inviato da cionci
E così ?

session_start(); //ricordati di farlo prima di qualsiasi altro nella pagina
if (!isset($_SESSION["controllo"]) ){
aggiornaDb();
Dbgiornaliero();
}
anche senza session_register...non va :muro:

cionci
13-04-2004, 19:15
Ho messo in prova2 questo codice:

<?session_start();?>
<html>
<head>
<title>Incremento e visualizzo</title>
</head>
<body>
<?
if (!isset($_SESSION["i"]) ){
echo "Non è settato";
}
else
echo "E' settato";
?>
</body>
</html>

E' praticamente identico al tuo...
Clicka prima qui (chiudi il browser ogni volta): http://utenti.lycos.it/ci0nci/prova2.php
Poi qui: http://utenti.lycos.it/ci0nci/prova.php
E poi di nuovo qui: http://utenti.lycos.it/ci0nci/prova2.php

Fenomeno85
14-04-2004, 09:18
dubbio ... perchè la prima volta quando clicco non viene incrementata la variabile??

il codice è quello che ho postato prima:

la pagina: http://utenti.lycos.it/Fenomeno85/Nuova%20cartella/pagina1.php

~§~ Sempre E Solo Lei ~§~

cionci
14-04-2004, 09:21
Originariamente inviato da Fenomeno85
dubbio ... perchè la prima volta quando clicco non viene incrementata la variabile??

A me la incrementa... La prima volta visualizza 2...

Fenomeno85
14-04-2004, 13:21
Originariamente inviato da cionci
A me la incrementa... La prima volta visualizza 2...

scusa adesso lo fa anche a me :wtf:

~§~ Sempre E Solo Lei ~§~

cionci
14-04-2004, 13:22
Quindi funziona tutto ;)

SteR9: il rpoblema deve essere altrove xchè qui sembra andare tutto bene...

Fenomeno85
14-04-2004, 15:55
Originariamente inviato da cionci
Quindi funziona tutto ;)

SteR9: il rpoblema deve essere altrove xchè qui sembra andare tutto bene...

ste posta il codice così vediamo ;)

~§~ Sempre E Solo Lei ~§~

SteR9
14-04-2004, 20:05
il codice è un pò lungo perchè è un contatore,in pratica dall'immagine dove stampo gli accessi al sito e gli utenti online vado anche a incrementare gli accessi...lo posto a blocchi


session_start();
if (!isset($_SESSION["controllo"]) ){
aggiornaDb();
Dbgiornaliero();
}
stampaImmagine();

function aggiornaDb(){
//...
//faccio tutte le operazioni per aggiornare gli accessi e poi setto
//la variabile di sessione
//...
$_SESSION["controllo"] = "ok";
}

e poi ho le altre due funzioni che sono DbGiornaliero nella quale vado
a inserire gli accessi giornalieri
e stampaImmagine() nella quale creo l'immagine con le Gd


ciao ;)

cionci
14-04-2004, 20:12
Posta tutto il codice... HTML compreso...altrimenti non isoliamo il problema... Escludi magari solo quelle due funzioni con il Db...