Ver Mensaje Individual
  #1 (permalink)  
Antiguo 05/02/2009, 18:20
Avatar de kurokishi
kurokishi
 
Fecha de Ingreso: enero-2009
Ubicación: Tenochtitlán
Mensajes: 109
Antigüedad: 15 años, 3 meses
Puntos: 1
¿como evitar multisesion?

buenas tardes, pues ahora mi duda que les quisiera plantear es la siguiente:
Ya tengo mi sistema trabajando correctamente, PERO el problema es que un usuario puede iniciar sesion simultaneamente, he intentado restringirlo mediante una variable de sesion, pero como al entrar tratar de entrar desde otra computadora con la misma sesion al ser validos los argumentos lo deja pasar
Mi pregunta es como hacer para que cuando el usuario este dentro de la sesion no pueda iniciar simultaneamente y nuevamente su sesion y si se puede hacer con la variable de sesion.
Mi codigo es el siguiente:
Código PHP:
<?php
session_start
();
$_SESSION["existe"]='si';
$_SESSION['dentro']=0;//con esta sesion trato de hacer un 'flag' para ver que este dentro o no
If(isset($_POST["usuario"]) and isset($_POST["password"]) )
{
$usuario=$_POST["usuario"]; 
$pass=$_POST["password"];

$con=pg_connect("host=127.0.0.1 port=5432 user=postgres password=**** dbname=Curso");
if (!
$con
    {
        echo 
"<html>
                <head>
                    <link href='curso/nihongo.css' rel='stylesheet' type='text/css'>
                </head>    
                    <body background='curso/menu/fondo.jpg' oncontextmenu='return false'>
                    <p class='titulo'>¡ERROR al conectarse a la base de datos.</p>
                    </body>
            </html>"
;
    }
 else     
    {
    
$sql="SELECT c.usuario, c.nivel, i.nickname FROM comparacion c, id i WHERE c.usuario='$usuario' AND c.contrasena='$pass' AND c.usuario=i.usuario";
$query=pg_query($sql);

    If(
pg_num_rows($query)==1)
    {
        
$row=pg_fetch_array($query);
        
$_SESSION["usuario"]=$row[0];
        
$_SESSION["usuario"]=$row[1];
        
$_SESSION["usuario"]=$usuario;
        
$_SESSION["nivel"]=$row[1];
        
$_SESSION["nickname"]=$row[2];
        
        
        if (
$_SESSION["nivel"]=='f')
        {
            
header ('Location: curso/nihongo_aragon.php?modulo=inicio');
            
$_SESSION['dentro']++;//aumento mi variable para que sea 1 y se active cuando entre
            
exit;
        }
        elseif (
$_SESSION["nivel"]=='t')
        {
            
header ('Location: curso/sensei_aragon.php?modulo=inicio');
            
$_SESSION['dentro']++;
            exit;
        }
    }    
        else
        {
            
header ('Location: ../logerror.php');
            exit;
        }
    }
}
?>
Y la pantella principal es:

Código PHP:
<?php
session_start
();
$_SESSION['usuario'];
$_SESSION['nivel'];
$_SESSION['nickname'];
$_SESSION['dentro'];
include (
"seguridad.php");
if (isset (
$_SESSION['dentro'])>=1)
{
header ('Location: ../dentroer.php');
    exit;
}
elseif(
$_SESSION['dentro']<=1)
{
    echo 
"
<html>
<head>
<title>日本語 の オンライアン 教室。</title>
</head>
<body margin-top: 0px; oncontextmenu='return false' background='menu/fondo.jpg'>
    <center>
        <table width='1200' height='600'>
            <tr>
                <td  width='1200' colspan='2' height='130' background='menu/cabecera.jpg'>
                    
                </td>
            </tr>
                <tr>
                    <td width='180' height='75' valign='top' name='menu'>"
;
                        include (
"menu.php");
                echo 
"
                    </td>
                        <td width='1020' height='525'>
                    <iframe src='Lecciones/"
.$_GET["modulo"].".php' height='100%' width='100%' scrolling='auto' frameborder='0' allowtransparency>
                    </iframe>
            </td>
  </tr>
 </table>
 </center>
 </body>
</html>"
;
}
?>
Y al ser siempre 1 me lo deja pasar, espero me puedan ayudar.
De antemano gracias.
salu2!