YO tengo una logica para las sesiones de usuario en mi sitio y quisiera que me ayudaran a aclarar ciertos conceptos y de esa manera ajustar mi codigo.
tengo estos archivos:
* index.php (portada de la pagina web)
*iniciarsesion.php (formulario de login)
*claseusuario.php (clase que maneja los usuarios del sistema incluidas las sesiones)
* eventoiniciarsesion.php (pagina la cual se encarga de comunicar el formulario de login con el index sesion)
El proceso de logueo es asi:
* entro al formulario de login. lleno los datos y doy click a iniciar sesion.
*el formulario en su atributo action llama a eventoiniciarsesion.php y le manda los datos por POST.
*eventoiniciarsesion.php recoge los datos usuario y contraseña y llama al método
validariniciodesesion() de la clase usuario en claseusuario.php
*si valida correcto entonces llama al metodo iniciarsesion() y crea una sesion con la funcion session_start().
* cuando se inicia la sesion el navegador dirige a la pagina indexsesion y en la url viaja el alias del usuario.
* indexsesion.php captura esa variable alias y hace una consulta y revela en una tabla ubicada a la derecha del sitio, los datos del usuario que acaba de iniciar sesion.
El problema es que si se da clic hacia otro enlace la sesion se pierde, se pierde el alias en la url y por ende los datos revelados anteriormente.
me documente y lei que debia poner en todas mis paginas la funcion session_start() pero me aparece un error:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at ...
se que una variable enviada por get no se va a conservar en todo mi sitio, pero entonces hay una manera de poder identificar a mi usuario en todo mi sitio solo con las variables de sesion?
que es eso de registrar variables para usarlas en cada pagina con session_register() ?
METODOS DE LA CLASE USUARIO QUE VALIDAN E INICIAN LA SESION:
Código PHP:
public function ValidarSesion($user,$pass,$conn){
$sqlconsultausuario = "select alias,contrasena,idestado from tbcuenta where alias = '".$user."'";
$consulta = mysql_query($sqlconsultausuario,$conn);
$registros = mysql_num_rows($consulta);
$fila = mysql_fetch_row($consulta);
$alias = "";
if ($registros <= 0)
{
echo "<script>alert ('La información del alias ingresado no es correcta.')</script>";
$alias = "ninguno";
return $alias;
}
else
{
if($fila['1'] != $pass){
echo "<script>alert ('La información de la contraseña ingresada no es correcta.')</script>";
$alias = "ninguno";
return $alias;
}
else{
if($fila['2'] != 1)
{
echo "<script>alert ('Su cuenta no ha sido activada. Para mayor información contacte al administrador.')</script>";
$alias = "ninguno";
return $alias;
}
else{
$alias = $fila['0'];
return $alias;
}
}
}
}
public function IniciarSesion($alias,$conn){
if ($alias == 'ninguno'){
echo "la sesion no se pudo crear";
}
else{
session_start();
$_SESSION['usuario'] = $alias;
$sqlconsulta= "select alias from tbcuenta where alias = '".$alias."'";
$consulta =mysql_query($sqlconsulta,$conn);
$datos= mysql_fetch_row($consulta);
echo "<script>document.location.href = 'indexsesion.php?alias=$datos[0]';</script>";
}
}
Código PHP:
$alias = $_POST['alias'];
$contrasena = $_POST['contrasena'];
include ('conexion.php');
include ('claseusuario.php');
$us = new usuario();
$conectar = new conectarse();
$conn = $conectar->get_conexion();
$cerrar = $conectar->close_conexion();
$nick = $us->ValidarSesion($alias,$contrasena,$conn);
$us->IniciarSesion($nick,$conn);
$cerrar;
VIAJE DE LA VARIABLE ALIAS EN EL URL PARA REVELAR LOS DATOS INDEXSESION.PHP:
Código PHP:
$alias = $_GET['alias'];
include ('conexionb.php');
$conectar = new conectar();
$conn = $conectar->get_conexion();
$cerrar = $conectar->close_conexion();
$sqlconsulta= "select a.nombre,b.nombre from tbcuenta a inner join tbperfil b where a.idperfil = b.idperfil and a.alias = '".$alias."' group by a.alias";
$consulta =mysql_query($sqlconsulta,$conn);
$datos= mysql_fetch_row($consulta);
echo "<table bordercolor=#330066 border=0>
<tr align=center>
<td align=center><font face=Arial, Helvetica, sans-serif size=+1 color=#CC0000>
<b>¡Bienvenido!</font></td>
</tr>
<tr>
<td>
<img src = Imagenes/linearoja.gif width = 200 height = 3>
</td>
</tr>
<tr align=center>
<td>
<table border=0 bordercolor=#999900>
<tr>
<td align=center>
<font face=Arial, Helvetica, sans-serif size=2 color=#CC0000>
<b>Usuario:
</font>
</td>
</tr>
<tr>
<td align=center>
<font face=Arial, Helvetica, sans-serif size=2 ><b>".$datos['0']."
</font>
</td>
</tr>
<tr>
<td align=center>
<br>
<font face=Arial, Helvetica, sans-serif size=2 color=#CC0000>
<b>Perfil:
</font>
</td>
</tr>
<tr>
<td align=center><font face=Arial, Helvetica, sans-serif size=2 ><b>".$datos['1']."
</font>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
</td>
</tr>
</table>
";
$cerrar;
LES AGRADEZCO ORIENTACION DEL TEMA, AUNQUE EN EL FONDO CREO QUE ME ESTOY COMPLICANDO.