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

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($result, MYSQL_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
 
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.
 
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.
 
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.

é 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]
 
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?
 
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.
 
Back
Topo