1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[Resolvido] Obrigado | [PHP, mySql] Alguem tem um sistema de login simples

Discussão em 'Web Development' iniciada por R.Vitorino, 16 de Maio de 2008. (Respostas: 18; Visualizações: 7422)

  1. R.Vitorino

    R.Vitorino [email protected] Member

    Por favor, preciso de sistema de login simples em php e mySql. =(
     
    Última edição: 30 de Junho de 2008
  2. SchattenMann

    SchattenMann Power Member

    o mais simples que existe:

    mysql.php

    PHP:
    <?php

    define
    ("BASE_DBCONNECTERROR","Ocorreu um erro na ligação à base de dados. Tente mais tarde ou contacte o programador. Obrigado!");
    define("BASE_DBSELECTERROR","Ocorreu um erro na ligação à tabela da base de dados. Tente mais tarde ou contacte contacte o programador. Obrigado!");



    class 
    database
    {

        var 
    $dbconnect;
        var 
    $query_result;
        var 
    $row = array();
        
        
        function 
    db_connect ($dbhost$dbname$dbuser$dbpasswd)
        {
            
    $this->dbhost $dbhost;
            
    $this->dbuser $dbuser;
            
    $this->dbpasswd $dbpasswd;
            
    $this->dbname $dbname;
            
    $this->dbconnect = @mysql_pconnect($this->dbhost,$this->dbuser,$this->dbpasswd) or die (BASE_DBCONNECTERROR); // Connect to the database
            
            
    if ($this->dbconnect)
            {
                
    $this->dbselect = @mysql_select_db($this->dbname) or die (BASE_DBSELECTERROR); // Select database
            
    }
            
            return 
    $this->dbconnect;
        }


        function 
    db_query ($sql)
        {
            
    // unset($this->$query_result);
            
    $this->query_result = @mysql_query($sql,$this->dbconnect);
            
            return 
    $this->query_result;
        }
        
        
        function 
    db_close ()
        {
            if(
    $this->dbconnect)
            {
                if(
    $this->query_result)
                {
                    @
    mysql_free_result($this->query_result);
                }
                
    $result = @mysql_close($this->dbconnect);
                return 
    $result;
            }
            else
            {
                return 
    false;
            }
        }
        
        
        function 
    db_fetcharray ($result 0)
        {
            if(!
    $result)
            {
                
    $result $this->query_result;
            }
            if(
    $result)
            {
            
    $this->row[$result] = @mysql_fetch_array($resultMYSQL_ASSOC);
            
            return 
    $this->row[$result];
            }
        }


        function 
    db_fetchrow ($result 0)
        {
            if(!
    $result)
            {
                
    $result $this->query_result;
            }
            if(
    $result)
            {
            
    $this->row[$result] = @mysql_fetch_row($result);
            
            return 
    $this->row[$result];
            }
        }

        
        function 
    db_num_rows ($result 0)
        {
            if(!
    $result)
            {
                
    $result $this->query_result;
            }
            if(
    $result)
            {
            
    $this->row[$result] = @mysql_num_rows($result);
            
            return 
    $this->row[$result];
            }
        }
    }

    ?>
    vars.php

    PHP:
    <?php
    /* definição das variavaies */

    /* base de dados mysql*/
        
    $dbuser='dbuser';
        
    $dbpasswd='dbpasswd';
        
    $dbhost='localhost';
        
    $dbname='dbname';
        

    ?>
    login.php

    PHP:
    <?
    session_start();

    require_once(
    "data/vars.php");
    require_once(
    "data/mysql.php");


    $post_username $_POST['username'];
    $post_password md5($_POST['password']);

    $db = new database();
    $db->db_connect($dbhost$dbname$dbuser$dbpasswd);

    $sql_user "SELECT username, password, id_membro FROM equipa WHERE username='$post_username'";
    $result_user $db->db_query($sql_user);

    if(!
    $result_user)
    {
        die (
    "erro de query sql");
    }

    while (
    $row mysql_fetch_array($result_user))
    {
    $username $row['username'];
    $passwd $row['password'];
    $_SESSION["id_user"] = $row['id_membro'];
    }

    if ((
    $username == $post_username) && ($passwd == $post_password))
    {
        
    session_start();
            
    $_SESSION["login"] = true;
        
    Header("Location: main.php");
        die();
    }
    else
    {
        
    $_SESSION['login_error'] = "Ja introduzias os dados correctamente...";
            
    $_SESSION["login"] = false;
        
    Header("Location: index.php");
        die();
    }

    ?>
    logout.php

    PHP:
    <?
    session_start();

        
    $_SESSION["login"] = false;
        
    Header("Location: index.php");
        die();

    ?>
    session_start.php

    PHP:
    <?
    session_start();
    if (!
    $_SESSION['login'])
    {
            include(
    "error.html");
        die ();
    }
    ?>
    depois basta incluir na 1ª linha de todos os *.php
    PHP:
    <?php include ("session_start.php"?>
    e voilá...

    de referir que como podes ver o sistema funciona com base em var e nao cookies...se quiseres de cookie avisa

    cumps
     
  3. hostmake

    hostmake Power Member

    Tem que ser com MySQL?
    É que existem métodos mais práticos se não for obrigatório, e passo a mostrar:

    PHP:
    <?
    //Se o USER nao está definido
      
    if (!isset($_SERVER['PHP_AUTH_USER'])) {
    //Mostrar Janela Prompt (Aquelas que voçês vêem nos Sites Porno :P)

        
    header('WWW-Authenticate: Basic realm="Area Protegida do MeuSite"');
        
    header('HTTP/1.0 401 Unauthorized');

    //Comandos a executar, caso o utilizador pressione 'Cancel' nessa janela

        
    echo 'Carregaste Cancelar?!?! Tens que fazer login se queres ver estas morenas..';
    //Parar o prompt
        
    exit;

    //Se o USER estiver definido e for = "joaquim" e a password = "maria"
    //Mudar em baixo, para outro user\password.
    } else if ( (($_SERVER['PHP_AUTH_USER']) === "joaquim") AND ($_SERVER['PHP_AUTH_PW']) === "maria") {
    //Comandos a executar, caso os dados acima estejam correctos

        
    echo "Ola {$_SERVER['PHP_AUTH_USER']}, bem-vindo ao meu site privado :D";
      }
    ?>
    Ok, e em todos os ficheiros:

    PHP:
    <?php require_once 'proteger.php'?>
    Só funciona neste momento com 'joaquim' como user, e 'maria' como pass, mas podes criar um array e definir , ou criar uma tabela com user,password e já metes o MySQL à mistura.
     
  4. SchattenMann

    SchattenMann Power Member

    hostmake, nao sei se leste o meu post mais foi mais ou menos isso que eu fiz...:/
     
  5. hostmake

    hostmake Power Member

    Http_auth != Sessions
     
  6. SchattenMann

    SchattenMann Power Member

    yah ok sry...mas a "logica" e a mesma
     
  7. metralha761

    metralha761 1st Folding then Sex

    Entre essas duas, qual a mais aconselhada?
     
  8. MPalhas

    MPalhas Power Member

    se é para usar mysql, com uma base de dados para os utilizadores, é a primeira. se não a segunda
     
  9. R.Vitorino

    R.Vitorino [email protected] Member

    Fico muito, mas mesmo muito agradecido =D Obrigado!
     
  10. The Dealer

    The Dealer Power Member

    Desculpem-me, mas qual é a linha que liga à nossa base de dados propriamente dita?

    (Por exemplo, eu no ODBC tenho a ligação feita para a Base de dados que criei, Gest.
     
  11. Frango.

    Frango. Power Member

    PHP:
        function db_connect ($dbhost$dbname$dbuser$dbpasswd)
    (Não tenho total certeza :))
     
  12. tonebiclas

    tonebiclas Power Member

    é esta

    Código:
    [COLOR=#000000][COLOR=#007700][/COLOR][COLOR=#0000BB]$this[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000BB]dbconnect [/COLOR][COLOR=#007700]= @[/COLOR][COLOR=#0000BB]mysql_pconnect[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000BB]$this[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000BB]dbhost[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]$this[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000BB]dbuser[/COLOR][COLOR=#007700],[/COLOR][COLOR=#0000BB]$this[/COLOR][COLOR=#007700]->[/COLOR][COLOR=#0000BB]dbpasswd[/COLOR][COLOR=#007700]) or die ([/COLOR][COLOR=#0000BB]BASE_DBCONNECTERROR[/COLOR][COLOR=#007700]); [/COLOR][COLOR=#FF8000]// Connect to the database[/COLOR][/COLOR]
    
     
  13. The Dealer

    The Dealer Power Member

    Mas a minha questão é: esse código que aí está, não produz qualquer interface (nenhum botão textfield ou etc.

    Como é que eu adapto esse código a dois textfields (user e password) e botão de submit?
     
  14. MadOnion

    MadOnion Folding Member

    Hás-de ter um form, com action="login.php" e o method="POST", pois as variáveis são passadas por POST ao carregares no submit.

    Há milhentos exemplos na net.
     
  15. The Dealer

    The Dealer Power Member

    tens razão já encontrei bastante informação. My mistake.
     
  16. ieLED

    ieLED Banido

    Esse codigo que tens/fizes-te é seguro? SQL injection...etc
     
  17. Morphine0225

    Morphine0225 Power Member

    Também estou com esta dúvida. Alguém pode dar uma ajuda?
     
  18. SchattenMann

    SchattenMann Power Member

    seguro é relativo...

    o melhor que um gajo pode fazer é ter https e usar
    mysql_real_escape_string()
     
  19. The Dealer

    The Dealer Power Member


    Não se perde também se usarem procedimentos para evitar ter query's directamente no código.
     

Partilhar esta Página