Foros del Web » Programando para Internet » PHP »

aprendiendo a trabajar con sesiones :p

Estas en el tema de aprendiendo a trabajar con sesiones :p en el foro de PHP en Foros del Web. hola estoy aprendiendo a trabajar con sesiones y tengo la siguiente duda, una ves que el administrador compara mis datos en la base de datos ...
  #1 (permalink)  
Antiguo 08/12/2007, 09:53
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Pregunta aprendiendo a trabajar con sesiones :p

hola

estoy aprendiendo a trabajar con sesiones y tengo la siguiente duda, una ves que el administrador compara mis datos en la base de datos y las acepta. Como puedo hacer que se dirija a una siguiente pagina manteniendo la sesión este es el cod en el cual estoy trabajando.


Código PHP:
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='username';
$dbuserpass='password';
$dbname='database';

session_start();

// Conectar a la base de datos
mysql_connect ($dbhost$dbusername$dbuserpass);
mysql_select_db($dbname) or die('Cannot select database');

if (
$_POST['username']) {
//Comprobacion del envio del nombre de usuario y password
$username=$_POST['username'];
$password=$_POST['password'];
if (
$password==NULL) {
echo 
"La password no fue enviada"
}else{
$query mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$data mysql_fetch_array($query);
if(
$data['password'] != $password) { 
echo 
"Login incorrecto";
}else{
$query mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$row mysql_fetch_array($query);
$_SESSION["s_username"] = $row['username'];
echo 
"Has sido logueado correctamente ".$_SESSION['s_username']." y puedes acceder al index.php.";
}
}
}
?> 

si me pueden ayudar agradecido
  #2 (permalink)  
Antiguo 08/12/2007, 10:05
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Re: aprendiendo a trabajar con sesiones :p

En vez de hacer un echo para notificar que se logueo, deberías redireccionarlo

Código PHP:
// ...
$query mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$row mysql_fetch_array($query);
$_SESSION["s_username"] = $row['username'];
header("location: siguiente_pagina.php");
exit;
// ... 
Entonces en siguiente_pagina.php deberías recibir los datos de session para saber si es un usuario válido

Código PHP:
session_start();
if (!isset(
$_SESSION['s_username']))
{
  die(
'Debe loguearse para acceder a esta página');
}
// ... 
  #3 (permalink)  
Antiguo 08/12/2007, 10:12
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Re: aprendiendo a trabajar con sesiones :p

OK lo voy a probar muchas gracias por la orientación , te respondo si me resulto
  #4 (permalink)  
Antiguo 08/12/2007, 14:27
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Exclamación Re: aprendiendo a trabajar con sesiones :p

esta primera parte me funciona bien

Código PHP:
// ...
$query mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$row mysql_fetch_array($query);
$_SESSION["s_username"] = $row['username'];
header("location: siguiente_pagina.php");
exit;
// ... 

pero en la segunda parte :ç

Código PHP:
session_start();
if (!isset(
$_SESSION['s_username']))
{
  die(
'Debe loguearse para acceder a esta página');
}
// ... 
se supone que me mantine la sesion


y otra consulta con esto yo podria traer los datos del usuario del usuario logeado desde la base de datos ,(como seria e se select )

gracias por la ayuda
  #5 (permalink)  
Antiguo 08/12/2007, 15:26
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Re: aprendiendo a trabajar con sesiones :p

Oye debes poner el inicio de la session antes de cualquier codigo ejemplo

<?
session_start();
// Resto de mi codigo...
?>

Algo mal echo seria que lo estuvieras haciendo de la siguiente manera...

<?
include('mi_conexion.php');
session_start();
?>
  #6 (permalink)  
Antiguo 08/12/2007, 15:41
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: aprendiendo a trabajar con sesiones :p

@eddwinpaz: mmh, no, el session_start() solo debe estar antes de cualquier salida de texto (echo, print, etc), por lo que si el mi_conexion.php no tiene ninguna salida de texto, no habrá error al poner el session_start() despues =P

@a83: prueba poniendo un print_r($_SESSION) despues del session_start() en la segunda parte, para asi ver si en realidad existe la variable de sesion que pusiste en la pagina anterior. En caso de que no te aparezca, entonces es posible que algo este mal en la primera pagina
__________________
Sin Ideas
  #7 (permalink)  
Antiguo 08/12/2007, 16:47
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Re: aprendiendo a trabajar con sesiones :p

oso96_2000 si esta funcionado.

ahora la pregunta es ?
este codigo lo tengo que poner en cada paguina que tenga php para que se mantenga la sesio activa

Código PHP:
<?
session_start
(); 
print_r($_SESSION);
if (!isset(
$_SESSION['s_username'])) 

  die(
'Debe loguearse para acceder a esta página'); 

?>

saludos y muchas gracias por la ayuda
  #8 (permalink)  
Antiguo 08/12/2007, 16:58
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: aprendiendo a trabajar con sesiones :p

Para que te mantenga la sesion activa solo es necesario el session_start()

El print_r solo te muestra las variables de sesion (si existen)

Y lo demas es para comprobar que $_SESSION['s_username'] exista, y en caso de que no sea asi, mostrar un mensaje.
__________________
Sin Ideas
  #9 (permalink)  
Antiguo 09/12/2007, 16:17
Avatar de a83
a83
 
Fecha de Ingreso: noviembre-2005
Ubicación: Santiago de chile
Mensajes: 637
Antigüedad: 18 años, 5 meses
Puntos: 1
Re: aprendiendo a trabajar con sesiones :p

ok gracias
  #10 (permalink)  
Antiguo 09/12/2007, 20:48
Avatar de seinkraft  
Fecha de Ingreso: diciembre-2007
Mensajes: 119
Antigüedad: 16 años, 4 meses
Puntos: 1
Re: aprendiendo a trabajar con sesiones :p

Holis, estube trabajando con este sistema y lo realice tal cual va hasta ahora, se loguea lo mas bien pero a la hora de mantener la sesion activa tira un error.

Código:
Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\php\index.php:6) in C:\xampp\htdocs\php\login.php on line 12
Código:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\php\index.php:6) in C:\xampp\htdocs\php\login.php on line 12
  #11 (permalink)  
Antiguo 09/12/2007, 20:57
Avatar de eddwinpaz  
Fecha de Ingreso: noviembre-2007
Ubicación: Merida , Venezuela
Mensajes: 1.066
Antigüedad: 16 años, 6 meses
Puntos: 25
Re: aprendiendo a trabajar con sesiones :p

jeje gracias por el dato yo siempre he tenido ese mito de session_start(); antes de todo me lavaron el cerebro con eso.. los profesores de PHP pero bueno ya se que se puede hacer siempre y cuando no haya ningun echo , print GRax
  #12 (permalink)  
Antiguo 09/12/2007, 22:30
Avatar de seinkraft  
Fecha de Ingreso: diciembre-2007
Mensajes: 119
Antigüedad: 16 años, 4 meses
Puntos: 1
Re: aprendiendo a trabajar con sesiones :p

Ya lo pude resolver...era la misma estuppidez de siempre :S

Perdon! T_T

Pero ahora tengo otro problema x3, no me lee la sesion :S

Usando su codigo:

login.php
Código PHP:
<?
// Configura los datos de tu cuenta
$dbhost='localhost';
$dbusername='root';
$dbuserpass='';
$dbname='eka';

// Conectar a la base de datos
mysql_connect ($dbhost$dbusername$dbuserpass);
mysql_select_db($dbname) or die('Cannot select database');

if (
$_POST['username']) {
//Comprobacion del envio del nombre de usuario y password
$username=$_POST['username'];
$password=$_POST['password'];
if (
$password==NULL) {
echo 
"La password no fue enviada"
}else{
$query mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$data mysql_fetch_array($query);
if(
$data['password'] != $password) { 
echo 
"Login incorrecto";
}else{
$query mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$row mysql_fetch_array($query);
$_SESSION["s_username"] = $row['username'];
header("location: siguiente_pagina.php");
}
}
}
?>
siguiente_pagina.php
Código PHP:
<?php
session_start
();
if (isset(
$_SESSION['s_username'])) {
echo 
"Bienvenido ".$_SESSION['s_username'];
}
else{
echo 
"No estas autentificado";
}
?>
Cuando me redirige a siguiente_pagina.php no me reconoce la sesion, me dice que no estoy autentificado. :S

Última edición por seinkraft; 10/12/2007 a las 10:44
  #13 (permalink)  
Antiguo 10/12/2007, 15:27
Avatar de oso96_2000  
Fecha de Ingreso: junio-2002
Ubicación: Distrito Federal
Mensajes: 558
Antigüedad: 21 años, 10 meses
Puntos: 35
Re: aprendiendo a trabajar con sesiones :p

@seinkraft: Según veo te falta un session_start() en tu primera pagina. Recuerda que debes ponerlo en TODA pagina donde vayas a usar sesiones, ya sea crearlas o leerlas.
__________________
Sin Ideas
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 12:52.