Jump to content
php.lv forumi

Par sesijām un autorizēšanos


andrisp

Recommended Posts

Es izmantoju apt. šādu pārbaudi pie katras lapas:

if(isset($_SESSION['username']) && $_SESSION['ip'] == $_SERVER['REMOTE_ADDR'] && $_SESSION['loged_in'] == TRUE) {
header("Location: index.php");
die();
}

it kā viss strādāja normāli,

 

bet bija vajadzība pēc vairākām saita kopijām (katra savā direktorijā, bet uz viena servera, zem vienas ip), līdz ar to tagad tas kas ir ielogojies vienā saita versijā, tiek klāt arī citām.

 

Ko lai dara ? Itkā laikam vajadzētu ģenerēt kautkādu unikālu stringu, vai kautko tā, bet nevaru izdomāt.

 

Paldies

Link to comment
Share on other sites

tas ir viens, bet vai nav risinājums, kurā es varētu veidot cik vien kopijas vēlētos (vienkārši kopējot, neko nemainot kodā)? laikam kautkas jāmēģina ar esošās direktorijas nolasīšanu un pārbaudi uz to.

Edited by andrisp
Link to comment
Share on other sites

andrisp--> ar vienkaarshu kopeeshanuneko nepanaaksi :(

teoreetiski ir pilniigi vienalga no kuras direktorijas saac logotie......

risinaajums ir genereet (vai saglabaat ar rocinjaam failaa )plniigi unikaalu mainiigo...

vai parbaudi index.php faila (faila no kura logojies) pilno celju un to izmanto kaa identifikaatoru....

Link to comment
Share on other sites

Tieši tā:

 

..vai parbaudi index.php faila (faila no kura logojies) pilno celju un to izmanto kaa identifikaatoru..

 

Izmanto $fn = $_SERVER['SCRIPT_FILENAME'].

Lai atrastu vajadzīgo mapi, es lietotu

 

$fn = explode('/', $fn);

$fn = $fn[n];

 

kur n - mapes dziļums (ja tās mapes nav vienā līmenī, tad nu gan būs čakarīgāk).

Link to comment
Share on other sites

Izdomāju šādi:

 

Ielogojoties izdara šādi:

$_SESSION['folder'] = getcwd();

 

Pēc tam katrā lapā kopā ar pārējiem darām šādi:

if (!preg_match('/^'.addslashes($_SESSION['folder']).'/', getcwd())) {
die();
}

 

Pēc idejas vajadzētu ļaut vērt lapas, kas ir $_SESSION['folder'] direktorijā un arī apakšdirektorijās.

 

UPD: šis nestrādās, jo visu laiku tiks overvraitots folder mainīgais..

Edited by andrisp
Link to comment
Share on other sites

if (!preg_match('/^'.addslashes($_SESSION['folder']).'/', getcwd())) {
die();
}

wtf ir tas? :)

Es vēl saprastu šādi:

if (!preg_match('/^'.preg_quote($_SESSION['folder'],'/').'/', getcwd())) {

vai vispār jau vispareizāk būtu:

if (strpos(getcwd(), $_SESSION['folder'])!==0) {

Link to comment
Share on other sites

if (!preg_match('/^'.preg_quote($_SESSION['folder'],'/').'/', getcwd())) {

Paldies, nezināju, ka ir tāds preg_quote :)

 

if (strpos(getcwd(), $_SESSION['folder'])!==0) {

no šitā labums tikai tāds, ka ātrāk strādā un skaitās 'labais stils' ? Nu tipa ja var iztikt bez regexiem, tad vajag mēģināt neizmantot tos ?

 

UPDATE:

vispār baigi nepatīkama problēma..

ja esmu ielogojies uz viena servera vairākās lapās no vienas ip, tad

izlogojoties no vienas lapas (uztaisot, piem. $_SESSION = array(); )

tikšu izmests arī no pārējām.

 

Piem, ja hostēju vairākus saitus (neatkarīgus) uz viena hosta, tad kā

lai atrisina šo problēmu ? Vai to varbūt nemaz tā nevar ?

Edited by andrisp
Link to comment
Share on other sites

andrisp-->

cit:

...lapās no vienas ip, tad...

/cit;

kaads sakars sessijai ar IP?

atbilde.. nekaads!!!

P.S. ko tad lai dara n*100ti useri kas logojas no vienas IP ?

edit:

kaada Xsa peec tev vajag n kopijas kuras skaties no 1 kompja? ...

Edited by Grey_Wolf
Link to comment
Share on other sites

×
×
  • Create New...