My web site currently uses 2 sessions: mine ("SBSESSID") and
SquirrelMail's ("SQMSESSID"). They work perfectly on their own.
However, I would like to allow the user to move from my area to
SquirrelMail without re-entering a password. Therefore, I need to copy
the password from my session to SquirrelMail's. I've been struggling with
this for most of the night but this is the closest I've come:
tst.php:
<?php
error_reporting(E_NONE); // suppress spurious cookie errors
header("content-type: text/plain");
/// set up original session, then close it
session_name("SESS1");
session_start();
print_r(session_name());
echo " " . print_r($_SESSION,true) . "\n";
session_write_close();
session_unset();
// print new session, retrieve secret key, then close it.
session_name("SESS2");
session_start();
print_r(session_name());
echo " " . print_r($_SESSION,true) . "\n";
$secret = $_SESSION['password'];
session_write_close();
session_unset();
// open old session. it should exactly match the original.
session_name("SESS1");
session_start();
print_r(session_name());
echo " " . print_r($_SESSION,true) . "\n";
?>
When I run this after filling in the sessions, I get:
SESS1 Array
(
[squirrel] => mail
)
SESS2 Array
(
[squirrel] => mail
)
SESS1 Array
(
[squirrel] => mail
)
What's happening? The second time I call session_start(), instead of
getting SESS2 like I asked for, I'm just getting SESS1 again. Even if I
call error_reporting(E_ALL), I don't get any relevant error messages. Why
won't session_start() open the named session?
When I replace the two calls to session_write_close() with
session_destroy(), I get this:
SESS1 Array
(
[squirrel] => mail
)
SESS2 Array
(
[password] => whoa
)
SESS1 Array
(
)
Which is correct, except that it destroys the sessions! So close and yet
so far.
Does anybody know how I can do this? I'm stumped. Thanks!
- Scott
To duplicate exactly what I did here, create 2 more scripts:
s1.php:
<?php
session_name("SESS1");
session_start();
$_SESSION["squirrel"] = "mail";
print_r($_SESSION);
?>
s2.php:
<?php
session_name("SESS2");
session_start();
$_SESSION["password"] = "whoa";
print_r($_SESSION);
?>
Now, open s1.php in your web browser. Then open s2. php. Finally, open
tst.php.
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php