taking a quick look your @'s are really not needed to be honest in my apps i use about 2/3 in total mainly when using the database functions to instead of send a nice MySQL error to a hacker send my own out and retrieve the actual error in a log or sent out by Email.
@$new = $_GET['new'];
@$item_id = $new;
@$HTTP_SESSION_VARS[ 'item_id' ] = $item_id;
If you require @'s for all of these you are not running any error checking lets make it simple
if (isset($_GET['new'])) {
$new = $_GET['new']; //as its defined there is no need to have an @
$item_id = $new; //well this is sort of obvious now since $new exists however i feel this is a wasted variable
$HTTP_SESSION_VARS['item_id'] = $item_id; //again no need you can and should run a check as to which way you are doing this
} else {
//its not set in the query string send an error or something
}
If you wish to use $HTTP_SESSION_VARS througout
if (isset($_SESSION)) { //check if this actually exists
$HTTP_SESSION_VARS=$_SESSION; //this is unclean not tested however should work.
}
As your only setting the value to $HTTP_SESSION_VARS you dont need the @ and when you wish to check you should use the function isset like i did in examples