Yo creo que tu problema esta por esta linea ya que siempre estas dando la session y por eso cambia, mira esto
Código PHP:
while($row = mysql_fetch_array($result)) {
$SESSION["id_user"]=$row['id_user'];
session_register("SESSION4");
Lo unico que haces es dar la session si esta en la bd o no? si la encuentra le da un nuevo valor, pero que pasa si encuentra y ademas ya tiene un valor anterior?
pues entonces deberias de hacer algo asi antes de asignar el valor al variable de session:
Código PHP:
if($SESSION["id_user"]<>"")
{
while($row = mysql_fetch_array($result)) {
$SESSION["id_user"]=$row['id_user'];
session_register("SESSION4");
}
Asi solo registrara la session si el valor esta vacio.
Aunque creo que tu planteamiento esta mal ya que esta verificacion deberias hacerlo aparte y no en esta misma pagina y llamarlo con un include solo cuando sea necesario.
Saludos.