В самом деле, почему не стартовать сессию ВСЕГДА и как можно раньше? Это нормально. К примеру в таких сложных вещах как PEAR::LiveUser так и делается. Итак, сессию стартуем и дальше оперируем с массивом $_SESSION. Это автоглобальный ассоциативный массив. Присвоение его елементам какого-то значения означает запись значения в сессию. Т.о. досаточно при обработке каждого клика по кнопке "купить" выполнять примерно следующий код:
Код:
![Выделить весь код](images/misc/selectcode.png)
$_SESSION['tovarIDs'][] = $_REQUEST['ID'];
Здесь $_REQUEST['ID'] - значения gпараметра с name='ID' переданного скрипту. Вот в сессии и будет храниться подмассив айдишников товаров, "накликанных" посетителем.
P.S. Помните о безопасности, выражение $_REQUEST['ID'] без фильтрации и обработки потенциальная дыра в срипте.