Is het mogelijk dat als ik inlog op sessies op een domein dat ze op een ander domein ook nog werken?
Wil namen 2 systemen aan elkaar koppelen
Volgens mij kan dat niet, session is namelijk server side.

je kunt toch gewoon de sessievariabelen gecodeerd in de URL meegeven, op het 2e domein weer decoden en dan er weer een sessie van bouwen?
Angelino schreef op 13.04.2009 21:37
Is het mogelijk dat als ik inlog op sessies op een domein dat ze op een ander domein ook nog werken?
Wil namen 2 systemen aan elkaar koppelen

Dit kan alleen wanneer de 2 domains op de zelfde server draaien.

als je in de .htaccess van beide domains :
php_value session.cookie_domain "mijnsite.nl"
zet moet dit volgens mij werken ( niet zelf getest ) maar ergens eens gelezen...

grts, René
Mocht dat van René niet werken, kun je een soort applicatie bouwen met cookies en sessies op één centraal punt. En naar dat punt wordt telkens vanaf je website gekeken of men is ingelogd. Snap je?
Ja ben zelf eigenlijk ook wel benieuwd of dit werkt :) het werkt iig wel wanneer je tussen verschillende subdomains de session mee wilt nemen bijvoorbeeld: www.site.nl, nieuws.site.nl, profielen.site.nl enz enz.

Grts, René
je kan je eigen sessie handler bouwen

zoek naar: session_set_save_handler()
ik zal er vanmiddag/vanavond aan beginnen, het ene script draait op een subdomein op andere server dmv dns..
Angelino schreef op 14.04.2009 14:48
ik zal er vanmiddag/vanavond aan beginnen, het ene script draait op een subdomein op andere server dmv dns..
Wanneer het 2 (of meer) verschillende servers zijn dan zul je niks aan mijn oplossing hebben. Want de session gegevens worden opgeslagen op de server zelf.

Wanneer de mysql server van 1 v/d servers ook van buiten af te benaderen is, zou je een eigen session handler kunnen schrijven. zoals in [php]session_set_save_handler[/php] beschreven wordt.

Maar je kunt ook overwegen om een centraal punt te gaan gebruiken voor de data (mysql) en doormiddel van een opgeslagen session_id wel/niet toegang te verschaffen.

Want als het maar om een paar session_variabelen gaat. Is het onzinnig om een hele handler te gaan schrijven terwijl je ze ook 'versleuteld' kunt ophalen.

Grts.
René
De zelfde sessie variabelen op verschillende servers gebruiken, zal niet lukken.

Je kan inderdaad iets doen zoals René zegt.

Maar stel jezelf de vraag of het echt nodig is.

Kan je een aantal voorbeelden geven van iets waarvoor je het nodig zou hebben?

Wat je wel kan doen, zonder veel problemen, is inloggen op twee servers tegelijk.
Je kan formulieren opsturen naar andere servers (tenzij daar restricties voor zijn ingesteld).
Ik heb namelijk een film script gemaakt en ik heb op 1 server de site draaien en op de andere het converteren (dus de functies ffmpeg, Mencoder etc).
Dus het upload script heb ik op de andere server staan maar ik moet ingelogd zijn voor ik kan uploaden.
Minuutje, ik zal eens zien of een voorbeeld kan schrijven.

EDIT:
Ik heb dit getest, het werkt.

Op server 1:
index.php
<?php
session_start();
echo '
<form action="login1.php" method="post" target="mijn_iframe" >
<div><label><input type="text" name="login" /> Login </label></div>
<div><label><input type="password" name="paswoord" /> Paswoord </label></div>
<div><input type="submit" value="login" /></div>
</form>
<iframe name="mijn_iframe"></iframe>
';
?>

login1.php
<?php
session_start();
if ( !empty($_POST['login']) && !empty($_POST['paswoord']))
{
$_SESSION['login'] = $_POST['login'];
$site2 = 'http://site2.nl/login2.php'; // zelf aanpassen
echo
'<html>
<head>
<script>
function login()
{
document.getElementById("mijn_formulier").submit();
}
</script>
</head>
<body onload="login();">
<form action="'. $site2 .'" method="post" id="mijn_formulier">
<div><label><input type="text" name="login" value="'. $_POST['login'] .'" /> Login </label></div>
<div><label><input type="password" name="paswoord" value="'. $_POST['paswoord'] .'" /> Paswoord </label></div>
<div><input type="submit" value="login" /></div>
</form>
</body>
</html>';
}
?>

ingelogd.php
<?php
session_start();
echo 'ingelogd als: '. $_SESSION['login'];
?>


Op server2
login2.php
<?php
session_start();
if ( !empty($_POST['login']) && !empty($_POST['paswoord']))
{
$_SESSION['login'] = $_POST['login'];
$site1 = 'http://site1.nl/ingelogd.php'; // zelf aanpassen
echo
'<html>
<head>
<script>
function login()
{
parent.window.location = "'. $site1 .'";
}
</script>
</head>
<body onload="login();">
</body>
</html>';
}
?>

Zo kan je dus inloggen op 2 sites tegelijk.
-Wat je uiteraard zelf moet doen, is de $_POST vergelijken met de users in de gegevensbank en niet zomaar de session gelijk stellen aan de post.

-Wat je verder nog kan doen, is de iframe onzichtbaar maken, bv. met (css) display: none; .


Ben je hier iets mee?

PS. site1.nl en site2.nl bestaan blijkbaar echt. Uiteraard hebben die sites niets te maken met dit script. :)

Reageren