Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   acceso a sistema (https://www.clubdelphi.com/foros/showthread.php?t=55709)

andreita 24-04-2008 16:39:29

acceso a sistema
 
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

  1. Crea una tabla usuario en tu base de datos con por lo menos tres campos:

    Código:

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

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

    Código:

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

    [Enviar datos]

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

    1. Buscas al usuario en la tabla usuario
    2. 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:

    Código PHP:

    <?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");
    }
    ?>

  4. 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.

    Código PHP:

    <?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

Cita:

Empezado por roman (Mensaje 282333)
[..]
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

Cita:

Empezado por Casimiro Notevi (Mensaje 282345)
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

Cita:

Empezado por Casimiro Notevi (Mensaje 282345)
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

Cita:

Empezado por roman (Mensaje 282350)
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ó:

Cita:

Empezado por dec
¿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

acceso a sistema
 
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

acceso a sistema
 
ah se me olvidaba... quisiera que restringa solo el acceso a la pagina principal.. :):D


La franja horaria es GMT +2. Ahora son las 10:03:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi