I am having the same problem.
Right now I am using sessions. If the user has disabled cookies then u can always send the session id and it will still save the variables.
Another thing you can do is encode the variables and send them using GET in the url.
example.
$ip=bin2hex($REMOTE_ADDR);
echo "newpage.php?&ip=$ip";
That is going to send the ip in hex format. Which is something like 1254ee126432e665467e654654 so the user might look at it in the url but will have no idea what it is.
Then in newpage.php you can do this.
$ip2 = bin2hex($REMOTE_ADDR);
if ( $ip == $ip2 )
{
//user came from your site
}
else
{
//user did not come from your site
}
The script above is what i used for a while to stop other pages from leeching my files. It works great but the only problem is the damn proxy caches. The proxy caches would cache an old link with the wrong ip encoded.
Hope that helps.