Foros del Web » Programando para Internet » PHP »

Problemas con sessiones

Estas en el tema de Problemas con sessiones en el foro de PHP en Foros del Web. Sludos amigos miren tengo el sgte problema: tengo 4 scripts index.php verifica.php funcionespear.php principala.php en index esta las cajas de texto para el usuario la ...
  #1 (permalink)  
Antiguo 21/05/2004, 10:39
 
Fecha de Ingreso: febrero-2004
Ubicación: Los naranjos 328
Mensajes: 51
Antigüedad: 20 años, 9 meses
Puntos: 0
Problemas con sessiones

Sludos amigos miren tengo el sgte problema:

tengo 4 scripts

index.php
verifica.php
funcionespear.php
principala.php

en index esta las cajas de texto para el usuario la clave
y en verifica segun la tabla de la BD me manda a una funcion llamada validar_varios($tabla,$db,$txtusuario,$txtclave).

Bueno en este fichero donde contengo todsas mis funciones hago un script para validar creando una session si este existe, pero luego cuando me voy a principala.php la session no levanta y no imprime nada. Quisiera saber si me pueden la aca les mando el codigo


verifica.php

<?php
if ($usuario!="" && $clave!="" && $tipo!="" )
{
include("../funciones/funcionespear.php");
$db=conectar();
switch($tipo)
{
case "a" : //alumnos
validar_varios("gn_alumno",$db,$usuario,$clave);
break;
case "d" : //Docentes
validar_varios("ac_docente",$db,$usuario,$clave);
break;
case "ad" : //Administrativos
validar_varios("gn_personal",$db,$usuario,$clave);
break;
}
}
?>

//hasta aqui todo normal incluso mandan las variables

funcionespear.php

function validar_varios($tabla,$db,$txtusuario,$txtclave)
{
// Global $db,$db,$txtusuario,$txtclave;
//echo "usuario es $txtusuario <br>";
//echo "txtclave es $txtclave <br>";
if ($tabla=="gn_alumno") {
$sql=$db->query("select * from $tabla where idalumno='$txtusuario'");
}else{
$sql=$db->query("select * from $tabla where login='$txtusuario'");
}
if (DB::isError($sql)) die($sql->getMessage()); //valido los errores de la Primera Consulta
if ($db->numrows($sql)==0)
{
echo "<center><b><font color=#993300>El Usuario No existe en La BD</font></b></center><br>";
echo "<META HTTP-EQUIV=Refresh CONTENT='5;URL=index.php'><br><br><br>";
echo "<center><b>Si no se Redirecciona en un Par de Minutos Haga click Aca <center><a href='index.php'>Vuelva a Intentarlo</a></b></center>";
exit;
}else {
$xusuario=split("_",$tabla);
while($data = $sql->fetchRow(DB_FETCHMODE_ASSOC))
{
$idusuario=$data["id$xusuario[1]"];
$login=$data["login"];
$claveu=md5($data["password"]);
//echo "idusuario es " . $data["id$xusuario[1]"] . "<br>";
}
if ($txtusuario!=$idusuario)
{
echo "<center><b><font color=#993300>El Usuario es Incorrecto ...</font></b></center><br>";
echo "<META HTTP-EQUIV=Refresh CONTENT='5;URL=index.php'><br><br><br>";
echo "<center><b>Si no se Redirecciona en un Par de Minutos Haga click Aca <center><a href='index.php'>Vuelva a Intentarlo</a></b></center>";
exit;
}
if (md5($txtclave)!=$claveu)
{
echo "<center><b><font color=#993300>La Clave es Incorrecta</font></b></center><br>";
echo "<META HTTP-EQUIV=Refresh CONTENT='5;URL=index.php'><br><br><br>";
echo "<center><b>Si no se Redirecciona en un Par de Minutos Haga click Aca <center><a href='index.php'>Vuelva a Intentarlo</a></b></center>";
exit;
}
unset($txtusuario);
unset ($txtclave);
/* ===================Proceso de Autentificacion mediante session ======*/
session_start();
session_name("usuarios_ingreso");
session_cache_limiter('nocache,private');
session_register("id_usuario");
session_register("login_usuario");
$id_usuario=$idusuario;
$login_usuario=$login;
Header ("Location: $PHP_SELF?");
/*capturo el id para grabar en tabla sessiones*/
$idses=session_id();
if ($idses!="")
{
$f1=fopen("logs/historial","a+");
$hora=date("h:i:s");
$fecha=date("j-n-Y");
fputs($f1,"$idses - $idusuario - $fecha - $hora \n");
fclose($f1);
}
/**/
$tabla=$tabla;
switch($tabla){
case "gn_alumno" :
header("location:principala.php");
break;
case "ac_docente" :
header("location:principald.php");
break;
}
/* -*-*- */

}

}


//aca esta el problema pues no cre la session


principala.php


<?php
session_start();
echo "user " . $_SESSION["idusuario"] . "<br>";
echo "iduser es $idusuario <br>";
echo "login es $login";
?>

cuando verifico no hay nada




NOTA: Miren ya he probado en un archivo con sessiones de manera simple y si corre asi que creo q la configuracion no es, pero no se porke no inicializa estas variables. El script esta de manera normal recoge los datos de la tabla . Pero el problema es al crear la session


Espero me puedan ayudar Saludos
__________________
===================
Juan Carlos Medina Ruiz
<?PHP?>
==================


Un dia sin aprender algo es un dia perdido
:aplauso:
  #2 (permalink)  
Antiguo 21/05/2004, 10:48
 
Fecha de Ingreso: mayo-2004
Mensajes: 4
Antigüedad: 20 años, 6 meses
Puntos: 0
_

Tal vez no tenga nada que ver, pero

funcionespear.php
session_register("id_usuario");

principala.php
echo "user " . $_SESSION["idusuario"] . "<br>";


Eso más lo de usar siempre la variable superglobal $_SESSION y no el session_register (según versiones) e iniciar la sesión session_start() siempre lo primero.


  #3 (permalink)  
Antiguo 21/05/2004, 10:55
 
Fecha de Ingreso: febrero-2004
Ubicación: Los naranjos 328
Mensajes: 51
Antigüedad: 20 años, 9 meses
Puntos: 0
Uhmm

sALUDOS nafu, pero si te das cuenta en la Programacion estoy usando
session_start();
echo "user " . $_SESSION["idusuario"] . "<br>";
echo "iduser es $idusuario <br>";
echo "login es $login";
__________________
===================
Juan Carlos Medina Ruiz
<?PHP?>
==================


Un dia sin aprender algo es un dia perdido
:aplauso:
  #4 (permalink)  
Antiguo 21/05/2004, 14:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
Tienes un mezcladillo de funciones y métodos para acceder a variabels de sesión ..

No sé si usas PHP 4.1.0 en adelante como versión de PHP .. pero si es así usa los arrays superglobales: $_SESSION .. $_SERVER .. $_POST .. etc para trabajar con tus variables

No se puede mezclar .. registrar variables de sesión con session_register() y luego accederlas por $_SESSION (en su defecto tendrías que usar $HTTP_SESSION_VARS) ..

En verifica.php . si alguna de esas variables que validas son de SESION debes usar session_start() antes de intentar acceder a una de esas variables .. y mejor si lo haces por el array superglobal: $_SESSION (lee las FAQ's de este foro .. se habla del tema).

Otros detalles:

Cita:
session_start();
session_name("usuarios_ingreso");
session_cache_limiter('nocache,private');
session_register("id_usuario");
session_register("login_usuario");
session_name() si quieres definir el nombre de una sesión (es opcional) debes hacerlo -antes- de session_start() y usalo -siempre- que accedas a variables de sesión (en todos tus scripts) y en ese orden ...

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 22/05/2004, 09:41
 
Fecha de Ingreso: febrero-2004
Ubicación: Los naranjos 328
Mensajes: 51
Antigüedad: 20 años, 9 meses
Puntos: 0
una pregunta

Se puede abrir varias sessiones en un mismo proyecto

session_name("login_usuarios");
session_name("contador");
session_name("carrito");

session_start();
__________________
===================
Juan Carlos Medina Ruiz
<?PHP?>
==================


Un dia sin aprender algo es un dia perdido
:aplauso:
  #6 (permalink)  
Antiguo 22/05/2004, 23:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
mm En teoría .. esos X session_name() que defines y luego un sólo session_start() .. tu nombre de sesión quedaría como "carrito" (la última definida).

Tal vez si a cada session_name() acompañas seguidamente su sessoin_start() .. mm crearias X sesiones a la vez para ese cliente (con mismo ID .. pero al tener nombre distinto sería diferentes: SID creados diferentes?).

Es cosa que lo pruebes y observes que SID vas creando .. Pero, creo que no funcionaría como esperas.

Pero la pregunta sería "para qué?" .. Si todas esas "sesiones" son de ese cliente que las inicia .. lo más lógico es trabajar ahí en la misma sesión las variables que necesites .. Si quieres agrupar datos que son comunes puedes usar arrays (bidimensionales .. etc) como para "aclararte" .. pero ni eso sería necesario.

(Por mi parte no he visto ningún sistema que se base en sesiones trabajar así como pretendes. )

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 21:24.