PHPSESSID non lo devi usare! è automatico!
tu vuoi fare le sessioni?
![]()
1.php
2.phpCodice PHP:session_start();
$_SESSION['var'] = 'ciao';
# oppure
$var = 'ciao';
session_register('var');
Codice PHP:session_start();
echo $_SESSION['var'];
//ciao
![]()
![]()
PHPSESSID non lo devi usare! è automatico!
tu vuoi fare le sessioni?
![]()
1.php
2.phpCodice PHP:session_start();
$_SESSION['var'] = 'ciao';
# oppure
$var = 'ciao';
session_register('var');
Codice PHP:session_start();
echo $_SESSION['var'];
//ciao
![]()
![]()
grazie webces![]()
ma a che serve? per i cookie?
ciauz![]()
PERFECTT!! grazie mille!![]()
ho provato funziona bene tutto!!
ciauz![]()
![]()
bien!![]()
ciao![]()
Ciao Fabio,Originariamente inviato da Fabio Heller
Inizialmente credevo anch'io che i cookies venissero rinnovati di volta in volta, invece no: se imposti come durata di default del cookie 30 secondi, la sessione durerà comunque al massimo 30 secondi anche se non fai pause nella navigazione. Conclusione: si perde la sessione.
Invece i files sul server, dureranno il tempo stabilito nel php.ini ma hanno soltanto un x% di probabilità di essere eliminati.
Provo a riassumere questo "casino"
1) I file di sessione sul server vengono rinnovati ad ogni accesso purchè questo avvenga entro il tempo fissato in session.gc_maxlifetime MA potrebbero non venire eliminati mai anche se scaduti (dipende dalla probabilità in session.gc_probability), quindi indovinando l'id di sessione (oppure salvandolo tra i preferiti nell'url della pagina)la sessione potrebbe risultare eterna.
2) Se sono temporanei (session.cookie_lifetime=0) i cookies
mantengono il collegamento con la sessione fino alla chiusura della finestra del browser invece, se hanno una scadenza precisa, solo fino alla scadenza (che non viene rinnovata di volta in volta).
Se proprio li vuoi rinnovare, prima che scadano, forse lo puoi fare "manualmente" ma non ho provato...
<?
$si= session_id() ;
$scadenza= 600 ; //10 minuti in secondi
setcookie ("PHPSESSID",$si,time()+ $scadenza);
?>
ho fatto delle ricerche circa questo comportamento anomalo che denunciavi. Sto usando PHP5.
Ho impostato la scandenza del cookie di sessione a 30 secondi (session_set_cookie_param(30))
Questi sono gli header scambiati
come puoi vedere, ad ogni risposta del server, viene reinviato il cookie di sessione, ovviamente di identico valore ma con scadenza posticipata di altri 30 secondi. Sembra quindi che PHP5 non abbia i problemi da te riscontrati. Non ho fatto prove con PHP4 a riguardo.codice:GET /index2.php HTTP/1.1 ... ---------------------------------------------------------- HTTP/1.x 200 OK Date: Sun, 21 Nov 2004 09:09:10 GMT Set-Cookie: PHPSESSID=c72e7ac59cd56915a424be3b6f27c80d; expires=Sun, 21-Nov-2004 09:09:40 GMT; path=/ .... ---------------------------------------------------------- ---------------------------------------------------------- POST /index2.php HTTP/1.1 Cookie: PHPSESSID=c72e7ac59cd56915a424be3b6f27c80d ---------------------------------------------------------- HTTP/1.x 302 OK Date: Sun, 21 Nov 2004 09:09:38 GMT ... Set-Cookie: PHPSESSID=c72e7ac59cd56915a424be3b6f27c80d; expires=Sun, 21-Nov-2004 09:10:08 GMT; path=/ Location: main.php ...
![]()
Ciao Gianni,Originariamente inviato da Gianni_T
come puoi vedere, ad ogni risposta del server, viene reinviato il cookie di sessione, ovviamente di identico valore ma con scadenza posticipata di altri 30 secondi. Sembra quindi che PHP5 non abbia i problemi da te riscontrati. Non ho fatto prove con PHP4 a riguardo.
![]()
non mi ricordavo più di aver scritto quella cosa![]()
Per il punto 1 confermo in pieno, per il punto 2 invece, spero si tratti di un bug della versione che ho utilizzato quando ho fatto le prove, e che sia stato risolto....perchè la cosa effettivamente è assurda.
Ad ogni modo non utilizzo mai i cookie permanenti nelle sessioni, quindi la cosa mi ha creato pochi fastidi fino ad ora
per favore NIENTE PVT TECNICI da sconosciuti
scusa nn ho capito una cosa
a chiusura del browser scade la sessioen..ma questa rimane fisicamente in una cartellina(di default tmp) nel browser
giusto?
Con un delete elimini dal db le sessioni scadute..........
mi sfugge l'uso del db......perchè a meno che nn vengano inseriti nn + in una cartellina ma direttamente nel db,
queste sessioni come le distruggi materialmente?
Se le inserisci nel db, mi dici come fai?..ceh sono un blob?coem faccio a cambiare il di percorso di salvataggio delle sessioni senza mettere mano nel php.ini
SìOriginariamente inviato da recensore
scusa nn ho capito una cosa
a chiusura del browser scade la sessioen..ma questa rimane fisicamente in una cartellina(di default tmp) nel browser
giusto?
Vengono inserite interamente nel DB, in campi textCon un delete elimini dal db le sessioni scadute..........
mi sfugge l'uso del db......perchè a meno che nn vengano inseriti nn + in una cartellina ma direttamente nel db,
queste sessioni come le distruggi materialmente?
session_set_save_handler() e...un po' di magia, non serve mettere mano al php.iniSe le inserisci nel db, mi dici come fai?..ceh sono un blob?coem faccio a cambiare il di percorso di salvataggio delle sessioni senza mettere mano nel php.ini
per favore NIENTE PVT TECNICI da sconosciuti
mille grazie....
![]()
un altra domanda
ho scoperto una cosa ceh nn avevo ancora capito
(*)ho inserito una riga di codice a ogni inizio pagina ocn cui creo una sessione,,,
ma solo nel caso nn esista già.
se nn ho capito male ci può essere una sessione per finestra browser...
in quanto alla chiusura di questa (se la scadenza è quella di default),questa scade.
Registrando le sessioni in un db mi sono accorta che mi registra uan diversa sessione
(lo so perchè uso come chiave primaria il nome della sessione)
ad ogni refresh della pagina o link ad un altra (sempre nella stessa finestra) (*)pagina del sito.
Nn e possibile che ad ogni refresh o cambio pagina del sito me ne crei una,
il db sarebbe piena zeppa dopo 30 minuti,registrandole!!
è giusto inserire ad ongi inizio pagina questa riga?
//-------------------------------------------------
if(!isset($_SESSION)){
session_start();
session_register("lingua","menu","id_Sessione");
$_SESSION['id_Sessione'] = session_id();
//-------------------------------------------
$con = @mysql_connect("localhost","root","");
if(!$con){
echo "Impossibile connetersi al db erorre n°: ".mysql_errno().", " .mysql_error().".";
}else{
//----------------------
@mysql_select_db("sessioni",$con);
//----------------------
$insert = ("INSERT IGNORE INTO sess (id_S,accesso) VALUES('".$_SESSION['id_Sessione']."',now())");
//--------------------------------------------
.....................
}
}
nn ho ancora fatto le modifiche di registrazione materiale della sessione sul db...perhcè ho letto ora l'e-mail....
nn far caso alla query d'INSERT
ho fatto un pò di ricerche per capire cosa fosse sta magia
e devo dire hce mi sento con l'acqua alla gola!!!!
<?php
function open ($save_path, $session_name) {
global $sess_save_path, $sess_session_name;
$sess_save_path = $save_path;
$sess_session_name = $session_name;
return(true);
}
function close() {
return(true);
}
function read ($id) {
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "r")) {
$sess_data = fread($fp, filesize($sess_file));
return($sess_data);
} else {
return(""); // Deve restituire "" qui.
}
}
function write ($id, $sess_data) {
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
if ($fp = @fopen($sess_file, "w")) {
return(fwrite($fp, $sess_data));
} else {
return(false);
}
}
function destroy ($id) {
global $sess_save_path, $sess_session_name;
$sess_file = "$sess_save_path/sess_$id";
return(@unlink($sess_file));
}
/*********************************************
* ATTENZIONE - Qui avete bisogno di implementare qualche *
* sorta di routine per il cestinaggio. *
*********************************************/
function gc ($maxlifetime) {
return true;
}
session_set_save_handler ("open", "close", "read", "write", "destroy", "gc");
session_start();
// proceed to use sessions normally
?>
//-----------------------------------------------------------------
sono nel pallone
devo passare a quelle funzioni inserite nella funzione session_set_save_handler dei dati come l'id della sessione,
che ancora nn conosco perche creo la sessione dopo con session start
e poi una curiosità $save_path è il percorso un cui vengono salvate di norma i fiel temporanei ex nel mio pc = (E:\programmi\php\EasyPHP1-7\tmp) ?
e per routine di cestinaggio ceh intende?
posso passargli 1 come di default?
scusate le tante domande .... ma sono agli inizi ...sto cercando di fare ordine
grazie