Ciao a tutti, ho una form di login, solo che non riesco a capire perchè non viene inizializzata la variabile di sessione. questa la form

codice:
<?php


include('conndb.php'); // Includo lo script di connessione


if($_POST) {
	effettua_login();
} else {
	mostra_form();
}


function mostra_form()
{
	// mostro un eventuale messaggio
	if(isset($_GET['msg'])) {
		echo '<b>'.htmlentities($_GET['msg']).'</b><br /><br />';
	}
	?>


	<!DOCTYPE html>
<html >
  
  <head>
    <meta charset="UTF-8">
    <title>Nuovo Documento</title>
    <link rel="stylesheet" href="css/style.css">
    <script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
    <script src="js/index.js"></script>
  </head>


	<body>


    <div class="wrapper">
	<div class="container">
		<h1>Nuovo documento</h1>
		<form id="form_login" name = "form_login" "class="form" method="post" action="">
			<input type="text" placeholder="Username" name="username">
			<input type="password" placeholder="Password" name="password">
			<button type="submit" id="login-button">Accedi</button>
		</form>
	</div>
	
	<ul class="bg-bubbles">


	</ul>
</div>
    
	</body>
</html>


	<?
}


function effettua_login()
{
	// recupero il nome e la password inseriti dall'utente
	$username      = trim($_POST['username']);
	$password  	 = trim($_POST['password']);
	
	// verifico se devo eliminare gli slash inseriti automaticamente da PHP
	if(get_magic_quotes_gpc()) {
		$username      	= stripslashes($username);
		$password  		= stripslashes($password);
	}


	// verifico la presenza dei campi obbligatori
	if(!$username || !$password) {
		$messaggio = urlencode("Non hai inserito il nome o la password");
		header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
		exit;
	}
	// effettuo l'escape dei caratteri speciali per inserirli all'interno della query
	$username     	= mysql_real_escape_string($username);
	$password 		= mysql_real_escape_string($password);	


	// preparo ed invio la query
	$query = "SELECT * FROM utenti WHERE username = '$username' AND password = MD5('$password')";
	$result = mysql_query($query);
	
	// controllo l'esito
	if (!$result) {
		die("Errore nella query $query: " . mysql_error());
	}


	$record = mysql_fetch_array($result);


	if(!$record) {
		$messaggio = urlencode('Nome utente o password errati');
		header("location: $_SERVER[PHP_SELF]?msg=$messaggio");
	} else {
		session_start();
		$_SESSION['id'] = $record['id'];
		$messaggio = urlencode('Login avvenuto con successo');
		header("location: home.php");
	}
}


?>
Mi dareste una mano