Ver Mensaje Individual
  #3 (permalink)  
Antiguo 13/01/2009, 13:27
tyrula
 
Fecha de Ingreso: mayo-2005
Ubicación: Castellón
Mensajes: 321
Antigüedad: 19 años
Puntos: 0
Respuesta: problemas con sesiones y cookies

En index.php vinculo el archivo login.php donde compruebo si existe la cookie y si existe me copia sus valores en el nombre de usuario y en la contraseña:

login.php
Cita:
<?php
$loginCorrecto = false;
$idUsuarioL;
$nickUsuarioL;
$emailUsuarioL;
$nombreUsuarioL;

if(isset($HTTP_COOKIE_VARS["usNick"]) && isset($HTTP_COOKIE_VARS["usPass"]))
{

$result = mysql_query("SELECT * FROM usuarios WHERE usuario='".$HTTP_COOKIE_VARS["usNick"]."' AND contrasena='".$HTTP_COOKIE_VARS["usPass"]."'");

if($row = mysql_fetch_array($result))
{
setcookie("usNick",$HTTP_COOKIE_VARS["usNick"],time()+7776000);
setcookie("usPass",$HTTP_COOKIE_VARS["usPass"],time()+7776000);
$loginCorrecto = true;
$idUsuarioL = $row["id"];
$nickUsuarioL = $row["usuario"];
$nickpasswordL = $row["contrasena"];
$emailUsuarioL = $row["email"];
$nombreUsuarioL = $row["nombre"];
}
else
{

//Destruimos las cookies.
setcookie("usNick","x",time()-3600);
setcookie("usPass","x",time()-3600);
}
mysql_free_result($result);
}
else{

}
?>
Parte del index.php
Cita:
<body background="../../img/fondo.jpg">
<?
include "../librerias/lib.php";
conectabd();
include("../logout.php");
include("../login.php");
if($loginCorrecto){


?>
<div id="contenedor_registro">
<div id="cabecera">
<img src="../../img/cabecera.jpg" />
</div>
<div id="contenido_registro">
<div id="registro">
<div id="titulo_registro">
<span class="titulo_registro">registro de usuarios</span> </div>
<div id="fondo_registro">
<div id="titulo_nuevo" class="barra_dentro">
<span class="titulo_registro_dentro">Nuevo usuario</span>
</div>
<div id="texto_nuevo" class="texto">
Al crear una cuenta podrá insertar anuncios fácilmente. Resgístrese pinchando <a href="archivo_nuevo.php" target="_self">aquí</a>
</div>
<div id="titulo_yasoy" class="barra_dentro">
<span class="titulo_registro_dentro">Ya soy usuario</span>
</div>
<div id="texto_yasoy" class="texto">
<form name="form1" action="ingresar.php" method="post" enctype="multipart/form-data">
<table width="220" border="0">
<tr>
<td>usuario :</td>
<td><input type="text" name="usuario" id="usuario" size=22 maxlength=22 value="<? echo($nickUsuarioL);?>"></td>
</tr>
Dentro de aquí no me coge los valores de la cookie porque no la ha creado pero yo le pongo un usuario y una contraseña válidos y me lleva a la página ingresar.php para comprobar que esta todo ok y actualizarme la cookie.

ingresar.php
Cita:
<?php
include "../librerias/lib.php";
conectabd();
if(trim(addslashes($HTTP_POST_VARS["usuario"])) != "" && trim(addslashes($HTTP_POST_VARS["contrasena"])) != "")
{
$usuarioN = addslashes($_POST['usuario']);
$passN = addslashes($_POST['contrasena']);
$result = mysql_query("SELECT * FROM usuarios WHERE usuario='$usuarioN'");
if($row = mysql_fetch_array($result))
{
if(($row["contrasena"] == $passN)||($row["contrasena"] == md5($passN)))
{
if($row["activo"] == 1)
{
if($row["contrasena"] == md5($passN)){
$passN = md5($passN);
}else{

}
//90 dias dura la cookie
setcookie("usNick",$usuarioN,time()+7776000);
setcookie("usPass",$passN,time()+7776000);
//Ahora abrimos la sesion
session_start();
$_SESSION["id"]=$row["id"];
$_SESSION["nombre"]=$row["nombre"];
$_SESSION["email"]=$row["email"];
$_SESSION["telefono"]=$row["telefono"];
$_SESSION["usuario"]=$row["usuario"];
$_SESSION["contrasena"]=$row["contrasena"];
?>
<span class="texto">Ingreso exitoso, ahora sera dirigido a la pagina principal.</span>

<SCRIPT LANGUAGE="javascript">
location.href = "../articulos/index.php";
</SCRIPT>
<?
}
else{
?>
La cuenta no está activada.<br><br><a href="index.php" target="_self">volver</a>
<?
}

}
else
{
?>
Contraseña incorrecta.<br><br><a href="index.php" target="_self">volver</a>
<?
}
}
else
{
?>
Usuario no existente en la base de datos.<br><br><a href="index.php" target="_self">volver</a>
<?
}
mysql_free_result($result);
}
else
{
?>
Debe especificar un usuario y una contraseña.<br><br><a href="index.php" target="_self">volver</a>
<?
}
mysql_close();
?>
Aquí me comprueba que existe el usuario y la contraseña, me crea las variables de sesion y me redirige a la página index.php que está dentro de otro directorio. Pero dentro de aquí no me reconoce la sesion.

index.php
Cita:
<?
include "../librerias/lib.php";
conectabd();
session_start();
echo($_SESSION['usuario']);
if(isset($_SESSION['usuario']) && isset($_SESSION['contrasena']))
{
$result = mysql_query("SELECT * FROM usuarios WHERE usuario='".$_SESSION['usuario']."' AND contrasena='".$_SESSION['contrasena']."'");
if($row = mysql_fetch_array($result))
{
?>
.....
Como véis le pongo que me escriba el nombre de usuario y no me escribe nada... como he comentado tengo habilitadas las register_globals en mi servidor de internet y los parámetros de sesion son exactamente los mismos que tengo en mi servidor local, en donde todo esto me funciona de maravilla.

Espero vuestra ayuda.....

Saludos y gracias