Открываете сессию и сохраняете в ней установленные пользователем фильтры. Скажем, при запросе сортировки (?op=setOrder&field=manufacturer&order=desc) устанавливаете
if (isset($_GET['field'], $_GET['order']) &&
in_array($_GET['field'], $allowedFieldsList) &&
($_GET['order'] == 'desc' || $_GET['order'] == 'asc'))
$_SESSION['sort'] = array('field' => $_GET['field'], 'order' => $_GET['order']);
При установке фильтра (?op=addFilter&field=price&rel=lt&value1=1000) добавляете
if (isset($_GET['field'], $_GET['rel']) &&
in_array($_GET['field'], $allowedFieldsList) &&
in_array($_GET['rel'], $allowedRelationsList))
$_SESSION['filter'][$_GET['field']] = array('relation' => $_GET['rel'],
'value1' => $_GET['value1'],
'value2' => $_GET['value2']);
Ну и строите запрос на выборку данных с учётом сохранённых в сессии значений.