PHP prenos seje preko več domen
2 naročnika
2 naročnika
Živjo,
iščem rešitev, za prenos seje preko več domen (.com, .de, .it, ...).
Nagibam se k rešitvi, da bi sejo prenesel kar preko Query stringa (www.domena.de?sessid=....).
Sicer sem našel še eno opcijo link.
Katera rešitev je boljša oz. bolj varna in ali pozna kdo kako boljšo opcijo?
Hvala za pomoč,
David
3 odgovori
živjo
sejjo kot takšno ne moreš kopirat iz strežnika na strežnik.
seja je ustvarjena iz strani strežnika in velja le zanga.
če imaš več domen na istem strežniku potem lahko malo pogolfaš ali pa sejo če že preneseš rewritaš čez obstoječo samo ne vem ali to gre za sejo ali zgolj za neko vrednost shranjeno v session.
skratka...
predpostavljamo da imaš $_SESSION shranjeno v SESID in to bi rad prenašal naokoli kot nekakšen podatek.
se pravi pošlješ med strežniki lahko preko $GET (tisto kar si napisal) ali $POST (bolj varna rešitev saj obiskovalec morda do seje sploh en pride).
no na strežnik na katerega pošlješ $_GET prepišeš obstoječo sejo npr
if(isset($GET['sessid'])) {
$SESSION['sessid'] = $_GET['sessid'];
}
samo ker strežnik jo ni določil jo morda sploh nima shranjeno in izpade kot neveljavna oz. "hack" ne mo deloval na nivoju seje temveč na nivoju podatka.... preveri pa povej če je to to...
bolje bi bilo če bi imel centralno domeno ali še bolje centralni cookie.
Če bo imeš še kdo tak primer. Trenutno sem rešil tako, da sem ustvaril php datoteko sesstrans.php:
function check_session_exists($id){
$path=session_save_path() . "/sess_" . $id;
if (file_exists($path) && (time()-filemtime($path)<session_cache_expire())) {
return true;
}
return false;
}
if ((!$_COOKIE[session_name()]) && $_GET['usrid']) {
if (check_session_exists($_GET['usrid'])) {
session_id($_GET['usrid']);
}
}
session_start();
if(isset($_GET['lang']) && $_GET['lang'] == "de"){
header( 'Location: http://www.domena.de' ) ;
die();
} else {
header( 'Location: http://www.domenacom' ) ;
die();
}
Smo se pa odločili, da bomo rajši prešli na poddomene. Ker med poddomenami se seja prenese avtomatsko, v kolikor je session cookie nastavljen pravilno.
lp, David