Salve ragazzi, ho appena iniziato lo studio del php e ora mi sono imbattuto nelle sessioni.
Nel cercare di comprenderne bene a fondo l'utilizzo, mi piacerebbe vedere la lista dei file "sess_XXX" nel session_path.
Innanzitutto volevo chiedervi se su altervista è possibile modificarlo. Poi volevo sapere come poterne ottenere i file.
attualmente per l'utilizzo delle sessioni sto usando questa classe:
Codice:
<?php
class SessionManager implements SessionHandlerInterface{
private $savePath;
public function start_session($boolean=true){
if (session_start()){
if ($boolean==true){
PhpTools::printf("[SESSION_MANAGER] - Session has been started/retrieved (".session_id().").\n");
}
}
}
public function end_session(){
session_unset();
session_destroy();
PhpTools::printf("[SESSION_MANAGER] - Session has been closed.\n\n");
}
public function getSession_ID(){
return session_id();
}
public function get($something){
if(isset($_SESSION[$something])){
return $_SESSION[$something];
}
else return null;
}
public function set($someString,$someObject){
$_SESSION[$someString]=$someObject;
}
public function setSession_ID($id){
session_id($id);
}
public function open($savePath, $sessionName) {
PhpTools::printf("[SESSION_MANAGER] - SESSION_OPEN().\n");
$this->savePath = $savePath;
if (!is_dir($this->savePath)) {
mkdir($this->savePath, 0777);
PhpToolS::printf("[SESSION_MANAGER] - File is: "."$this->savePath/sess_$id"."\n\n");
}
return true;
}
public function close(){
PhpTools::printf("[SESSION_MANAGER] - SESSION_CLOSE().\n\n");
return true;
}
public function read($id){
PhpTools::printf("[SESSION_MANAGER] - SESSION_READ().\n");
PhpTools::printf("[SESSION_MANAGER] - Scanning directory: ".$this->savePath."\n");
print_r(scandir(session_save_path()));
PhpToolS::printf("[SESSION_MANAGER] - File is: "."$this->savePath/sess_$id"."\n\n");
return (string)@file_get_contents("$this->savePath/sess_$id");
}
public function write($id, $data){
PhpTools::printf("[SESSION_MANAGER] - SESSION_WRITE().\n");
PhpToolS::printf("[SESSION_MANAGER] - File is: "."$this->savePath/sess_$id"."\n\n");
return file_put_contents("$this->savePath/sess_$id", $data) === false ? false : true;
}
public function destroy($id){
$file = "$this->savePath/sess_$id";
PhpTools::printf("[SESSION_MANAGER] - SESSION_DESTROY().\n");
PhpTools::printf("[SESSION_MANAGER] - File is:".$file."\n\n");
if (file_exists($file)) {
unlink($file);
}
return true;
}
public function gc($maxlifetime){
PhpTools::printf("[SESSION_MANAGER] - SESSION_GC().\n\n");
foreach (glob("$this->savePath/sess_*") as $file) {
PhpTools::printf("FILE IS: ".basename($file));
if (filemtime($file) + $maxlifetime < time() && file_exists($file)) {
unlink($file);
}
}
return true;
}
}
Da questo codice, purtroppo, sebbene non riceva segnali di errore, l'istruzione:
print_r(scandir(session_save_path()));
non mostra nulla, e credo che print_r, che restituisce false in caso di fallimento, non riesca ad usare tale cartella...
Per cui volevo provare a modificare il path delle sessioni con uno a mia scelta per vedere chiaramente i file anche tramite ftp, giusto per testare il suo funzionamento.
Potete aiutarmi? Grazie!