Foros del Web » Programando para Internet » PHP »

manejo de sessiones

Estas en el tema de manejo de sessiones en el foro de PHP en Foros del Web. :P Antes de nada saludos a los del foro: mi problema es el siguiente tengo este codigo q le llame prueba.php <html> <head> </head> <body> ...
  #1 (permalink)  
Antiguo 29/09/2006, 09:46
Avatar de ranceis  
Fecha de Ingreso: septiembre-2006
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
manejo de sessiones

:P Antes de nada saludos a los del foro:
mi problema es el siguiente
tengo este codigo q le llame prueba.php
<html>
<head>
</head>
<body>
<form method="post" name="formulario" action="sesion.php">
<table width="394" border="0">
<tr>
<td width="4">&nbsp;</td>
<td width="100">Nick</td>
<td width="268"><input name="Nick" type="text" id="Nick" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>Contrase&ntilde;a</td>
<td><input name="password" type="password" id="password" /></td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td><input type="submit" name="Submit" value="login" /></td>
</tr>
</table>
</form>
<p>&nbsp;</p>
</body>
</html>
en este tiene 2 campos nick y contraseña. y en el form llama a sesion.php q contiene el siguiente codigo:

<?

#variables de usuario y password
$user = trim('$Nick');
$clave = trim('$password');
#establecer conección
include "conexion2.php";
//seleccion de datos y checar si nick existe
//$sql= mysql_query ("SELECT * FROM usuarios");
$sql = "SELECT password FROM usuarios WHERE nick='$Nick'";
#Comprobar variables completas
if($user != "" && $password)
{
$resultado = mysql_query($sql);
if($rs = mysql_fetch_array($resultado))
{
# verificar accesos
if ($password == $rs[password])
{
// iniciar sesiones
session_start();
session_name($nick);
$_SESSION['$nick'] = "$Nick";
// colocar cookie
setcookie("usuario",$Nick,time()+7776000);
#setcookie("paso",$Password,time()+7776000);
?>
Ingreso exitoso, ahora sera dirigido a la pagina principal.
<br>
<?
$url = "index.php";
$delay = 0; // 0 second delay
echo '<meta http-equiv="refresh" content="'.$delay.';url='.$url.'">';

?>
<!--<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT> -->
<?
}
else
{
header("Location: prueba.php?errorpw=err_pw&errorus=no");
}
}
else
{
header("Location: prueba.php?errorus=err_us&errorpw=no");
}
mysql_free_result($resultado);
}
else
{
header("Location: prueba.php?errorus=err_us&errorpw=err_pw");
}
include"close.php";
?>

en este codigo me conecto a mi base de datos usuario y a la base usuarios, checo si el nick es= al nick q esta en prueba, al igual q su password, si es asi inicia la sesion y le manda por una cookie el nick de la consulta, este redirecciona en una parte como podran ver a mi index.php q es el que le dara la vienvenida con un
echo"$usuario"; que este contiene el contenido de la cookie osea el nick
en inde.php ya intente poniendole un session_start(); e incluso quitarlo y me crea una sesion, en mi base tengo varios usuarios, cuando me logueo con otro usuario, me remplaza la sesion, cada vez q me loguee en prueba.php me remplaza la misma sesion, como le hago q para cada usuario distinto q se loguee me cree una sesion diferente??
espero y me puedan ayudar
  #2 (permalink)  
Antiguo 29/09/2006, 09:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El uso de session_name() para que tenga efecto NO se usa despues de session_start() sino -antes-

No es correcto:
Código PHP:
session_start();
session_name($nick); 
$_SESSION['$nick'] = "$Nick"
Sería correcto:
Código PHP:
session_name($nick); 
session_start();
$_SESSION['$nick'] = "$Nick"
Ahora .. el "sentido" que le das a tus variable de sesión y la sesión en sí es muyyyyyyyyyyyyyyyyy confusooooooo!.

"La sesión" debería tener un nombre .. FIJO para toda tu aplicación o bien ni le pongas nombre y PHP le dará uno por defecto (PHPSESSID si no me equivoco).

La variable de sesión que debes crear sería en tu caso algo tipo: "nick" -> $nick ..

Sería algo tipo:

Código PHP:
session_name('mi_aplicacion'); 
session_start();
$_SESSION['nick'] = "$Nick"
El tema de crear a su vez una cookie .. no sé con qué fin .. Explicalo!. Las sesiones ya propagan tus datos de por sí .. ¿para que redundancia de datos en una cookie? (como no sea con otros fines .. ?).

para acceder a tu variable de sesión creada y empezar a realizar validaciones y demás . .tan sólo sigue el mismo proceso:

Código PHP:
<?
session_name
('mi_aplicacion'); 
session_start();
echo 
"Usuario autentificado: ".$_SESSION['nick'];
?>
Y como "variable" que es $_SESSION puedes validar su existencia para detectar "intrusos" que no pasan a ese script por tu autentificación.

Código PHP:
session_name('mi_aplicacion'); 
session_start();
if (empty(
$_SESSION['nick'])){
   die (
"Acceso incorrecto");
}

echo 
"Usuario autentificado: ".$_SESSION['nick']; 
Te fijas que -siempre- uso session_mame() con el nombre que le doy al uso de sesiones en esta aplicación? .. Bueno . .ese dato es opcional pero si lo defines en un script . .lo tienes que usar en todos e igual.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 29/09/2006, 11:16
Avatar de ranceis  
Fecha de Ingreso: septiembre-2006
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
sesioon

Hola, mira lo que sucede esque queria imprimir en index la variable $nick que contiene el nick del usuario logueado, sin embargo al momento de redireccionar no me lo imprime, asi q mando esa variable por una cookie y si me lo hace, ok, provare tu comentario.
no seas dejame tu msn si puedes para recibir ayuda.
prove tu ayuda,

puse esto en session.php en el mismo orden q me pusiste
session_name('mi_aplicacion');
session_start();
$_SESSION['nick'] = "$Nick";

tambien en index puse :

session_name('mi_aplicacion');
session_start();
if (empty($_SESSION['nick'])){
die ("Acceso incorrecto");
}

echo "Usuario autentificado: ".$_SESSION['nick'];

y al momento de la impresion me marca un error repetitivo

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\Servidor\WEB\pagina2\index.php:6) in C:\Servidor\WEB\pagina2\index.php on line 78
me lo marca 2 veces, esa linea es donde tengo mi session_start()
si la pongo al inicio de mi pagina antes del <html > o antes de mi session_name('mi_aplicacion'); la primera vez q alguien se loguea me crea 2 archivos de sesion, uno vacio siempre, y otro con el nick, si me logueo con otro usuario o con el mismo, me remplaza el q tiene el nick, me lo sobreescribe y no me crea una sesion nueva.

Última edición por jam1138; 29/09/2006 a las 11:35 Razón: Error del usuario
  #4 (permalink)  
Antiguo 29/09/2006, 11:36
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
NO puedes meter nada de HTMl antes de session_start() ni de session_name() .. El HTML lo debes colocar despues!.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 29/09/2006, 13:24
Avatar de ranceis  
Fecha de Ingreso: septiembre-2006
Mensajes: 42
Antigüedad: 17 años, 6 meses
Puntos: 0
perfecto amigo, diras q soy muy molestoso, pero es la primera vez q estoy aprendiendo a programar y en php, y si me fue util, pero cuando entro con otro usuario se sobreescribe los datos de mi sesion.
y pues yo quiero llevar el control de los usuarios que acceden a mi sitio y
grabar en una base, que usuario entra la fecha, la hora y que sitios anda visitando, eso aun no lo agrego, pero como aria q cada usuario logueado tenga una sesion diferente?
  #6 (permalink)  
Antiguo 29/09/2006, 15:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por ranceis Ver Mensaje
perfecto amigo, diras q soy muy molestoso, pero es la primera vez q estoy aprendiendo a programar y en php, y si me fue util, pero cuando entro con otro usuario se sobreescribe los datos de mi sesion.
y pues yo quiero llevar el control de los usuarios que acceden a mi sitio y
grabar en una base, que usuario entra la fecha, la hora y que sitios anda visitando, eso aun no lo agrego, pero como aria q cada usuario logueado tenga una sesion diferente?
Cada cliente tiene una sesión diferente. Si tu observas que "cuando cambias a otro usuario se sobreescriben los datos .. " eso es completamente normal, ese es el objetivo de una sesión.

No puedes en una sesión ir agregando datos que otros usuarios generan. Para eso debes usar otro médio de almacenaje de datos "compartido" como pueda ser una Base de datos o similar.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:32.