Me fijo en una línea:
Código PHP:
echo $_SESSION["user_id"] OR $_COOKIE['cookvguser_id'];
No lo he probado porque no tengo el PHP instalado, pero no comprendo la utilidad del 'OR'. Lo que debería imprimir en esa línea es un valor lógico, el resultado de comparar los dos valores. Es decir, que debería imprimir 'verdadero' o 'falso' (verdadero si está alguna de las dos variables y falso si no está ninguna). Te está imprimiendo un '1' (Que es verdadero) lo que quiere decir que al menos una de las variables está definida.
Según esto, lo hace bién si realmente están definidas.
Evidentemente, si quieres mostrar el contenido de las variables, deberías emplear alguna otra construcción del tipo
Código PHP:
if !isset($_SESSION["user_id"]) || empty($_SESSION["user_id"]){
if !isset($_SESSION["cookvguser_id"]) || empty($_SESSION["cookvguser_id"]){
//No están definidas
}else{
//Poner el valor de la cookie
echo($_SESSION['cookvguser_id']);
}
}else{
//Está la de la sesión
echo($_SESSION["user_id"]);
}
Puede que mne equivoque porque no lo he probado
![Pirata](http://static.forosdelweb.com/fdwtheme/images/smilies/pirate.png)
.
Saludos