Dica Do Tuguinho

Nunca mandes ninguem que odeias para o inferno. Quando morreres, vais estar com eles por lá.

- Tuguinho


Hoje vamos aprender a fazer uma coisa que pode ser preciso para muita gente, um simples script com a função de registo e entrada/saída com uma conta de utilizador.
Isto pode ser difícil para iniciantes, por isso aconselho a saberem as bases de php e mysql…

1. Comecemos por criar a base de dados, vai ao phpMyAdmin, e colas o que esta em baixo na aba SQL.

[enlighter lang=”sql”]
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) unsigned NOT NULL auto_increment,
`username` varchar(25) NOT NULL,
`email` varchar(100) NOT NULL,
`password` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM
[/enlighter]

2. Agora vamos fazer ligação à base de dados em php.
config.php :

[enlighter lang=”php”]

[/enlighter]

3. Vamos agora fazer a página de login.
login.html :

[enlighter lang=”html”]






[/enlighter]

4. Vamos agora para a página de registo.
registar.php :

[enlighter lang=”php”]







“;
} else {
$pass = sha1($_POST[‘password’]);
$user = mysql_real_escape_string($_POST[‘username’]);
$email = $_POST[‘email’];
mysql_query(“INSERT INTO users (id, username, email, password) VALUES (NULL, ‘$user’, ‘$email’, ‘$pass’)”) or die(“Alguma coisa correu mal durante o registo. MySQL erro: “.mysql_error());
echo “Registo Completo – Entrar na Conta.”;
}
?>
[/enlighter]

5. Vamos criar as configurações para que o user possa entrar
entra.php :

[enlighter lang=”php”]

[/enlighter]

6. Vamos agora criar uma pagina segura, só entra quem estiver logado.
users.php :

[enlighter lang=”php”]

//Pode meter aqui conteúdo em html 😉


[/enlighter]

7. Agora para acabar, vamos criar a página de logout da conta
logout.php :

[enlighter lang=”php”]

[/enlighter]

Espero ter ajudado alguns 😉

cumps,
ORiOn

  • Partilhar

Sou o criador do LibertyTuga e também um rapazinho de 24 anos, iniciante em web-development e web-design. Podes me seguir no Twitter ou entrar em contacto comigo no msn ou por email.

Com um total de 942 posts.

59 Comentários

  1. MiguelR
    25 de Julho de 2009 ás 19:38

    Este sistema de registo, login, etc em PHP era mesmo o que eu estava a precisar para um projecto que estou a desenvolver.

    Gostava de ver mais scripts deste género aqui no blog e mais pessoas interessadas neste assunto 🙂

    Obrigado e continuação de um bom trabalho []

  2. Enato
    14 de Dezembro de 2009 ás 17:31

    Boas..

    Com a ajuda já consegui criar o registo, mas quando vai para o login ele redimensiona para a página session.php e não tenho essa página.. O que esta a acontecer? :S

  3. 14 de Dezembro de 2009 ás 18:10

    @Enato: No entra.php modifica a linha header(“location: session.php”); para header(“location: users.php”);

  4. Enato
    14 de Dezembro de 2009 ás 22:31

    Depois de ter comentado lá pensei um pouco e fiz isso xD

    Já agora para ter acesso restrito a uma só pessoa como por exemplo um admin para o backoffice pode-me ajudar??

    Estou a fazer uma PAP e o meu tema é um loja para um videoclube e nós PHP quase não demos nada de maneira a que estou um pouco a leste :S

    Obrigado pela ajuda imediata 😉

  5. 15 de Dezembro de 2009 ás 15:42

    @Enato: Como assim? Para isso vasta registar apenas um utilizador.

  6. Enato
    15 de Dezembro de 2009 ás 19:35

    Basicamente queria fazer algo como quando o admin fizer login ia para o backoffice.. Penso que tenha de ser através de if não?

    Ainda não sei muito bem como fazer o backoffice

  7. 15 de Dezembro de 2009 ás 19:45

    @Enato: Isso já é praticamente um backoffice.

    Mas queres o quê? Um apenas para o admin? Para isso vasta registares só um user, ou então mudar, e muito, o script para que se for um admin, ir para outra pagina.

    Tens de criar outra row na database para dizer se é admin ou user, ou outros roles se quiseres. Depois no PHP, um if para ver se é admin, se for, redireccionas para outra pagina.

  8. Paulo Paixão
    18 de Dezembro de 2009 ás 12:20

    Ainda bem que os tópicos são recentes, é o seguinte, eu percebo minimamente de php, mas este está-me a dar dores de cabeça, estou a criar um site para uma discoteca, e quero que só possam ter acesso á galeria as pessoas que estão registadas e devidamente logadas, o site é inteiramente em html. ajuda??

  9. 21 de Dezembro de 2009 ás 16:38

    @Paulo Paixão: A estensão dos ficheiros está em .html ou .php?

  10. Paulo Paixão
    21 de Dezembro de 2009 ás 19:30

    os das paginas sao html, e estou com dificuldades em definir o sistema de login que aqui tens :S

  11. 21 de Dezembro de 2009 ás 21:26

    @Paulo Paixão: Os ficheiros tem de estar em nome-do-finheiro.php para poderes usar php.

    Tens de ter a extenção .php

  12. Paulo Paixão
    21 de Dezembro de 2009 ás 23:50

    em todos as paginas ?

  13. Paulo Paixão
    21 de Dezembro de 2009 ás 23:51

    mas se tiver a php nao consigo visualizar no browser 😡

  14. 22 de Dezembro de 2009 ás 0:00

    @Paulo Paixão: sim penso que são todas as páginas… para teres uma definição padrão…

  15. Paulo Paixão
    22 de Dezembro de 2009 ás 3:43

    bah :s vou ter de mudar o site todo, mas tenham como exemplo este site, será que basta mudar as extensoes de html para php ?

  16. 22 de Dezembro de 2009 ás 12:14

    @Paulo Paixão: penso que dá, afinal os códigos são os mesmos… mas não seii.. e melhor esperares pelo OriOn xD

  17. Paulo Paixão
    22 de Dezembro de 2009 ás 12:26

    :S tou lixado

  18. 22 de Dezembro de 2009 ás 18:57

    @Paulo Paixão: tás nada.. lol espera pelo OriOn

  19. 24 de Dezembro de 2009 ás 12:11

    PHP é server side. Só funciona se enviares para um servidor com apache/php intalado, e neste caso tambem precisas de de uma base de dados sql.

  20. PauloPaixao
    25 de Dezembro de 2009 ás 16:56

    sera mesmo necessario as paginas que suportam os forms estarem tambem em php ?

  21. Entao
    25 de Janeiro de 2010 ás 16:13

    Bem aqui venho eu outra vez passado um tempo xD

    Orion poderias dar uma ajuda again?
    Queria fazer algo do tipo quando o user fizesse o login no index.php (uma pagina ja com css definidos e tal) o que aconteceria era ir para a mesma página mas desta vez desaparecendo a caixa de login e aparecer algo do tipo “bem vindo, userx”

    podes ajudar?
    cumps

  22. 25 de Janeiro de 2010 ás 17:38

    Crias o ficheiro index.php e colas o código que tem aqui:
    http://tinypaste.com/75018c

    E na pagina entrar.php mudas onde tem users.php para index.php.

  23. 25 de Janeiro de 2010 ás 21:38

    Boas,

    podias fazer mais tutos de como fazer so os utilizadores registados verem x paginas, adicionar previlegios, etc..

    afinal, o que vale registar num site se nao se vai ter previlegios?

  24. Entao
    26 de Janeiro de 2010 ás 10:53

    obrigado ajudou imenso 🙂

    Já consegui depois meter lá um botão para fazer logout 😀

    Btw se um user (admin ( so vou ter um admin, que se vai chamar admin xD) ) entrar e quiser ter lá um link para depois ir para o backoffice é só criar algo do género?

    if($session->isAdmin()){
    echo “Admin Center   //  “;

  25. 26 de Janeiro de 2010 ás 15:00

    De nada, vai prai modificando e tentando que é assim que se aprende. Tenta assim:

    if(isset($_SESSION[“sessioname”])){
    echo “Amin Center”
    }

  26. noob
    1 de Fevereiro de 2010 ás 21:06

    peço desculpa de vir incomodar, mas eu sou um pouco noob em php o que sei foi o que fui lendo por ai e tentei testar esse script mas dá me um erro:

    Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’ (2) stats

    será que alguem me pode ajudar?

    Desde já obrigado

  27. 1 de Fevereiro de 2010 ás 21:35

    @noob: Tens os dados no código php todos correctos e a base de dados criada?

  28. noob
    2 de Fevereiro de 2010 ás 19:17

    sim eu ja verifiquei isso tudo, não estou mesmo a perceber porque que dá esse erro :s

  29. 2 de Fevereiro de 2010 ás 19:49

    Entra em contacto com o teu servidor a perguntar se é localhost.

  30. Silva
    12 de Fevereiro de 2010 ás 11:51

    Boas, nao tou a conseguir passar do login, tipo faço o registo e tudo mas quando faço o login diz sempre Dados Errados, tente de novo. ta ai a parte do ENTRA.PHP se poder ajudar agradecia 😀

  31. Peter
    15 de Fevereiro de 2010 ás 21:54

    Boas. Muito bom. Depois de “patinar” um pouco, já que não sou expert em php, consegui aplicar este conceito, inclusivé com algumas alterações, como por exemplo o não aceitar users ou mails repetidos… Muito obrigado Orion !!! 😀

  32. DPROGRAMADOR
    3 de Março de 2010 ás 18:38

    O MEU PROBLEMA É MTO SIMPLES, MAIS É GRAVE, GOSTAVA Q O ORION VISSE ESSE CODIGO, PERTENÇE AO FICHEIRO REGISTO.PHP DE UM WEB SITE NA QUAL O TEMA É LOJA ONLINE,

    COMO VIU O CODIGO SERVER PARA UM CLIENTE FAZER O REGISTO NO SITE, MAIS AO FAZER O REGISTO A PASSWORD NÃO É CIFRADA, O QUE EU QUERIA ERA Q ALTERASSE O CODIGO COM A FUNÇÃO ( SHA1 ) DE MANEIRA A QUE O CLIENTE FIZESSE O REGISTO E A PASSWORD ENTRAVA NA BASE DE DADOS JÁ CIFRADA, QUERIA PEDIR MAIS UMA COISA, AGRADEÇIA TAMBEM SE MUDASSE A PARTE DA PASS, O CLIENTE TEM Q INTTRODUZIR A PASS 2 VEZES, SE UMA NÃO FOR IGUAL A OUTRA, TEM Q VOLTAR A PO-LAS. DESDE JÁ OBRIGADO. MTO BGADO.

  33. DPROGRAMADOR
    3 de Março de 2010 ás 18:40
  34. 3 de Março de 2010 ás 20:16

    @DPROGRAMADOR: Primeiro pedia para por favor não escrever em maiúsculas porque aqui ninguém é cego!

    E segundo, não o posso ajudar porque não tenho tempo. E nem se vê o código porque não é permitido php nos comentários.

    Cumprimentos

  35. 6 de Março de 2010 ás 19:46

    @DPROGRAMADOR:

    Faz download de um sistema já pronto, é mais fácil 😉

  36. ddik
    14 de Março de 2010 ás 20:19

    A mi da me este erro:
    Fatal error: require_once() [function.require]: Failed opening required ‘/config.php’ (include_path=’.:/usr/share/pear:/usr/share/php’) in /home/vhosts/vilasims.noads.biz/entra.php on line 2

    O que devo fazer para resolver
    da em todo ;-(

  37. ddik
    18 de Março de 2010 ás 21:37

    já esta resolvido

  38. DPROGRAMADOR
    25 de Março de 2010 ás 16:57

    Para Orion, então agradeçia que mandasse um link com para download de um sistema ja feito. abraços.

  39. Paulo
    24 de Junho de 2010 ás 20:06

    A mim dá-me sempre o mesmo erro que o login esta incorrecto

    alguem com o mesmo problema? como resolveu?

  40. 24 de Junho de 2010 ás 21:26

    @Paulo: Pode ser estúpido, mas estás a meter a password certa? Se sim, já tentaste criar outro usuário?

  41. 24 de Junho de 2010 ás 22:02

    É com o ficheiro users.php, que se pode fazer isto com várias páginas?

  42. 24 de Junho de 2010 ás 22:07

    @João Godinho: Só precisas de copiar essa pagina e criar novas editando o que quiseres. 🙂

  43. Paulo
    25 de Junho de 2010 ás 10:04

    sim estou a meter o user correcto, já criei outro user 🙂

  44. Paulo
    25 de Junho de 2010 ás 10:09

    o erro que me dá é “Dados Errados, tente de novo”

    podem ver aqui http://ncinfo.com.pt/gamelist/index.php

    user: paulo
    pass: paulo

  45. 25 de Junho de 2010 ás 12:22

    @Paulo: Tenta copiar tudo de novo sem modificar nada a não ser os dados da database(nome, user, pass).

  46. Paulo
    25 de Junho de 2010 ás 13:06

    continua a dar erro….não consigo perceber porquê.

  47. 25 de Junho de 2010 ás 13:24

    @Paulo: Ou estas a fazer algo mal, ou é do teu site ou alojamento(duvido, mas nunca se sabe). Não sei. :/

  48. 29 de Dezembro de 2010 ás 1:01

    Tava a desesperar quando encontrei este script e parece-me mesmo muito bom fartei-me de procurar e encontrei este que ta bem bom tudo funciona. MAS…

    Depois do registo quando pede para entrar ja depois do login quando vai para (entra.php) da-me o seguinte erro:

    Warning: session_start() [function.session-start]: Cannot send session cache limiter – headers already sent (output started at /home/interalo/public_html/registar/config.php:5) in /home/interalo/public_html/registar/entra.php on line 7

    Warning: Cannot modify header information – headers already sent by (output started at /home/interalo/public_html/registar/config.php:5) in /home/interalo/public_html/registar/entra.php on line 8

    Warning: Cannot modify header information – headers already sent by (output started at /home/interalo/public_html/registar/config.php:5) in /home/interalo/public_html/registar/entra.php on line 10

    Será que me podem ajudar? eu era bem grato..

  49. Nuno
    14 de Agosto de 2011 ás 14:22

    Boa tarde, antes de mais aproveito para agradecer a informação disponibilizada.

    Tenho algumas questões.

    É o seguinte, quando efectuo o login com a senha errada por exemplo, aparece a msg que deve aparecer tal como está programado, a questão é que a mensagem aparece numa pagina em branco e no canto superior esquerdo, não aparece na página que eu quero, com a cor que eu quero e dentro do quadro que eu quero.

    Alguem me pode ajudar?

  50. Felipe
    15 de Setembro de 2011 ás 22:35

    Está funcionando perfeitamente, me serviu muito bem esse sistema de login e logout.

    Obrigado.

  51. João Vitor Sell
    22 de Abril de 2012 ás 4:48

    Olá, sera que você podaria postar um tutorial parecido com este, porem que utilize um sistema de level’s, como por exemplo membro, postador, administrador entre outros e dependente do level direcionar para tau pagina.
    Aguardo resposta.

  52. joao
    3 de Março de 2013 ás 19:27

    onde está o register.php do action to script registar.php

  53. 13 de Novembro de 2013 ás 11:43

    Boas pessoal,
    Copiei o código que ai está e ponto numero um não tem index, já criei um index. ponto numero dois, só faz o login não faz o registo, como é que eu ponho no index para fazer o registo e o login?
    Obrigado 🙂

  54. Cristian
    27 de Janeiro de 2014 ás 12:56

    Olá, gostaria de tirar uma dúvida. Vi que o conteúdo da minha página html deve ficar no arquivo users.php, mas como fica se tenho várias páginas em html? Obrigado!!

  55. Hugo
    5 de Março de 2014 ás 22:18

    Boa noite,

    Quando efectuo o registo eu pede a página register.php que não existe?
    Fiz algo errado?

    Cumps

  56. David Lucas
    22 de Julho de 2014 ás 17:06

    Boa tarde,

    Queria que quando o user se cadastra-se ele pode-se por uma foto de perfil,
    tentei montar o codigo mas ta dando muitos erros
    por favor me da uma luz. Obrg

  57. Fernanda
    28 de Julho de 2014 ás 13:45

    Fiz tudo como está aí, mas quando vou fazer o login diz que os dados enta errados. Ainda não encontrei nenhum erro! Help-me ? :/

  58. Fernanda
    28 de Julho de 2014 ás 13:45

    Fiz tudo como está aí, mas quando vou fazer o login diz que os dados estão* errados. Ainda não encontrei nenhum erro! Help-me ? :/

  59. Rafael
    31 de Maio de 2015 ás 19:11

    Muito obrigado pelos códigos, me ajudou bastante! Abraço!

Comenta com força que é de graça!