Os comento como lo tengo montado.
Tengo la página principal index.php en la que le metos dos includes, el login.php y el módulo que cargo (noticias, articulos, etc...)
index.php
Código PHP:
session_start();
require ("./includes/conexion.php");
conecta();
Código PHP:
//cargo el modulo
if(isset($_GET['mod'])){ $modulo=$_GET['mod']; }else{$modulo='portada';}
include 'modulos/'.$modulo.'.php';
//cargo el logeo
<?php include("modulos/login.php"); ?>
Código PHP:
include ("./includes/funciones.php");
if (!isset($_SESSION['usuario'])) {
... // si no esta logeado carga el formulario para logearse, si lo esta te dice hola.
//no pongo session_start() por que ya lo hago en el index y esto esta en un include, si lo pongo me da error.
Código PHP:
if(!empty($_POST['user']) && !empty($_POST['password'])){
$usuario=$_POST['user'];
$password=$_POST['password'];
$consulta= mysql_query("SELECT id_usuario, nick, password FROM usuarios WHERE nick='$usuario' AND password='$password'");
if(mysql_num_rows($consulta)>0)
{
$fila=mysql_fetch_assoc($consulta);
$_SESSION['usuario']=$fila['nick'];
$_SESSION['id']=$fila['id_usuario'];
header ("Location: ./../index.php");
}
else
{
echo "El usuario introducido no existe o la contraseña no es correcta, por favor comprueba los datos.";
}
}else echo "Has de introducir un usuario y una contraseña.";
ob_end_flush();

¿por que puede ser?
Un saludo!