Sesiones

Saludos, tengo lo siguiente archivos:
FORMULARIO DE INGRESO: formulario.php
CONTROL DE FORMULARIO: control.php
SEGURIDAD DE ARCHIVOS : seguridad.php
PÁGINA DE Aplicación : aplicación.php
OTRA PAG. DE APLICACIÓN: aplicacion2.php
script de CONTROL.PHP :
<?
//vemos si el usuario y contraseña es váildo
if ($_POST["nombre"]=="miguel" && $_POST["clave"]=="qwerty"){
//usuario y contraseña válidos
//defino una sesion y guardo datos
session_start();
$_SESSION['autentificado']= "SI";
header ("Location: aplicacion.php");
$nombre = $_POST['nombre'];
$_SESSION['nombre'] = $nombre;
}else {
//si no existe le mando otra vez a la portada
header("Location: formulario.php?errorusuario=si");
}
?>
script de SEGURIDAD.PHP :
<?
session_start();
//Inicio la sesión
//COMPRUEBA QUE EL USUARIO ESTA AUTENTIFICADO
if ($_SESSION["autentificado"] != "SI") {
//if(isset( session_id()) ){
//si no existe, envio a la página de autentificacion
header("Location: formulario.php");
//ademas salgo de este script
exit();
}
?>
script de APLICACION.PHP
<?include ("seguridad.php");
?>
<html>
<head>
<title>Aplicación segura</title>
</head>
<body>
<?php
//$x="Como estas,esta es una variable";
echo $nombre;
echo"<a href=\"aplicacion2.php?zip=$x\">Ir a otra aplicacion2</a>"
."";
?>
</body>
</html>
script de APLICACION2.PHP :
<?include ("seguridad.php");?>
<html>
<head>
<title>Aplicación segura</title>
</head>
<body>
<?php
echo $nombre;
echo"<a href=\"salir.php\">Salir</a>"
."";
?>
</body>
</html>
SALIR.PHP :
<?
session_start();
session_destroy();
?>
<html>
<head>
<title>Has salido!!</title>
</head>
<body>
Gracias por tu acceso
<br>
<br>
<a href="formulario.php">Formulario de autentificación</a>
</body>
</html>
La pregunta es :
Porque no se propaga $nombre en los archivos aplicación.php y aplicacion2.php
Gracias
freddy

1 Respuesta

Respuesta
1
Si se transmite, pero no con ese nombre, sino como $_SESSION['nombre'). Si no la llamas así, no se propaga. Esto es debido a ciertas directivas de php para seguridad que se ponen por defecto en el fichero php.ini
Saludos, he hecho estas correcciones:
aplicación.php :
<?php
//echo session_id();
//aqui estamos propagando la variable $nombre que viene de CONTROL.PHP
$nombre = $_SESSION['nombre'];
echo $nombre;
echo"<a href=\"aplicacion2.php?zip=$nombre\">Ir a otra aplicacion2</a>"
."";
?>
notas: aqui si se imprime $nombre
APLICACION2.PHP :
<?php
$y = $_GET['zip'];
echo $y;
ECHO"<BR>";
ECHO $nombre;
echo"<a href=\"salir.php\">Salir</a>"
."";
?>
nota2: aquí si se imprime $nombre, pero
Como puedo pasar estas variable de sesión de APLICACIÓN.PHPH a APLICACION2.PHP sin utilizar GET (por cuestiones de seguridad para que no se vea en la url)
Gracias por tu dedicación
freddy
No tienes que propagar las variables de fichero en fichero, ya se propagan con la sesión abierta.
Modifica el fichero seguridad.php de esta forma
if ($_SESSION["autentificado"] != "SI") {
header("Location: formulario.php");
exit();
} else {
$nombre=$_SESSION['nombre']
}
En cada fichero que quieras recoger la variable nombre, acuérdate de incluir al principio del mismo el fichero seguridad.php
APLICACION2.PHP :
<?php
include "seguridad.php";
$y = $_GET['zip'];
echo $y;
ECHO"<BR>";
ECHO $nombre;
echo"<a href=\"salir.php\">Salir</a>"
."";
?>
Venga.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas