Jump to content
php.lv forumi

session_destroy(); session_save_path();


raivis

Recommended Posts

Ja lietotājs ielogojās web lapā, direktorijā session_save_path()

failā piem. sess_83b29f30ab7e4d8652e4f65b961432bc saglabājas šā lietotāja $_SESSION["user"] un $_SESSION["pass"] vērtības.

login.php

$user = $_POST["user"];
$pass = $_POST["pass"];
$_SESSION["user"] = $user;
$_SESSION["pass"] = $pass;
include("userArea.inc");

Ja lietotājs no web lapas izlogojās caur linku logout.php, sessijas vērtības tiek izdzēstas, bet kā lai to pašu panāk, kad lietotājs, kurš ir ielogojies - proti, atrodas online režīmā, lai izlogotos, lieto nevis linku logout.php, bet aizver Internet Explorer logu..!???

logout.php

$_SESSION["user"]  = false;
$_SESSION["pass"]  = false;
session_destroy(); //session_unset(); session_unregister();

$path = session_save_path()."/"; //[Session] session.save_path
$handle=opendir($path);
while ($file = readdir($handle)) {
if(is_dir($path.$file) && $file != ".") {
} elseif ($file != "." && filesize($path.$file) == 0) {
   unlink($path.$file);
 }
}
echo "Jūs esat izlogojies!";

Link to comment
Share on other sites

include("userArea.inc");

 

tā nedrīkst darīt userArea.inc ;abāk lieto to pašu paplašinājumu .php nevis .inc paprovē ar browseri atvērt to .inc, tad redzēsi atšķirību !

13017[/snapback]

 

tas atkarīgs no tā kā apache nokonfigurēts, var jau būt, ka viņš inc failus arī parsē, bet vispār labāk uz to nepaļauties, ja nehostējies uz savas kastes.

Link to comment
Share on other sites

Ar session.gc_maxlifetime nav viss līdzēts..

Lietotājam ielogojoties, tmp[session_save_path();] direktorijā saglabājās lietotāja dati-> $_SESSION['user'], $_SESSION['pass'] vērtības:

1. ja lietotājs izlogijās, ieejot adresē logout.php, tad viss ir Ok!=> session_destroy(); echo "Jūs esat izlogojies!";

2. ja lietotājs izlogojās, vienkārši aizverot Internet Explorer logu, tad session tmp faili paliek neiztukšoti/nelikvidēti!

- kā lai panāku, lietotājam online režīmā aizverot Internet Explorer logu,=> session_destroy();

Link to comment
Share on other sites

nekaa jau nevar zinaat vai tas juuzers veel kautkur noklikos un vai vinjam vispaar veel tava lapa atveerta. Taapeec jaapienjem max lifetime peec kura uzskatam ka juuzers vairs nav "online". ja buutu taads online statuss nosakaams tad jau taas sesijas nebuutu vajadziigas :)

Link to comment
Share on other sites

vecie faili tiek dzeesti, kad kaads apmeklee lapu, lai nav jaaliek klaat robots, kas to dara automaatiski. taa, ka ja to lapu neviens intensiivi neapmeklee, tad varbuut taa arii izskataas.

Link to comment
Share on other sites

Drošivien nepareizi darīju!? - lai noteiktu, cik lietotāji ir sistēmas onlinā, login.php kodā ierakstīju:

$data = "online.txt";

$file = @join("", file($data));

$online = @fopen($data, "w");

fputs($online, "|".$user);

fputs($online, $file);

fclose($online);

, bet logout.php kodā:

$data = "online.txt";

$online = str_replace(array("\n","\r"," "),"",file_get_contents($data));

$online = explode("|",$online);

$key = array_search($user,$online);

if ($key !== false) unset($online[$key]);

$file = fopen($data,"w");

fwrite($file,implode("|",$online));

fclose($file);

, bet index.php kodā izvada, cik (un kas) ir onlainā:

$data = "online.txt";

$online = str_replace(array("\n","\r"," "),"",file_get_contents($data));

$online = explode("|",$online);

$online = count($online) - 1;

echo "on-line: <b>".$online."</b><br>"; //un taa taalaak..

..līdz ar to, ja lietotājs izlogojās aiztaisot Internet Explorer logu, nevis ieejot adresē logout.php, online.txt fails netiek koriģēts un uzrāda, ka lietotājs vēl ir onlinā!...?

..kā lai to apeju!?

~domāju, ka kļūdaini/nekorekti man būtu to tā atstāt.

Link to comment
Share on other sites

login.php kodā saglabā failā laiku, kad lietotājs ir iegājis lapā.

Bet index.php failā salīdzini tekošo laiku, ar katra ieraksta laiku, ja piemēram tas lielāks par 10 minūtēm, tad pieņem, ka lietotājs ir izgājis no lapas un neskaiti viņu (tb izmet ārā).

Link to comment
Share on other sites

login.php kodā saglabā failā laiku, kad lietotājs ir iegājis lapā.

Bet index.php failā salīdzini tekošo laiku, ar katra ieraksta laiku, ja piemēram tas lielāks par 10 minūtēm, tad pieņem, ka lietotājs ir izgājis no lapas un neskaiti viņu (tb izmet ārā).

Piedod, bet vai tas būtu korektājais variants!?

Jo, iespējams, ka lietotājs vēl pēc 10min. (600sec.) atrodās sistēmas onlinā, bet tas vairs diemžēl netiek ņemts vērā...

Link to comment
Share on other sites

ja nemaldos, tad tavā labā būs vai nu 0 vai 1 lietājs, jo atverot failu ar fopen('fails', 'w'), tas fails tiek no dzēsts un rakstīts no jauna.
..te tev gan рпр nebūs taisnība; - jau izmēģināju! - tik daudz strādā, lai saskaitītu onlinā esošos lietotājus.
Link to comment
Share on other sites

×
×
  • Create New...