Le sessioni sono contenute nell'header della pagina.
Una volta che l'header è stato inviato, non è possibile più modificarlo. Quindi prima di terminare l'invio dell'header devi aver già effettuato la session_start() e quindi aver "aperto" la sessione.
Automaticamente, l'header viene "ultimato" appena invii un qualsiasi carattere HTML (anche uno spazio bianco). Quindi, prima di inviare qualsiasi carattere in uscita nell'HTML, devi aver effettuato la session_start().
Quindi dal tuo codice vedo che prima della session_start() hai dell'html. Dovresti fare una cosa del genere:
Codice PHP:
<?php session_start(); ?>
<!-- qui codice html della pagina, come i tuoi <a> del tuo codice -->
<?php
//qui il codice PHP che fa uso delle sessioni
?>
-------------
Ulteriore consiglio (non è un errore), il tuo codice potrebbe esser riscritto più semplicemente così:
Codice PHP:
if(isset($_GET['selk']))
{
if($_GET['selk'] == '1')
{ //parentesi graffe opzinali visto che c'è solo un'istruzione
$_SESSION['dov'] = "puglia";
}
else if($_GET['selk'] == '2')
{
$_SESSION['dov'] = "lombardia";
}
else if($_GET['selk'] == '3')
{
$_SESSION['dov'] = "piemonte";
}
else
{
$_SESSION['dov'] = "ciao";
}
}
o meglio:
Codice PHP:
if(isset($_GET['selk']))
{
switch($_GET['selk'])
{
case '1':
$_SESSION['dov'] = "puglia";
break;
case '2':
$_SESSION['dov'] = "lombardia";
break;
case '3':
$_SESSION['dov'] = "piemonte";
break;
default:
$_SESSION['dov'] = "ciao";
}
}
Oppure, per rendere il codice un po' più dinamico (e facilmente modificabile):
Codice PHP:
$regioni = array('puglia', 'lombardia', 'piemonte');
if(isset($_GET['selk']))
{
if(isset($regioni[$_GET['selk']]))
$_SESSION['dov'] = $regioni[$_GET['selk']];
else $_SESSION['dov'] = "ciao";
}
EDIT:
Solo ora vedo gli url dei link. Come mai hai l'àncora #gallery/... ? Non mi sembra corretto.
Ciao!