A ver....
Si haces esto
Código PHP:
$_SESSION['foto'] = 5;
echo "<img src='mostrar_foto.php?id=5'>";
echo $_SESSION['foto'];
Mostrará 5 y ese es el valor que PHP internamente guardará para la variable $_SESSION['foto'], si hicieras esto por ejemplo:
Código PHP:
$_SESSION['foto'] = 5;
echo "<img src='mostrar_foto.php?id=5'>";
echo $_SESSION['foto'];
$_SESSION['foto'] = 8;
echo "<img src='mostrar_foto.php?id=5'>";
echo $_SESSION['foto'];
Mostrará 8 y este será el valor que PHP guardará para $_SESSION['foto'], si alguna vez tuvo como valor 5, a PHP no le importará porque acabas de sobreescribir ese valor por decirlo de alguna manera.
El problema es que, cuando se llama al archivo mostrar_foto.php y este le pida a PHP el valor de $_SESSION['foto'], PHP le devolverá el valor que conozca de tal variable, siguiendo los ejemplos que puse, dicho valor sería 8 porque fue el último valor que se le asignó (en el código que coloqué).
Internamente a ojos de PHP sería algo así:
- ejemplo.php -> Asigna el entero 5 a $_SESSION['foto']
- PHP -> ok, $_SESSION['foto'] tiene como valor 5
- ejemplo.php -> Muestra este enlace....
- PHP -> ok, lo muestro.
- ejemplo.php -> Ahora asigna el entero 8 a $_SESSION['foto']
- PHP -> ok, $_SESSION['foto'] tiene como valor 8 (acá ya dejó de importarle que antes tenía el valor 5)
- ejemplo.php -> Muestra este enlace...
- PHP -> ok, lo muestro.
- ejemplo.php -> Ahora asigna el entero 12 a $_SESSION['foto']
- PHP -> ok, $_SESSION['foto'] tiene como valor 12 (acá ya dejó de importarle que antes tenía como valor 8 y que alguna vez tenía como valor 5)
- ejemplo.php -> Muestra este enlace...
- PHP -> ok, lo muestro.
- mostrar_foto.php -> Dame el valor de $_SESSION['foto']
- PHP -> El valor que tengo guardado de $_SESSION['foto'] es 12
.....sigue el resto del proceso de comparación y demás.