Pues deberas revisar bien. Yo he minimizado tu codigo y lo he probado en mi maquina, y funciona. Descarto que el error este en el procesamiento del form login porque me acabas decir que eso lo hace bien... y lo siguiente, a mi me funciona. Esta es la prueba que yo hice. login.php lo deje igual.
admin_acceso.php
Código PHP:
<?
if($_POST["usuario"] == "admin" && $_POST["passw"] == "admin")
{
session_start();
$_SESSION["login"]="correcto";
header('Location: admin.php?modulo=panel_de_control');
}else{
echo "Algo funciona mal en el login";
}
?>
control.php
Código PHP:
<?php
session_start();
if ($_SESSION["login"] != "correcto")
{
echo "La variable de session vale " . $_SESSION["login"] . " y algo anda mal";
exit();
}else{
echo "La variable de session vale " . $_SESSION["login"] . "<br>";
}
?>
admin.php
Código PHP:
<?php
include('control.php');
//session_destroy(); Solamente para borrar la sesion y volver a probar.
echo "El modulo que se debe cargar es " . $_GET["modulo"];
?>
Esta es mas o menos la idea que te di para el login, pero en funcionamiento. Entras por login.php, (admin:admin) y terminas en admin.php con un cartelito que indica que modulo debe cargarse.
Si esto no te funciona no estaria de mas que hagas un
<? echo phpinfo(); ?>
y revises el apartado sessiones, Session Support debe estar en enabled.
Saludos.