Jump to content


Photo

Sistema De Login Usando Sessions E Mysql


  • Faça o login para participar
102 replies to this topic

#1 Chinello Cybernético

Chinello Cybernético

    Simplesmente "Chinello"

  • Usuários
  • 1892 posts
  • Sexo:Masculino
  • Localidade:Canoas - RS

Posted 01/08/2003, 05:28

Bom pessoal..

Estava precisando de um sistema de login, e como naum haviam sistemas bons e confiáveis de login usando MySQL na Net, eu resolví estudar um pouco e fazer o meu próprio..

Ficou bom, e de acordo com os meus conhecimentos, sem falhas de segurança..

Bom vamos lá, execute isso no seu banco de dados MySQL:

CREATE TABLE `Sis_login` (
  `id` int(3) NOT NULL auto_increment,
  `login` varchar(8) default NULL,
  `senha` varchar(8) default NULL,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM AUTO_INCREMENT=3 ;
Depois faça a página: login.php
PHP
<?
session_name
("MeuLogin");
session_start();
session_destroy();

if(
$_GET['login'] == "falhou") {
    print $_GET['causa'];
}
?>
<form name="form1" method="post" action="loga.php?acao=logar">
Login: <input type="text" name="nome"><BR>
Senha: <input type="password" name="pwd"><BR>
<input type="submit">
</form>

Depois a página: loga.php
PHP
<?
session_name
("MeuLogin");
session_start();

if(
$_GET['acao'] == "logar") {
    $conn = mysql_connect("localhost","user","senha"); //configure os dados do seu MySQL
    $banco = mysql_select_db("SEU_BANCO"); //coloque o nome do seu banco de dados
   
    $nome
= $_POST['nome'];
    $q_user = mysql_query("SELECT * FROM Sis_login WHERE login='$nome'");

    if(mysql_num_rows($q_user) == 1) {
   
        $query
= mysql_query("SELECT * FROM Sis_login WHERE login='$nome'");
        $dados = mysql_fetch_array($query);
        if($_POST['pwd'] == $dados['senha']) {
            session_register("nome");
            header("Location: page.php");
            exit;
        } else {
            header("Location: login.php?login=falhou&causa=".urlencode('Senha Errada'));
            exit;
        }
    } else {
        header("Location: login.php?login=falhou&causa=".urlencode('User Inválido'));
        exit;
    }
}

//agora a parte que verifica se o login já foi feito
if(session_is_registered("nome") == false) {
    header("Location: login.php");
}
?>

Pronto, o principal já tá feito..

Bom pessoal, como pedido, eu to acrescentando no script, uma página para acrescentar usuários, creio q isso facilita aos q ainda não tem intimidade com a interface do MySQL..

Vamos lá, crie uma página com um nome qualquer, exemplo: new_users.php, e coloque esse código nela:
PHP

<?
if($_GET['act']=="gravar") {
  $conn = mysql_connect("localhost","user","senha");
  $banco = mysql_select_db("SEU_BANCO");

  mysql_query("INSERT INTO Sis_login (id, login, senha)
  VALUES (NULL, '
{$_POST['nuser']}', '{$_POST['senha']}')");

  print "<center>Usuário criado com sucesso!</center>";
} else {
?>
<form name="newuser" method="post" action="?act=gravar">
User: <input type="text" name="nuser" maxlength=8><BR>
Senha: <input type="password" name="senha" maxlength=8><BR><BR>
<input type="submit" value="Enviar!">
</form>
<?
}
?>

As páginas seguintes são só um complemento para mostrar o funcionamento do script:

page.php
PHP
<?
require("loga.php");
?>
Olá <B><? print $_SESSION["nome"]; ?></B>,<BR>
Aqui vem qualquer coisa, inclusive um link para outras páginas.<BR><BR>
<a href="page2.php">Link</a>

page2.php
PHP
<?
require("loga.php");
?>
Olá <B><? print $_SESSION["nome"]; ?></B>,<BR>
Aqui tb diz que está logado direitinho

Como visto acima, para restringir o acesso às páginas, é só vc acrescentar isso nas primeiras linhas da page:
PHP
<?
require("loga.php");
?>

E já era, todas as páginas que estiverem isso estarão protegidas.. Caso o login naum tenha sido feito, elas redirecionarão para a página que se faz o login..

Bom espero que tenham gostado, e que seja de bom proveito a todos.. ;)

Ps.: Testem esse script de preferência num servidor Linux, pois aqui mesmo no meu PC rodando Win, ele naum funfa.. ;)

Fui.. :P

Edição feita por: Chinello Cybernético, 16/07/2004, 05:35.

Diego Sampaio - kroW - PHP Framework > http://chinelloweb.net/
chinello at gmail dot com

System > Athlon 64 3200+ Mobile | Kubuntu 7.04 Fesity Fawn AMD64 | Kernel 2.6.20-16
Coding @ KDE 3.5.7 | PHP 5.2.1 | Apache 2.2.3 | MySQL 5.0.38

#2 Gleigston

Gleigston

    Gleigston Souza

  • Usuários
  • 245 posts
  • Sexo:Não informado
  • Localidade:não tenho
  • Interesses:Faço sites, contate me, por e-mail<br />gleigston@ig.com.br

Posted 01/08/2003, 05:52

vc tem zipado ou seila..... pq assimeu não intendo
MSN: gleigston@hotmail.com
OrKut:
AcESsAR?

#3 Chinello Cybernético

Chinello Cybernético

    Simplesmente "Chinello"

  • Usuários
  • 1892 posts
  • Sexo:Masculino
  • Localidade:Canoas - RS

Posted 01/08/2003, 18:07

Ué véio..

Tem alí o nome dos arquivos e dentro dos QUOTE o conteúdo de cada um..

Só isso..

Fui.. :P
Diego Sampaio - kroW - PHP Framework > http://chinelloweb.net/
chinello at gmail dot com

System > Athlon 64 3200+ Mobile | Kubuntu 7.04 Fesity Fawn AMD64 | Kernel 2.6.20-16
Coding @ KDE 3.5.7 | PHP 5.2.1 | Apache 2.2.3 | MySQL 5.0.38

#4 Marfioso

Marfioso

    ... Minha Vida ...

  • Banidos
  • PipPipPip
  • 271 posts
  • Sexo:Não informado
  • Localidade:Maceió - Alagoas

Posted 04/08/2003, 14:55

só lembrando... pro arquivo loga.php funfar, vc tem q por desse jeito:

<?
session_name("promocao");
session_start();

if($acao == "logar") {
   $conn = mysql_connect("localhost","user","senha"); //configure os dados do seu MySQL
   $banco = mysql_select_db("SEU_BANCO"); //coloque o nome do seu banco de dados
   
   $nome = $_POST['nome'];
   $q_user = mysql_query("SELECT * FROM Sis_login WHERE login='$nome'");

   if(mysql_num_rows($q_user) == 1) {
   
       $query = mysql_query("SELECT * FROM Sis_login WHERE login='$nome'");
       $dados = mysql_fetch_array($query);
       if($_POST['pwd'] == $dados['senha']) {
           session_register("nome");
           header("Location: page.php");
           exit;
       } else {
           header("Location: login.php?login=falhou&causa=".urlencode('Senha Errada'));
           exit;
       }
   } else {
       header("Location: login.php?login=falhou&causa=".urlencode('User Inválido'));
       exit;
   }
}

//agora a parte que verifica se o login já foi feito
if(!session_is_registered("nome")) {
   header("Location: login.php");
}
?>


· Marfioso
· Membro WMONLINE
| Regras do Fórum · Warn System
· Não faça perguntas por MP ou E-Mail. Elas só ajudam a você
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
"Sem saber que era possivél, ele foi lá e fez"

#5 Chinello Cybernético

Chinello Cybernético

    Simplesmente "Chinello"

  • Usuários
  • 1892 posts
  • Sexo:Masculino
  • Localidade:Canoas - RS

Posted 07/08/2003, 00:25

Ow sorry..

Realmente.. Tinha esse erro.. Grato..

Tipo: é que aqui no PC eu uso um arquivo separado para fazer a conexão, aí para deixar mais simples, até para entender, eu tirei o require para chamar esse arquivo e coloquei uma conexão manual.. Aí ocorreu este erro de sair um "n" a menos..

Mas valew..

Fui.. :P
Diego Sampaio - kroW - PHP Framework > http://chinelloweb.net/
chinello at gmail dot com

System > Athlon 64 3200+ Mobile | Kubuntu 7.04 Fesity Fawn AMD64 | Kernel 2.6.20-16
Coding @ KDE 3.5.7 | PHP 5.2.1 | Apache 2.2.3 | MySQL 5.0.38

#6 vrsbueno

vrsbueno

    Ativo

  • Usuários
  • 351 posts
  • Sexo:Não informado
  • Localidade:Taubaté-SP

Posted 09/08/2003, 17:07

chinelo, qual a diferença do seu cadastro pra esse http://forum.wmonlin...ST&f=29&t=24144 que já é mor conhecido pela galera???

é q esse q eu pessei o endereço, precisa ter o "register_globlas=on" ativado no php.ini... mas naum tá... e meu server é demorado no suporte... intaum vai esse link pra me ajudarem--> http://forum.wmonlin...ST&f=78&t=29863


aguardo a resposta para as minhas 2 dúvidas...

#7 Chinello Cybernético

Chinello Cybernético

    Simplesmente "Chinello"

  • Usuários
  • 1892 posts
  • Sexo:Masculino
  • Localidade:Canoas - RS

Posted 09/08/2003, 18:24

Bom véio..

O tuto desse tópico aí utiliza cookies.. O meu utiliza sessions..

hehe.. Eu lembro que quando postei o meu tuto neim sabia desse daí, aí achei que ía ser o único sistema de login usando MySQL.. hehe.. Por isso postei, senaum neim ía postar..

Voltando.. Eu naum sei se esse meu script funfa com o Register_globals off.. Mas tenta, eu naum posso tentar, pois aqui no meu PC neim funfa esse código, e no meu servidor naum tenho acesso ao php.ini ..

Intaum tente aí, se der certo, blz.. :D

Fui.. :P
Diego Sampaio - kroW - PHP Framework > http://chinelloweb.net/
chinello at gmail dot com

System > Athlon 64 3200+ Mobile | Kubuntu 7.04 Fesity Fawn AMD64 | Kernel 2.6.20-16
Coding @ KDE 3.5.7 | PHP 5.2.1 | Apache 2.2.3 | MySQL 5.0.38

#8 vrsbueno

vrsbueno

    Ativo

  • Usuários
  • 351 posts
  • Sexo:Não informado
  • Localidade:Taubaté-SP

Posted 11/08/2003, 13:36

mas esse naum tem como se cadastrar?
como que faz para se cadastrar?

#9 Marfioso

Marfioso

    ... Minha Vida ...

  • Banidos
  • PipPipPip
  • 271 posts
  • Sexo:Não informado
  • Localidade:Maceió - Alagoas

Posted 11/08/2003, 14:26

mas esse naum tem como se cadastrar?
como que faz para se cadastrar?

hehehe, eu fiz um INSERT, quer q eu te passe o código?
· Marfioso
· Membro WMONLINE
| Regras do Fórum · Warn System
· Não faça perguntas por MP ou E-Mail. Elas só ajudam a você
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
"Sem saber que era possivél, ele foi lá e fez"

#10 Chinello no Curso

Chinello no Curso
  • Visitantes

Posted 11/08/2003, 15:54

mas esse naum tem como se cadastrar?
como que faz para se cadastrar?

Véio, assim que eu tiver tempo eu faço um sistema completo com cadastramento de novos usuário e manutenção dos mesmos..

Mas agora naum dá que eu to sem tempo.. Tenho que resolver vários bagulho e ver seu eu faço o livro de visitas, pois eu tb quero participar do contest.. :D

Falow.. :P

#11 luiz000

luiz000

    Expert

  • Banidos
  • PipPipPipPipPipPip
  • 530 posts
  • Sexo:Não informado

Posted 18/10/2003, 16:10

ei chinelo (nick interessante)
eu tenho site no kit.net, eu poderia colocar esse sistema num outro host e colocar as paginas protegidas no kit.net??????
me fale mais sobre esse banco de dados My SQL pois eu nao entendo absolutamente nd disso, me fla como criar e etc...

#12 Spellcaster

Spellcaster

    Aewww Galega!!!!

  • Usuários
  • 209 posts
  • Sexo:Não informado
  • Localidade:minha casa
  • Interesses:quase tudo, como são muitos to cum preguiça de digita

Posted 18/10/2003, 17:14

acho q naum pq todas as paginas tem o "require". E alem do mais o script usa sessions e elas são gravadas no servidor ou passadas pela url, tem q estar tudo no memo server.

acho que é isso.....
mas tenta usar um SSI qm sabe num dah certo...
^____^"

#13 luiz000

luiz000

    Expert

  • Banidos
  • PipPipPipPipPipPip
  • 530 posts
  • Sexo:Não informado

Posted 18/10/2003, 19:43

gente me expliquem sobre esse banco de dados My SQL,
como cria, pra q serve, como sonfigura, nao sei nd

#14 luiz000

luiz000

    Expert

  • Banidos
  • PipPipPipPipPipPip
  • 530 posts
  • Sexo:Não informado

Posted 18/10/2003, 22:49

bom chinelo como foi vc qe criou esse sistema vc deve saber melhor que qualquer um como criar um banco de dados que funcione com esses codigos,
me ensina ae, meu icq é 156484153, melhor falar pelo icq, pq eu to cheinho de duvidas e pelo forum seria muito dificil falar.
flow

#15 Mandrake

Mandrake

    Normal

  • Usuários
  • 80 posts
  • Sexo:Não informado

Posted 30/10/2003, 14:29

E aí, Chinelo? Tudo bom? Cara, adorei seu script. Serviu muito de tutorial para eu aprender a mexer com sessions! Mas ainda tenho uma dúvida: como faço pro usuário fazer um "logout"? Espero que você possa me ajudar! Abraços..
"O cadáver é que é o produto final. Nós somos apenas a matéria-prima." Millôr Fernandes




1 user(s) are reading this topic

0 membro(s), 1 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq