Ver Mensaje Individual
  #1 (permalink)  
Antiguo 01/09/2013, 10:46
Avatar de KATHYU
KATHYU
 
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 10 años, 9 meses
Puntos: 46
Problema con Sesiones en el mismo "Server"

Antes que nada decirles que no son fan de poner todas mis dudas para que me las resuelvan, yo busco y cuando no hayo ni para atras ni para adelante ahi si pregunto, ya busque de este tema y espero me ayuden !!!

Bien les explico y si en algo tienen consejos de seguridad les agradecere; yo implemente las sesiones en mi sistemita y lo hice asi :

Este es el codigo php del index (login) ya que el html para que lo pongo xD

Usando este tema: aporte-seguridad-basica-php- que hizo el amigo Triby logre poner en practica algunos consejos de seguridad (algunos ya que otros aun no he podido xD)

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     include('include/c.php');
  4.     if(!empty($_POST['user']) and !empty($_POST['pass'])){
  5.     $user = '';
  6.     $pass = '';
  7.     $user = trim($_POST['user']);
  8.     $pass = trim($_POST['pass']);
  9.         $user = $mysqli->real_escape_string($user);
  10.         $pass = $mysqli->real_escape_string($pass);
  11.         $sql = $mysqli->query("SELECT * FROM users WHERE nombre='$user' and pass='$pass' ");
  12.         if($row = $sql->fetch_array(MYSQLI_ASSOC)){
  13.    
  14.         if ($user == $row['nombre'] and $pass == $row['pass'])
  15.             {
  16.             $_SESSION['iduser'] = $row['id'];
  17.             $_SESSION['username'] = $row['nombre'];
  18.             $_SESSION['tipo_usu'] = $row['tipo'];
  19.             if(!$_SESSION['tipo_usu']=='0' ){
  20.             header('location:kosys.php');
  21.             }
  22.             else{
  23.                 header('location:error.php');
  24.                 }
  25.             }
  26.         else{
  27.         echo "<script language='JavaScript'>alert('Usuario o Password invalidos !!!');
  28.             </script>";
  29.                 }
  30.         }
  31.         else{
  32.         echo "<script language='JavaScript'>alert('Usuario o Password invalidos !!!');
  33.             </script>";
  34.             }
  35.         }
  36. ?>

Bien eso pasa a un archivo que tiene el menu y todo eso, y el codigo php es el siguiente:

Código PHP:
Ver original
  1. <?php
  2.         session_start();
  3.         include('include/c.php');
  4.         if(!$_SESSION['tipo_usu']=='1' or !$_SESSION['tipo_usu']=='2' or !$_SESSION['tipo_usu']=='3'){
  5.             header('location:error.php');
  6.         }
  7.         $tipo = '';
  8.         $tipo = $_SESSION['tipo_usu'];
  9.         if ($tipo != 1 or $tipo != 2 or $tipo != 3){
  10.             $titulo = 'Intruso';
  11.         }
  12.         if($tipo == '1'){
  13.             $titulo='Admin';
  14.         }
  15.         if ($tipo == '2'){
  16.             $titulo = 'Cajero/a';
  17.         }
  18.         if ($tipo == '3'){
  19.             $titulo = 'Usuario';
  20.         }
  21.        
  22.     mysqli_close($mysqli); //Ver el item 2 con respecto a esto por favor <====
  23. ?>

Basicamente es normal el codigo, he buscado ponerle algo de seguridad y aun me falta (quiero encriptar los passwords pero eso lo hare luego ).

Tengo el cierre de sesion asi:

Código PHP:
Ver original
  1. <?php
  2. $_SESSION['username']=NULL; //Esto esta bien ??? <===
  3. $_SESSION['tipo_usu']=NULL;   //Esto esta bien ??? <===
  4.  
  5. session_destroy();  //Esto seria redundante ??? <===
  6.  
  7. header("location:../index.php");   
  8. ?>

Y en la mayoria de archivos verifico a los usuarios y privilegios asi:

Código PHP:
Ver original
  1. <?php
  2.     session_start();
  3.     include('c.php');
  4.     if($_SESSION['tipo_usu']=='1' or $_SESSION['tipo_usu']=='2'){
  5.         // Que haga lo que tiene que hacer
  6.        }
  7.    // Si no le pongo un error que dice que no tiene privilegios.
  8.         else {
  9.             header('location:../error.php');
  10.         }
  11. ?>

El problema que me aqueja ahorita son basicamente 2 en 1:

1- Yo estoy aun en localhost y me da la cosa que si inicio sesion en otro sistema de localhost los sistemas se pasan los datos de sesion entre ellos estoy en el sistema 1 sin entrar, entro en el sistema 2 con usuario "juan" entonces en el sistema 1 pongo la ruta del archivo que sigue despues del login y me muestra el usuario juan con titulo intruso (ya que asi lo tengo yo configurado) y viseversa, quisiera saber como solucionar eso o si en un servidor web eso ya no pasaria.

2- Quiero saber si es necesario cerrar la conexión ( mysqli->close() ) en cada proceso ?? segun he leido eso quita "velocidad" al sistema y que para evitarlo debo poner variables globales o sesiones globales pero eso no lo quiero implementar aun, la cosa es cierro la conexion en cada archivo php o lo dejo asi hasta que el cliente de logout ???

En espera de su amable ayuda, espero haberme dado a entender !!!
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.