hrm... in response to an earlier post, someone said using session_register("blah"); creates another session. no, it does not.
you begin 1 session and one session only by using session_start();, or the first session_reguster(). you can register as many variables as needed, those are stored on the server in one file, the session file. so in effect, you might have 50 variables, all allocated to 1 session, which is why some people append the sid to the URL.
in response to the first post, you're trying to echo a variable that's been set, but does not have a value associated with it. and secondly, most people use ?sid=blahblah, instead of sess, all depends on you tho. so try setting a variable $blah = "test"; and see if it comes out on the next page.
page 1:
<?
session_start();
session_register("cartid");
$cartid = session_id();
$SESSION["cartid"] = $cartid;
//now for the link:
echo "<a href='page2.php?sid=". <? echo $SESSION["cartid"]; ?> ."'>click me</a>";
?>
page 2:
<?
session_start();
echo $_SESSION["cartid"];
?>
note, i didn't test this, this is just what i'd do. should work right off.