Lo que expusistes no tiene sentido ...
1) NO puedes esperar ver el valor de una variable de sesión en el mismo flujo de un script al crearla . .ese no será su valor real (aunque te coincida).
2) No uses "if($variable) para hacer una validación de que "exista" tal variable .. usa mejor isset() o empty()
3) Dá algún valor a tu variable de sesión .. aunque sea un "boolean" (true/false) ..
uno.php
Código PHP:
<?php
session_start();
$_SESSION['p']=TRUE;
header ("Location: dos.php");
exit;
?>
dos.php
Código PHP:
<?php
session_start();
if (!isset($_SESSION['p'])){
die ("Error");
}
<html>
<head>
</head>
<body>
Entrastes.
</body>
</html>
Ejecuta uno.php .. este te redireccionará a dos.php y te mostrará el mensaje "Entrastes" .. Si entras a dos.php directo .. veras el mensaje "error". (todo esto si el SID se propaga por cookies y tu navegador lo acepta . .cosas a tener en cuenta).
Un saludo,