Foros del Web » Programando para Internet » PHP »

duda con registro de sesiones

Estas en el tema de duda con registro de sesiones en el foro de PHP en Foros del Web. Hola tengo una duda al momento de registrar unas sesiones mi code Código PHP: //query donde comparo los datos insertados previamente en el proceso de login $result = mysql_query ( "SELECT id, usuario, pass, nivel_acceso, nombres, apellidos, email FROM $tablausuarios WHERE usuario='$user' AND pass='$pass'" , $link ); if (! $result ...
  #1 (permalink)  
Antiguo 18/03/2004, 22:15
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
duda con registro de sesiones

Hola tengo una duda al momento de registrar unas sesiones

mi code

Código PHP:

//query donde comparo los datos insertados previamente en el proceso de login
$result=mysql_query("SELECT id, usuario, pass, nivel_acceso, nombres, apellidos, email FROM $tablausuarios WHERE usuario='$user' AND pass='$pass'",$link);
if (!
$result) {
      echo(
"<p>Error: " mysql_error() . "</p>");
      exit();
    }

$rowCheck mysql_num_rows($result);

if(
$rowCheck 0){

$rowmysql_fetch_array($result);

// habilito la sesion para registrar las variables, pero he aqui mi duda no sé si esta registrando todas esas, porque en otra página coloco $_SESSION[nombres] por ejemplo, sale por un momento y navego por varias paginas y luego desaparece

session_start();
$_SESSION['id']=$row['id'];
$_SESSION['usuario']=$row['usuario'];
$_SESSION['nivel_acceso']=$row['nivel_acceso'];
$_SESSION['nombres']=$row['nombres'];
$_SESSION['apellidos']=$row['apellidos'];
$_SESSION['email']=$row['email'];

// si el login esta bien, redirecciono al usuario para que vaya a otra pagina donde se chequea de nuevo la sesion
header"Location: ../usuarios/valido.php" );

    }
else
    {
//si el usuario ni el pass corresponden, mostrar...
header"Location: ../html/index.php?error=ERROR: Login o Password incorrectos!" );
    }
?> 
__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #2 (permalink)  
Antiguo 18/03/2004, 23:07
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
me gustaría ver el código donde checas la sesión y despliegas las variables de sesión. Así mismo, procura poner el session_start() hasta arriba, incluso aunque tu echo este dentro de un if que no lo involucra.
Saludos
  #3 (permalink)  
Antiguo 19/03/2004, 07:02
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
ok........

OK aqui esta mi code

Código PHP:

$user 
$_POST['usuario'];
$pass $_POST['pass'];

//función para conectarse a la base de datos miweb
function Conectarse() { 

//--congig 
$host"localhost";
$user"abc";
$pass"abc";
$db"miweb";
//--end-- 
*/

if (!(
$link=mysql_connect("$host","$user","$pass"))) 
   { 
      echo 
"Error conectando a la base de datos."
      exit(); 
   } 
   if (!
mysql_select_db("$db",$link)) 
   { 
      echo 
"Error seleccionando la base de datos."
      exit(); 
   } 
   return 
$link


$tablausuarios"usuarios";

$link=Conectarse(); 

//query
$result=mysql_query("SELECT id, usuario, pass, nivel_acceso, nombres, apellidos, email FROM $tablausuarios WHERE usuario='$user' AND pass='$pass'",$link);
if (!
$result) {
      echo(
"<p>Error: " mysql_error() . "</p>");
      exit();
    }

$rowCheck mysql_num_rows($result);

if(
$rowCheck 0){

$rowmysql_fetch_array($result);

// habilito la sesion para registrar las variables
session_start();
$_SESSION['id']=$row['id'];
$_SESSION['usuario']=$row['usuario'];
$_SESSION['nivel_acceso']=$row['nivel_acceso'];
$_SESSION['nombres']=$row['nombres'];
$_SESSION['apellidos']=$row['apellidos'];
$_SESSION['email']=$row['email'];


// si el login esta bien, redirecciono al usuario para que vaya a otra pagina donde se chequea de nuevo la sesion
header"Location: ../usuarios/valido.php" );

    }
else
    {
//si el usuario ni el pass corresponden, mostrar...
header"Location: ../html/index.php?error=ERROR: Login o Password incorrectos!" );
    }
?> 
__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #4 (permalink)  
Antiguo 19/03/2004, 07:02
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Según piensas propagar tus sesiones (por el código que usas) .. el SID lo vas a propagar en cookeis .. así que neceistas de:

1) php.ini -> session.use_cookies = 1 (ON)
2) Un navegador que acepte cookies.

Y adicionalmente session.use_only_cookies = 1 (ON) y/o session.use_trans_sid = 1 (ON)

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 19/03/2004, 07:13
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
HOLA de nuevo

OK Cluster


pero es mejor llevar esto por sesiones o por cookies? digo esto por que cookies es mas engorroso si el usuario no tiene activado esto.

si sería por sesiones como hago? como las sello cuando valida el usuario?

__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #6 (permalink)  
Antiguo 19/03/2004, 07:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
A ver ..

Lo que comento de "cookies" en cuanto a sesiones es sólo para propagar el SID (mas info sobre SID en www.php.net/session). Los datos igualmente quedan en el servidor .. lo único que pasa al "cliente" en la cookie es ese SID (Identificador único de sesión).

No tengo Estadísticas fiables de cuantos paranoicos no aceptan cookies indiscriminadamente (yo por ejemplo controlo que cookie entra a mi sistema y si me combiene o identifico de donde viene la dejo pasar) .. así que no te puedo decir algo que creo que es obvio: Si tu avisas que tu sistema requiere de cookies .. así tendrá que ser.

Ademas, el hecho de propagar el SID en cookies (insisto que es sólo el SID .. no los datos de la sesión) aporta seguridad a tu sistema (lo dicen en php.net).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 19/03/2004, 07:57
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
ok

Ok cluster entendido, pero ahora mi pregunta es si estoy haciendo bien en registrar las sesiones de la forma que la coloque en el codigo

Código PHP:

// habilito la sesion para registrar las variables
session_start();
$_SESSION['id']=$row['id'];
$_SESSION['usuario']=$row['usuario'];
$_SESSION['nivel_acceso']=$row['nivel_acceso'];
$_SESSION['nombres']=$row['nombres'];
$_SESSION['apellidos']=$row['apellidos'];
$_SESSION['email']=$row['email']; 
y como propago el SID?
__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.
  #8 (permalink)  
Antiguo 19/03/2004, 08:08
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Pero leistes la documentación del sesiones en PHP?. De lo que leistes (o leas) que no entendistes ..

Revisastes la configuración de PHP que actualente estás usando sobre sesiones? (las directivas que son de tu php.ini las he mencionado várias veces en este mensaje).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 19/03/2004, 08:20
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
hola de nuevo

Ok Cluster si lei la referencia del tema sesion en php y de lo que entendi fue lo siguiente:

1. despues del login correcto sello las sesiones.
2. las tengo que propagar junto con el link de valido.php ?

Código PHP:

// habilito la sesion para registrar las variables
session_start();
$_SESSION['id']=$row['id'];
$_SESSION['usuario']=$row['usuario'];
$_SESSION['nivel_acceso']=$row['nivel_acceso'];
$_SESSION['nombres']=$row['nombres'];
$_SESSION['apellidos']=$row['apellidos'];
$_SESSION['email']=$row['email'];

// si el login esta bien, redirecciono al usuario para que vaya a otra pagina donde se chequea de nuevo la sesion
header"Location: ../usuarios/valido.php?nombres=$_SESSION[nombres]&apellidos=$_SESSION[apellidos]&email=$_SESSION[email]" ); 
y luego ya dentro de mi sistema para darle la bienvenida al usuario pues las llamo con

Código PHP:
<?=$_SESSION[nombres]?><?=$_SESSION[apellidos]?>

dime si lo estoy haciendo bien?
__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.

Última edición por andinistas; 19/03/2004 a las 08:28
  #10 (permalink)  
Antiguo 19/03/2004, 08:39
Avatar de andinistas  
Fecha de Ingreso: julio-2003
Ubicación: Bogotá COL
Mensajes: 1.000
Antigüedad: 20 años, 9 meses
Puntos: 0
phpinfo

Cluster le he hecho un phpinfo a mi server y me ha dado los siguientes resultados


session.auto_start Off Off
session.bug_compat_42 On On
session.bug_compat_warn On On
session.cache_expire 180 180
session.cache_limiter nocache nocache
session.cookie_domain no value no value
session.cookie_lifetime 0 0
session.cookie_path / /
session.cookie_secure Off Off
session.entropy_file no value no value
session.entropy_length 0 0
session.gc_divisor 100 100
session.gc_maxlifetime 1440 1440
session.gc_probability 1 1
session.name PHPSESSID PHPSESSID
session.referer_check no value no value
session.save_handler files files
session.save_path /tmp /tmp
session.serialize_handler php php
session.use_cookies On On
session.use_only_cookies Off Off ----> *** Esta desactivado ****
session.use_trans_sid On On --> este esta bien


en el php.ini si esta bien

php.ini -> session.use_cookies = 1


__________________
Un Saludo, Andinistas.
"Llegaron... Ellos tenían la biblia y nosotros la tierra... y nos dijieron: 'Cierren los ojos y recen.' Cerramos los ojos y cuando los abrimos,
ellos tenían la tierra y nosotros la biblia." Abadío Green.

Última edición por andinistas; 19/03/2004 a las 08:48
  #11 (permalink)  
Antiguo 19/03/2004, 08:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En mensajes anteriores he intentado explicarte que el famoso "SID" que significa: Identificador Único de Sesión se puede propagar el cookies o por el URL ..

Ese "SID" es por ejemplo PHPSESID=97asdf97g8asdf986798df que ves en algunas web's o sistemas que usan sesiones de PHP. ese SID (nombre de la sesión e ID) relacioan a un archivo (u otro médio) -del SERVIDOR- donde están FISICAMENTE esas variables de que almacenas en esa sesión .. Ese "ID" de sesión relaciona a un archivo (por defecto) en el servidor (donde apunte session.save_path del php.ini).

Para que "PHP" como "servidor" sepa què archivo (sesión) ha de usar .. esa "referencia" debes de indicarsela en todos los scirpts que usen sesiones ademas de indicar a PHP que las use por médio de la función session_start() mínimo.

El termino "propagar" = a "pasar" de un script a otro ese (en este caso) SID .. Como ya te he comentado ese proceso de "propagación" del SID lo puedes hacer por cookies (lo más seguro con el problema de que si un cliente (navegador) no acepta cookies no podrá usar tu sistema) o lo puedes hacer manualmente en todo redireccionamiento/link o formulario que en definitiva "salte" desde script1.php a otro script2.php ...

El "SID" es una constante que puedes obtener su valor por la constante de mismo nombre

echo SID;

también lo puedes obtener con las funciones:

session_name() y session_id() que te devuelven respectivamente el nombre de la sesión y el ID de esa sesión que .. todo junto forman el "SID":

ejemplo:
echo session_name()."=".session_id();

Ahora .. (si ya te quedó claro como funcionan las sesiones o me expliqué bien ..) decide tu como vas a propagar el famoso SID . .por qué si o si necesitas propagar dicha constante para que PHP no "pierda" las variables de sesión. Tienes vários métodos con sus pro y contras y todo eso afecta como tengas que configurar PHP o si no puedes modificar la configuración es necesario que sepas como está trabajando esas directivas de configuración de tu php.ini (phpinfo()).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #12 (permalink)  
Antiguo 19/03/2004, 08:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
session.use_only_cookies Off Off ----> *** Esta desactivado ****
Da igual .. a no ser que realmente quieras forzar el uso de cookies para propagar el SID .. pero de momento así como lo tienes configurado usará cookies y si no puede crear la cookie propagará el SID en modo automático (session.use_trans_sid = 1) .. pero fallará en redireccionamientos tipo header("location ..") o en javascripts entre otros donde .. PHP no reescribe automáticamente esos URL's para insertar el SID automáticamente.

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 09:01.