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
<?php include('include/c.php'); $user = ''; $pass = ''; $user = $mysqli->real_escape_string($user); $pass = $mysqli->real_escape_string($pass); $sql = $mysqli->query("SELECT * FROM users WHERE nombre='$user' and pass='$pass' "); if($row = $sql->fetch_array(MYSQLI_ASSOC)){ if ($user == $row['nombre'] and $pass == $row['pass']) { $_SESSION['iduser'] = $row['id']; $_SESSION['username'] = $row['nombre']; $_SESSION['tipo_usu'] = $row['tipo']; if(!$_SESSION['tipo_usu']=='0' ){ } else{ } } else{ echo "<script language='JavaScript'>alert('Usuario o Password invalidos !!!'); </script>"; } } else{ echo "<script language='JavaScript'>alert('Usuario o Password invalidos !!!'); </script>"; } } ?>
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
<?php include('include/c.php'); if(!$_SESSION['tipo_usu']=='1' or !$_SESSION['tipo_usu']=='2' or !$_SESSION['tipo_usu']=='3'){ } $tipo = ''; $tipo = $_SESSION['tipo_usu']; if ($tipo != 1 or $tipo != 2 or $tipo != 3){ $titulo = 'Intruso'; } if($tipo == '1'){ $titulo='Admin'; } if ($tipo == '2'){ $titulo = 'Cajero/a'; } if ($tipo == '3'){ $titulo = 'Usuario'; } ?>
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
<?php $_SESSION['username']=NULL; //Esto esta bien ??? <=== $_SESSION['tipo_usu']=NULL; //Esto esta bien ??? <=== ?>
Y en la mayoria de archivos verifico a los usuarios y privilegios asi:
Código PHP:
Ver original
<?php include('c.php'); if($_SESSION['tipo_usu']=='1' or $_SESSION['tipo_usu']=='2'){ // Que haga lo que tiene que hacer } // Si no le pongo un error que dice que no tiene privilegios. else { } ?>
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 !!!