Today, when I was reviewing the session part of PHP, I suddenly came out a question: how to make PHP to append session ID(SID) to your page links automatically when cookies are forbidden in that browser? I managed to do this in JSP, but not sure whether the PHP can also handle this problem.
I checked the configuration files (php.ini) for my apache server, and there is a session section, under which there is a setting session.use_trans_sid = 0. After I changed this to session.use_trans_sid = 1, and restarted apache, the links of the page which invoked session_start() have now appended the SID. There is also an url_rewriter.tags, with which you can define what elements of a page will be appended.
Here are some demo codes:
sessions.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php ob_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>Untitled</title> </head> <body> <?php ini_set('session.use_trans_sid','1'); //you can also do this instead of modify php.ini session_start(); $_SESSION['test']='right!'; //header('Location: sessions2.php'); //SID won't be appended in this situation //exit(); ?> <a href="sessions2.php">click here</a> </body> </html> <?php ob_end_flush(); ?> |
sessions2.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?php ob_start(); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head> <title>Untitled</title> </head> <body> <?php session_start(); echo $_SESSION['test']; ?> </body> </html> <?php ob_end_flush(); ?> |