I have experienced exactly the same problem. Here is sample code that will show that sessions do work. BUTT and a big one at that if you DO NOT use html links or form posts, or specialised code, it will not work. If you use a java menu of any kind ( I have tested about 8 different versions ) SESSIONS GET LOST SOMEWHERE.
// index.php
<?
session_start();
session_register("sess1");
session_register("sess2");
session_register("sess3");
$sess1 = session_id();
$sess2 = "two";
$sess3 = date('Y-m-d',time());
include("top.php");
echo "</body></html>"
?>
// menu.inc
<table align='center' border=.5 cellspacing=20 cellpadding=10 width='40%'>
<tr align='center' valign='middle'>
<th colspan=4>hlink for sessions</th>
</tr>
<tr align='center' valign='middle'>
<td><a href='index.php'>home</a></td>
<td><a href='sess1.php'>sess1</a></td>
<td><a href='sess2.php'>sess2</a></td>
<td><a href='sess3.php'>sess3</a></td>
</tr>
</table>
// sess1.php
<?
session_start();
include("top.php");
echo "Session1 var : ".$_SESSION["sess1"];
?>
// sess2.php
<?
session_start();
include("top.php");
echo "Session1 var : ".$SESSION["sess1"]."<br>";
echo "Session2 var : ".$SESSION["sess2"];
?>
// sess3.php
<?
session_start();
include("top.php");
echo "Session1 var : ".$SESSION["sess1"]."<br>";
echo "Session2 var : ".$SESSION["sess2"]."<br>";
echo "Session3 var : ".$_SESSION["sess3"];
?>
// top.php
<!doctype html public \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html>
<head>
<title>HTML MENU SESSION TEST</title>
</head>
<body>
<? require("mnu.inc"); ?>
<hr>
I have asked PHP.NET and JAVA people for an answer, am still waiting - my problem is not solved.