Foros del Web » Programando para Internet » PHP »

Sesiones

Estas en el tema de Sesiones en el foro de PHP en Foros del Web. Hola amigos: Se que este problema se ha discutido ya pero no acabo de entender... Tengo un script para crear una session pero no me ...
  #1 (permalink)  
Antiguo 21/09/2006, 09:44
 
Fecha de Ingreso: noviembre-2002
Mensajes: 147
Antigüedad: 21 años, 5 meses
Puntos: 0
Sesiones

Hola amigos:

Se que este problema se ha discutido ya pero no acabo de entender...

Tengo un script para crear una session pero no me lo hace.. Tengo PHP
Version 4.3.11, y este es el script

<?php
session_start();
// Motor autentificación usuarios.
if (!isset($_SESSION["usuario_id"])){
// Cargar datos conexion y otras variables.
require ("config.conf");


// Conexión base de datos.
// si no se puede conectar a la BD salimos del scrip con error 0 y
// redireccionamos a la pagina de error.

$db_conexion= mysql_connect("$sql_host", "$sql_usuario", "$sql_pass") or
die(header ("Location: $redir?error_login=0"));
mysql_select_db("$sql_db");

// realizamos la consulta a la BD para insertar un usuario X
$usuario = mysql_query("Insert INTO cliente (cliente) VALUES ('p')");
$resultuser = mysql_query($sqluser);
//Asigno el valor del ultimo insertado
$idcliente = mysql_insert_id();

// incia sessiones
session_start();

// Paranoia: decimos al navegador que no "cachee" esta página.
session_cache_limiter('nocache,private');

// Asignamos variables de sesión con datos del Usuario para el uso en el
// resto de páginas autentificadas.

// definimos $usuarios_id como IDentificador del usuario en nuestra BD
de usuarios
$usuario_id = $idcliente;
//registramos las variables en la sesión:
session_register("usuario_id");

}
?>

Cuando quiero acceder a el valor $_SESSION["usuario_id"] no me da el valor
correctamente, ademas siempre entra a
if (!isset($_SESSION["usuario_id"])){, o sea que no crea la sesion... Estoy
haciendo muchas cosas mal???
  #2 (permalink)  
Antiguo 21/09/2006, 10:19
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
si usa $_SESSION no utilices session register usa $_SESSION['id_usuario']=$usuario_id

ver: http://mx.php.net/manual/es/ref.session.php
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #3 (permalink)  
Antiguo 21/09/2006, 10:21
Avatar de djreficul  
Fecha de Ingreso: julio-2006
Ubicación: Cork
Mensajes: 672
Antigüedad: 17 años, 9 meses
Puntos: 0
Otro apunte, si inicias sesion al principio de la página... xq vuelves a iniciar sesión más abajo?

Saludos.
__________________
La muerte es un camino que todos debemos recorrer...
  #4 (permalink)  
Antiguo 21/09/2006, 10:41
 
Fecha de Ingreso: noviembre-2002
Mensajes: 147
Antigüedad: 21 años, 5 meses
Puntos: 0
Muchas gracias pero nada

Amigo muchas gracias... Pero sigue haciendo lo mismo, osea siempre entra a; if (!isset($_SESSION['usuario_id'])){...

asi esta el codigo

<?



if (!isset($_SESSION['usuario_id'])){

require ("config.conf");


$db_conexion= mysql_connect("$sql_host", "$sql_usuario", "$sql_pass") or die(header ("Location: $redir?error_login=0"));
mysql_select_db("$sql_db");


$usuario = mysql_query("Insert INTO cliente (cliente) VALUES ('p')");

$idcliente = mysql_insert_id();

session_cache_limiter('nocache,private');

$usuario_id = $idcliente;
$_SESSION['usuario_id'] = $usuario_id;


}
?>
  #5 (permalink)  
Antiguo 21/09/2006, 10:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Menudo cacao que tienes en ese script .. defines sesiones de una forma ($_SESSION) y de otra (session_register()) . .Ambos métodos NO SON COMPATIBLES y no es NADA recomendable usar session_register()

Realmente podrías usar "Autentificator" tal cual es:
http://php.cluster-web.com/autentificator

Por qué has hecho muchas modificaciones sin mucho sentido. .. Observa su código detenidamente y si quieres hacer alguna modificación . .expon el poblema claramente.

Que pretendes hacer exactamente? ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #6 (permalink)  
Antiguo 21/09/2006, 10:46
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 3 meses
Puntos: 10
hola! q tal?
y la variable $_SESSION['usuario_id'] existe? o la creas justamente al final de crear la session?
si te fijas en tu codigo en la ultima linia q tienes $_SESSION['usuario_id'] = $usuario_id; aqui estas creando la variable session.entonces es normal q siempre entre en if (!isset($_SESSION['usuario_id'])) xq esta variable no existe al principio.
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #7 (permalink)  
Antiguo 21/09/2006, 10:51
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Aclarame una duda ... Donde defines "$_SESSION['usuario_id']" .. Usas "Autentificator" (tal cual es o como es tu script de autentificación?)

Eso es parte primordial .. por qué por mi parte en "Autentificator" defino un nombre de sesión -propio- .. así que si usas mi sistema de autentificación tal cual tendrás que iniciar el uso de sesiones con el nombre que le distes.

Si usases Autentificator tal cual es .. tan sólo deberías usarlo tipo:


Código PHP:
<?
include ("aut_verifica.inc.php");

mysql_connect("$sql_host""$sql_usuario""$sql_pass") or die(header ("Location: $redir?error_login=0"));

mysql_select_db("$sql_db");

// Realmente no sé para que insertas un registro en tu BBDD y "re-escribes" el ID del usuario supuestamente "activo" y "logeado" (autentificado) por tu sistema de gestión de usuarios. 
// Que sentido tiene esto?

$usuario mysql_query("Insert INTO cliente (cliente) VALUES ('p')");
$_SESSION['usuario_id'] = mysql_insert_id();
?>
Por qué en "aut_verifica.inc.php" ya se hace el "if()" para ver si tu sesión está activa y válida (entre otras cosas) . .incluye la llamada a las variables del nombre de tu sesión, BBDD y demás.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 21/09/2006, 11:04
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
creo que ya voy entendiendo, lo que tu quieres es que cuando entre a esta página si no ha iniciado sesion se agregue el valor "p", pero si ya esta iniciada la session no quieres que vuelva a guardar los datos ¿cierto?

bien, pues si es asi, creo que lo que debes de quitar el segundo session_start(), ya que con el primero se crea y puedes asignar la variable sin necesidad de volver a iniciar session.
Código PHP:
session_start();
// Motor autentificación usuarios.
if (!isset($_SESSION["usuario_id"])){
// Cargar datos conexion y otras variables.
require ("config.conf");


// Conexión base de datos.
// si no se puede conectar a la BD salimos del scrip con error 0 y
// redireccionamos a la pagina de error.

$db_conexionmysql_connect("$sql_host""$sql_usuario""$sql_pass") or
die(
header ("Location: $redir?error_login=0"));
mysql_select_db("$sql_db");

// realizamos la consulta a la BD para insertar un usuario X
$usuario mysql_query("Insert INTO cliente (cliente) VALUES ('p')");
$resultuser mysql_query($sqluser);
//Asigno el valor del ultimo insertado
$idcliente mysql_insert_id();

// Paranoia: decimos al navegador que no "cachee" esta página.
session_cache_limiter('nocache,private');

//registramos las variables en la sesión:
$_SESSION['usuario_id']=$idcliente;
}
else
{
  
//aqui lo que quieres que muestre si ya inicio sesion.

espero que te sea de utilidad o te de una idea.
saludos.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #9 (permalink)  
Antiguo 21/09/2006, 11:06
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 eits Ver Mensaje
creo que ya voy entendiendo, lo que tu quieres es que cuando entre a esta página si no ha iniciado sesion se agregue el valor "p", pero si ya esta iniciada la session no quieres que vuelva a guardar los datos ¿cierto?

bien, pues si es asi, creo que lo que debes de quitar el segundo session_start(), ya que con el primero se crea y puedes asignar la variable sin necesidad de volver a iniciar session.
Código PHP:
session_start();
// Motor autentificación usuarios.
if (!isset($_SESSION["usuario_id"])){
// Cargar datos conexion y otras variables.
require ("config.conf");


// Conexión base de datos.
// si no se puede conectar a la BD salimos del scrip con error 0 y
// redireccionamos a la pagina de error.

$db_conexionmysql_connect("$sql_host""$sql_usuario""$sql_pass") or
die(
header ("Location: $redir?error_login=0"));
mysql_select_db("$sql_db");

// realizamos la consulta a la BD para insertar un usuario X
$usuario mysql_query("Insert INTO cliente (cliente) VALUES ('p')");
$resultuser mysql_query($sqluser);
//Asigno el valor del ultimo insertado
$idcliente mysql_insert_id();

// Paranoia: decimos al navegador que no "cachee" esta página.
session_cache_limiter('nocache,private');

//registramos las variables en la sesión:
$_SESSION['usuario_id']=$idcliente;
}
else
{
  
//aqui lo que quieres que muestre si ya inicio sesion.

espero que te sea de utilidad o te de una idea.
saludos.
Si es así ..

// Paranoia: decimos al navegador que no "cachee" esta página.
session_cache_limiter('nocache,private');

debería estar antes de session_start() .. no donde está. Y ojo si define nombre de sesión própio con session_name() por algún otro lado de la aplicación.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #10 (permalink)  
Antiguo 21/09/2006, 11:17
 
Fecha de Ingreso: noviembre-2002
Mensajes: 147
Antigüedad: 21 años, 5 meses
Puntos: 0
Nada

Amigos perdonenme es que quizas no me explique bien... Primero no puedo usar cookie ene sta pagina. Tiene que ser con sesiones.

Lo que quiero es que si una persona entra a mi pagina debo insertar una p (cosas del dueno) y tomar el identificador el ID del insert y trabajar con el en sesiones... Yo he probado uno y cada uno de los ejemplos que me han dado.. Pero nada, no se ejecuta.. Quizas el PHP esta mal configurado... no se..
http://www.rctelevision.com/1.php
Aqui esta el PHPINFO() si pueden ver.. Quizas el problema sea con la configuracion del PHP

Gracias por todo amigos... Si yo tome la idea de autentificator para poder hacer algo proque estoy mas que botao en esto... Ha probe los ejemplo del manual y nada tampoco...
  #11 (permalink)  
Antiguo 21/09/2006, 11:31
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Deberías definir mejor lo que pretendes hacer, a donde quieres llegar y de que dispones.

Hablas de "Lo que quiero es que si una persona entra a mi pagina debo insertar una p" .. pero no dejas claro si esas "personas" que entra a tu web o sistema están registradas previamente y autentificadas por algún sistema de "login" (con sesiones o no) ..


Cita:
Amigos perdonenme es que quizas no me explique bien... Primero no puedo usar cookie ene sta pagina. Tiene que ser con sesiones.
No sé si conoces que el código que usas va a propaga el SID en cookies (o así lo requiere, pues tu no lo propagas a mano en los redireccionamientos que haces con header("location ...) entre otras cosas. Tu configuración de PHP propagará el SID en cookies si puede crearla (en el cliente) y tambíen por el URL (tal cual está).

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 21/09/2006, 11:31
Avatar de eits  
Fecha de Ingreso: junio-2005
Ubicación: valladolid, yucatán
Mensajes: 1.655
Antigüedad: 18 años, 10 meses
Puntos: 88
upss.
cierto cluster un error garrafal de mi parte, pero en este momento estoy en el trabajo y lo hice con un poco de prisa.

y pasando al tema se me hace raro que no funcione.
que tal si utilizas el error_reporting(E_ALL); a ver si muestra el error.
checa y di.
__________________
El amor es la locura mas lucida que tiene el hombre.- Andres Henestrosa
la tristeza no existe, solo es... la ausencia de la felicidad.
  #13 (permalink)  
Antiguo 21/09/2006, 11:42
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 eits Ver Mensaje
upss.
cierto cluster un error garrafal de mi parte, pero en este momento estoy en el trabajo y lo hice con un poco de prisa.

y pasando al tema se me hace raro que no funcione.
que tal si utilizas el error_reporting(E_ALL); a ver si muestra el error.
checa y di.
Me parece que más que error de "código" hay un error "de lógica" que primero hay que resolver .. Aquí nos estamos "cegando" con el uso de sesiones que hay por médio y el tremendo pupurí de código inicial que expuso nuestro amigo ..

Si expone bien claro lo que necesita hacer y nos olvidamos de lo que "intentó" hacer sería lo más sano creo yo para todos, mejor solución al problema y más rápido.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #14 (permalink)  
Antiguo 21/09/2006, 11:49
 
Fecha de Ingreso: noviembre-2002
Mensajes: 147
Antigüedad: 21 años, 5 meses
Puntos: 0
AMigos

De nuevo explico... La persona quee ntra a mi maquina es un cliente cualquiera.. No necesita autentificacion ni nada.. El entra y se le quiere hacer una sesion porque se quiere registar lo que hace en la pagina... osea, yo tengo varios productos y quiero saber los productos que el elige.. Eso lo hago bien.. El problema surge cuando creo la sesion que no quiere crearla.

A ver si explico mejor.. Un cliente entra a mi WebSite... Yo le hago una sesion (cuando entra a una pagina determinada imaginense que a Rentas) y quiero saber a que productos el ha eligido... Un problema del dueno del sitio... Con esos productos el cliente podra solicitarlos a travez de un formulario, pero ya los registros en una tabla para que el dueo del sitio pueda ver historial, etc.

Yo lo hice con cookie pero el cliente no quiere porque si la persona tiene desactivado los cookie pues ahi queda todo. Pense en hacer una sesion para cada cliente y asi poder guardar segun un ID consecutivo los productos de cada cliente... Si el cliente despues llena un formulario ya tego los productos que desea.. Me copian... No es un carrito de ventas o una tienda virtual...


. Yo tengo en mi servidor PHP 4.0 y esto me trabaja perfectamente.. Cuando lo subo a este servidor donde esta el sitio es que no corre. Por eso pense que fuera de configuracion del PHP...

Si puedo no quedo claro por favor diganmelo...

Y perdonenme por favor.. Es que tengo un dia como esos que es para morirse.. Un abrazo
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 21:31.