sessie uitlezen
Kun je een sessie bestand uitlezen en/of verwijderen? Ik weet de lokatie van mijn sessie bestand maar als ik file_get_contents gebruik om het bestand uit te lezen krijg ik een lege string terug. Zijn sessie bestanden op de een of andere manier beveiligd waardoor je ze niet zomaar kunt uitlezen / weggooien?
dus als je unset($_SESSION['test']); doet, is de sessie verwijderd denk ik.
Session_destroy gebruiken ;)
De session start was ik vergeten. en je kunt ook ahhhh... sorry, ik zal het iets anders proberen uit te leggen. Ik weet hoe je een sessie kunt uitlezen via $_SESSION['key'], maar dat is niet wat ik bedoel. Ik bedoelde of het mogelijk is om het daadwerkelijke bestandje (waar de gegevens in staan) uit te lezen of te verwijderen. Het gaat dan om zo'n ses_344we42340sadr bestandje.
Ja, dat zal ongetwijfeld lukken, maar het was meer dat ik het me afvroeg uit veiligheidsoverwegingen. Als je een sessie destroyt blijft het sessiebestand volgens mij nog even op de server zwerven. Ik vroeg me af of je dit bestand ook kan verwijderen (bijvoorbeeld met unlink). Dus iemand logt uit, en meteen gooi ik het sessie bestand weg van de server.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
function getOnlineUsers(){
/* Default directory: /var/lib/php/session */
if ( $directory_handle = opendir( session_save_path() ) )
{
$count = 0;
while ( false !== ( $file = readdir( $directory_handle ) ) )
{
if($file != "." && $file != "..")
{
if(time()- fileatime(session_save_path() . "/" . $file) < MAX_IDLE_TIME * 60)
{
$count++;
}
else //remove files with PHP - Unlink()
{
unlink(session_save_path() . "/" . $file);
}
}
}
closedir($directory_handle);
return $count;
}
else
{
return false;
}
}
?>
function getOnlineUsers(){
/* Default directory: /var/lib/php/session */
if ( $directory_handle = opendir( session_save_path() ) )
{
$count = 0;
while ( false !== ( $file = readdir( $directory_handle ) ) )
{
if($file != "." && $file != "..")
{
if(time()- fileatime(session_save_path() . "/" . $file) < MAX_IDLE_TIME * 60)
{
$count++;
}
else //remove files with PHP - Unlink()
{
unlink(session_save_path() . "/" . $file);
}
}
}
closedir($directory_handle);
return $count;
}
else
{
return false;
}
}
?>
Oke, thanks. Ik heb ze op een eigen locatie staan en laat ze opruimen door de garbage collector, maar het lijkt me ook handig om ze te kunnen weggooien via unlink. Echter, als ik dat doe krijg ik permission denied, dus vreemd dat het bij jou dan wel lukt. (Volgens mij kun je met de glob() functie veel makkelijker een directory uitlezen?)
Ozzie PHP op 15/11/2010 20:09:03:
permission denied klopt, je moet de directory waarin ze komen chmodden met 666Oke, thanks. Ik heb ze op een eigen locatie staan en laat ze opruimen door de garbage collector, maar het lijkt me ook handig om ze te kunnen weggooien via unlink. Echter, als ik dat doe krijg ik permission denied, dus vreemd dat het bij jou dan wel lukt. (Volgens mij kun je met de glob() functie veel makkelijker een directory uitlezen?)
Ah oke, moet je dat op server niveau doen, of kan dat ook via PHP? Ik hoop van wel, anders moet je telkens de server instellingen aanpassen en dat is niet relaxed :-/
Aad B op 15/11/2010 20:10:44:
je moet de directory waarin ze komen chmodden met 666
Als je de rechten van een directory op 666 zet dan mag je de directory niet meer in (geen access recht). Je bedoelt 777 neem ik aan.
- SanThe - op 15/11/2010 20:23:53:
Als je de rechten van een directory op 666 zet dan mag je de directory niet meer in (geen access recht). Je bedoelt 777 neem ik aan.
Aad B op 15/11/2010 20:10:44:
je moet de directory waarin ze komen chmodden met 666
Als je de rechten van een directory op 666 zet dan mag je de directory niet meer in (geen access recht). Je bedoelt 777 neem ik aan.
666 is rw-rw-rw en moet werken. 777 is rwxrwxrwx
@Ozzie: eenmalig een directory is toch wel te doen ?
Gewijzigd op 15/11/2010 20:32:15 door Aad B
Aad B op 15/11/2010 20:30:57:
666 is rw-rw-rw en moet werken.
Niet voor een directory.
De 'x' staat voor access, oftewel toegang.
- SanThe - op 15/11/2010 20:35:26:
Niet voor een directory.
De 'x' staat voor access, oftewel toegang.
Aad B op 15/11/2010 20:30:57:
666 is rw-rw-rw en moet werken.
Niet voor een directory.
De 'x' staat voor access, oftewel toegang.
@SanThe: thanks, weer wat geleerd.
Aad B op 15/11/2010 20:30:57:
@Ozzie: eenmalig een directory is toch wel te doen ?
Liever niet, aangezien ik een universeel systeem wil maken waarbij ik niet telkens een server instelling wil hoeven aan te passen. Hoe komt die map eigenlijk beveiligd? Ik heb 'm namelijk zelf aangemaakt en niks gewijzigd aan de beveiliging. Doet PHP dat zelf? En is het dan niet mogelijk om via PHP (of htaccess????) de rechten van zo'n map te wijzigen?
Ozzie PHP op 15/11/2010 20:54:12:
Hoe komt die map eigenlijk beveiligd? Ik heb 'm namelijk zelf aangemaakt en niks gewijzigd aan de beveiliging.
Jij hebt die map aangemaakt met een tool ingelogd onder jouw ftp codes, zeg owner=ozzie? Nu probeer owner apache/apache erin te schrijven en dat mag niet zomaar.Aad B op 15/11/2010 20:30:57:
@Ozzie: eenmalig een directory is toch wel te doen ?
Hoe komt die map eigenlijk beveiligd? Ik heb 'm namelijk zelf aangemaakt en niks gewijzigd aan de beveiliging.
Hmmm, oke... maar de bestanden worden wel automatisch verwijderd als de sessie is verlopen dus dat is vreemd toch? :-s