Posso solo iniziare col dirti una cosa...
verifica cosa stai passando.
Controlla cosa ti trovi in mano alla fine di ogni processo (blocca l'esecuzione dello script od altera il finale per vedere cos'hai fatto)
vedo che in _addcart.php tu richiedi di ripassarti i dati 'codice' tramite POST ($_POST['codice']) e quando però rigiri la pagina con l'header, reinoltri il dato come GET (header('location:../dettaglio.php?codice='.$_POST['codice']);)
Ora... magari sbaglio io... ma non ti conviene passare ad usare una -forse meno sicura ma certamente più 'liberale' - $_REQUEST['codice'] che ritorna il dato qualsiasi sia la modalità con cui l'hai inviato? (Sia esso un GET od un POST)
Un'altra cosa che mi lascia perplesso....
questo commento: //session_start(); è inserito in testa file config.php ad inizio codice, tale pagina è richiamata tramite include.
Ma sei sicuro? Per chiarirci... config.php viene richiamato davvero e correttamente? la pagina carrello.php non la richiami mai, diretto, vero? E' sempre INCLUSA o RICHIESTA da un'altra pagina, giusto?
Per sicurezza, prova a cambiare l'include col request... vedi se ti esce con l'errore di non trovata....