PDA

Ver la Versión Completa : acceso a sistema


andreita
24-04-2008, 16:39:29
Porfavor si alguien sabe como restringir el acceso a usuarios diganme, que necesito hacer un sistema que permita el acceso a alguno usuarios del sistema con su clave........ :)

dec
24-04-2008, 19:11:53
Hola,

Podrías acaso fijarte en los no pocos proyectos de software libre que hay por ahí corriendo el mundo adelante. Desde luego verás que hay muchas formas de hacer lo que precisas, más o menos complejas, más o menos elegantes, más o menos conseguidas, más o menos como necesites. Ahora bien, tal como planteas la cuestión, a mí no se me ocurren sino más preguntas.

¿Piensas usar alguna tabla de alguna base de datos? ¿Tienes alguna idea del manejo con PHP de las sesiones de usuario? ¿Sabes cómo trabajar con Cookies? ¿Hasta qué punto es complejo el sistema que estás preparando? ¿Habrá muchos usuarios? ¿Estos podrán registrarse? ¿Por el contrario serán contados los usuarios y no precisarán de registro, sino que tú mismo les asignaras sus datos de "registro"? ...

roman
24-04-2008, 19:16:20
Crea una tabla usuario en tu base de datos con por lo menos tres campos:


usuario
+----------+-------------------------+
| campo | descripción |
+----------+-------------------------+
| id | llave primaria |
+----------+-------------------------+
| usuario | nombre de usuario |
+----------+-------------------------+
| password | contraseña (encriptada) |
+----------+-------------------------+


Crea una página para iniciar sesión con un formulario para capturar el usuario y su contraseña:


+- Inicio de sesión ------------+ method='post'
| | action='sesion.inicio.php'
| Usuario [ usuario ] |
| |
| Contraseña [ password ] |
| |
+-------------------------------+

[Enviar datos]


Crea un script sesion.inicio.php que reciba los datos del formulario. En este script:



Buscas al usuario en la tabla usuario
Encriptas la contraseña que te dan y la comparas con la que está guardada en la tabla (que debe tener el mismo tipo de encriptación)


Un esbozo del script:


<?php
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// Tomamos los datos del formulario
$usuario = isset($_SERVER['usuario']) ? $_SERVER['usuario'] : '';
$password = isset($_SERVER['password']) ? $_SERVER['password'] : '';

// Evitamos inyección SQL
if (!get_magic_quotes_gpc())
{
$usuario = mysql_real_escape_string($usuario);
}

// Conectamos con el servidor
mysql_connect('host', 'user', 'password') or
die('No ha sido posible conectarse al servidor');

mysql_select_db('base de datos') or
die('No ha sido posible seleccionar la base de datos');

// Buscamos al usuario
$filas = mysql_query("select * from usuario where usuario = '$usuario'") or
die('Ha habido un problema al enviar una consulta a la base de datos');

if (!$fila = mysql_fetch_assoc($filas))
{
die('Nombre de usuario o contraseña incorrecta');
}

// Comparamos las contraseñas (usamos el algoritmo sha1)
if (sha1($password) != $fila['password'])
{
die('Nombre de usuario o contraseña incorrecta');
}

// Iniciamos sesión PHP y guardamos el nombre de usuario
session_start();
$_SESSION['usuario'] = $usuario;

// Vemos si hay que redirigir a alguna página o mandamos a alguna por defecto
$destino =
isset($_SESSION['destino']) ? $_SESSION['destino'] : 'default.php';
unset($_SESSION['destino']);

header("location: $destino");
}
?>


Creas un script sesion.validar.php que deberás incluir (con require o require_once) en cada página a la que quieras restringir el acceso.


<?php
// Iniciamos sesión PHP
session_start();

// Si no hay un usuario registrado, mandamos a la página de inicio
if (!isset($_SESSION['usuario']))
{
// Guardamos la dirección de la página actual para saber a donde redirigir
// una vez que se inicie la sesión en el sistema.
$_SESSION['destino'] = $_SERVER['PHP_SELF'];

header("location: inicio.php");
}
?>



Esta es sólo una idea general y muy básica que deberás adaptar a tus necesidades.

// Saludos

Casimiro Notevi
24-04-2008, 19:41:05
[..]
Esta es sólo una idea general y muy básica que deberás adaptar a tus necesidades.
// Saludos

Sólo ha faltado definir el color de las letras y del fondo... y todo listo :eek:




p.d. Tomo nota para cuando necesite algo así en este lenguaje :)

eduarcol
24-04-2008, 19:50:17
Sólo ha faltado definir el color de las letras y del fondo... y todo listo :eek:




p.d. Tomo nota para cuando necesite algo así en este lenguaje :)

tomas nota del codigo?, o anotas del correo de Roman??, yo prefiero lo segundo :D:D;)

roman
24-04-2008, 19:51:49
Sólo ha faltado definir el color de las letras y del fondo... y todo listo :eek:

Pues no me lo vas a creer, pero estaba preparando el ejemplo con todo y formulario incluyendo su hoja de estilo, pero se me hizo que al final sólo iba a distraer de la idea principal :D

// Saludos

Casimiro Notevi
24-04-2008, 20:10:24
Pues no me lo vas a creer, pero estaba preparando el ejemplo con todo y formulario incluyendo su hoja de estilo, pero se me hizo que al final sólo iba a distraer de la idea principal :D

// Saludos

Me lo creo :)

andreita
24-04-2008, 22:14:14
Gracias Roman voy a probarlo, una pregunta eso sirve para poner usuarios que modifiquen la estructura del sistema tambien? o solo para utilizar el sistema?:)

roman
25-04-2008, 06:20:53
Los scripts que puse son sólo el esqueleto. Si te fijas, ahí no se define nada que haga el "usuario" como no sea el existir. El esquema únicamente verifica que un usuario exista, y restringe el acceso a cada página obligando a pasar por la página de login. Nada más.

El tema es muy amplio y por ello la respuesta de dec fue abierta. A final de cuentas debes responderte a ti misma las preguntas que él formuló:

¿Piensas usar alguna tabla de alguna base de datos? ¿Tienes alguna idea del manejo con PHP de las sesiones de usuario? ¿Sabes cómo trabajar con Cookies? ¿Hasta qué punto es complejo el sistema que estás preparando? ¿Habrá muchos usuarios? ¿Estos podrán registrarse? ¿Por el contrario serán contados los usuarios y no precisarán de registro, sino que tú mismo les asignaras sus datos de "registro"?

En otras palabras, debes primero que nada, hacerte una idea más definida de lo que requieres, y avanzar poco a poco.

// Saludos

andreita
25-04-2008, 15:04:03
Ah ok... bueno si voy a usar una tabla en la base de datos; no conozco sobre las sesiones de usuario ni del manejo de cookies; si van a tener muchos usuarios y se van a registrar.:)

andreita
25-04-2008, 15:09:33
ah se me olvidaba... quisiera que restringa solo el acceso a la pagina principal.. :):D