I want to be able to switch back and forth between sessions in php. Here is my current code:
<?php
session_name("session1");
session_start();
$_SESSION["name"] = "1";
echo "<pre>", print_r($_SESSION, 1), "</pre>";
session_write_close();
session_name("session2");
session_start();
$_SESSION["name"] = "2";
echo "<pre>", print_r($_SESSION, 1), "</pre>";
session_write_close();
session_name("session1");
session_start();
echo "<pre>", print_r($_SESSION, 1), "</pre>";
I want it to output
Array
(
[name] => 1
)
Array
(
[name] => 2
)
Array
(
[name] => 1
)
but it is outputting
Array
(
[name] => 1
)
Array
(
[name] => 2
)
Array
(
[name] => 2
)
Is it possible to switch between sessions like that? I don't need two sessions running at the same time, but I do need to be able to switch between them. When I run this code, I get two cookies: session1 and session2 with the same value.
Thanks for any help!
The answer is "no". You cannot start multiple sessions simultaneously. And if you do, you'll get an error like "A session had already been started".
1000+ sessions can still be perfectly handled by standard PHP file based sessions. If you notice that is getting a problem, you can exchange the session backend easily. There are pluggable session handlers for memcached or other memory or database based storage systems.
A PHP session is easily started by making a call to the session_start() function. This function first checks if a session is already started and if none is started then it starts one. It is recommended to put the call to session_start() at the beginning of the page.
What you need to use is session_id()
instead of session_name()
<?php
session_id("session1");
session_start();
echo session_id();
$_SESSION["name"] = "1";
echo "<pre>", print_r($_SESSION, 1), "</pre>";
session_write_close();
session_id("session2");
echo session_id();
session_start();
$_SESSION["name"] = "2";
echo "<pre>", print_r($_SESSION, 1), "</pre>";
session_write_close();
session_id("session1");
echo session_id();
session_start();
echo "<pre>", print_r($_SESSION, 1), "</pre>";
session_write_close();
session_id("session2");
echo session_id();
session_start();
echo "<pre>", print_r($_SESSION, 1), "</pre>";
This will print:
session1
Array
(
[name] => 1
)
session2
Array
(
[name] => 2
)
session1
Array
(
[name] => 1
)
session2
Array
(
[name] => 2
)
session_id
is an identifier for a session, which helps in distinguishing sessions. session_name
is only a named alias for the current session
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With