Jump to content


Photo

Tutorial - Cadastro De Usuários Completo


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

#1 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 22/07/2007, 02:13

TUTORIAL - CADASTRO DE USUÁRIOS com LOGIN COMPLETO

Estive dando uma vasculhada no meu baú e achei um tutorial que eu havia feito algum tempo atrás, inclusive eu já havia postado em um fórum de php que era do Felipe Pena, porém infelizmente este fórum já não existe mais... :(

... mas enfim...

Espero que ajude em algo...

Mas adianto que é para iniciantes poderem acompanhar e fazer seu sistema de forma descomplicada.

... a partir deste pode-se melhorar muito a forma de tratar os dados... otimizando e aprendendo mais, contudo acho uma boa base para quem quer se aventurar em PHP e está começando.

Obs.: Não envolve oop, mas não deixa de ser muito interessante.

Tem Demonstração, e os arquivos em .zip para baixar lá.

TUTORIAL - CADASTRO DE USUÁRIOS com LOGIN COMPLETO

Bons estudos

(y)

Perguntas e respostas frequentes sobre este tutorial:

1- Quando tento editar meu próprio cadastro, não consigo salvar, pois o meu formulário diz que o nome já foi usado em outro cadastro.
Exemplo: se o João entrou no formulário pra alterar a data de aniversário dele, o formulário devia aceitar o João, salvar as modificações, mas está verificando também o nome João e está interpretando como se outro João estivesse tentando entrar com o mesmo nome.

resposta: Não tem muito haver haver com o TUTORIAL, seria uma otimização, adição ou algo assim, mas vou tentar passar a idéia.
Uma verificação em todos os registros menos no que está sendo editado talvez resolva o problema de estar verificando o nome do próprio cadastro.[/b]
Apenas verifique em todos IDs que sejam diferentes do ID do registro que está sendo editado.

Exemplo: Essa parte do teu código me pareceu melhor assim, mas siga a lógica que te passei, pois esse código que te passo abaixo é de ilustração:


<?php

/* Baseado que se vc está logado então seus dados como id, nome etc são acessíveis, pois está gravado na session, então quando for editar poderá fazer uma verificação dos dados assim:*/

$sql_check = mysql_query("SELECT COUNT(nome) FROM cadastro WHERE nome='{$nome}' && id <> {$id}");
$uReg = mysql_fetch_array($sql_check);
$nome_check = $uReg[0];

if ($nome_check > 0){

echo "já existe";

}
else{

// segue os procedimentos

}

?>


2- É possível cada usuário ter uma pagina diferente?
Como se fosse um painel de controle individual!

resposta: Sim, veja a seguinte lógica para este caso:
Digamos que o usuário que acabou de logar no sistema, como pode-se acompanhar no tutorial, percebe-se que ao efetuar o login é gravado algumas sessions com alguns valores do cadastro referente ao usuário que acabou de logar.
Entre estas sessions é gravado também uma para o seu id, referente à si próprio que está logado.
Uma vez tendo este id acessível via session, pode-se listar todos os dados cadastrais deste usuário referente ao ID dele e somente pra ele.
Está seria a página individual só dele.
Qualquer sistema que for agregado ao site e que deseja uma relação dos dados com um usuário ou outro, basta associar os tais dados ao id do usuário e estes dados se tornam específicos ao usuário relacionado.


3- Você vai fazer um painel admin pra este tutorial?

resposta: Tô sem tempo nenhum pra desenvolver um painel admin para este tutorial, mas fica algumas dicas básicas.
Para listar os usuários, basta selecionar do bd os campos com os dados, como id, nome, sobrenome.
... tendo o id vc faz tudo e o nome e sobrenome seria para exibição e identificação visual do usuário ao qual irá executar alguma ação/edição/exclusão.
Depois que fizer a seleção no banco de dados é html básico para exibir no painel o nome do user em formato de link.
No link enviará os dados para um arquivo que pegará os dados deste via $_GET[] e executará as ações desejadas.

Exemplo:

- João Paulo Nunes
[ <a href="http://www.teusite.com.br/admin/editar_usuario.php?acao=editar&id=1">EDITAR</a> ]
[ <a href="http://www.teusite.com.br/admin/deletar_usuario.php?acao=editar&id=1">DELETAR</a> ]

Quando enviar à página para executar a ação desejada, essa ação será uma instrução sql.

Exemplo: Editar vc usará UPDATE e deletar usaria DELETE, ambos em referência ao id do usuário que foi pego com $_GET[]

Para editar meus dados eu já mencionei mais acima, a diferença nessa explicação é que me permite listar todos os users e executar qualquer ação que eu queira sobre todos os cadastros.

Já recebi diversos emails e ainda recebo, a maioria das dúvidas são baseadas nessas 3 acima.
O que acontece muito são solicitações de implementações, melhorias, adições.
Para esse tipo de solicitação aviso aqui a mesma coisa que aviso nos emails.

Há três formas disso acontecer, uma que vem ocorrendo são as doações que estão rolando lá na página do tutorial, direto no site do tuto.
Essas doações irei usar para melhorias naquele site futuramente, mas todas as doações que partirem deste tópcio eu reverterei para este fórum... para melhorias aqui para prover sempre o melhor para os usuários.
Uma segunda forma seria eu fazer adições por conta nesse tutorial, estendendo as possibilidades que evidente são possíveis hehehehe, mas isso requer tempo e disposição para tanto... não é o caso a muito tempo.
A terceira forma seria vcs usuários deste fórum que usufruem deste tutorial, postarem melhorias que fizeram, debater e assim vai.

Bons estudos.

#2 natanaelrw

natanaelrw

    Novato no fórum

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

Posted 13/08/2007, 10:51

pooooooooooooooo
te amo velho!

funcionou...

vou postar o código aqui pra mostrar como ficou o meu:

<?
	include ("conectar.php");
	$sql_condominio_check = mysql_query("SELECT COUNT(condominio) FROM cadastro WHERE condominio='{$condominio}' && id <> {$id}");
	$uReg = mysql_fetch_array($sql_condominio_check);
	$condominio_check = $uReg[0];

		 if (($condominio_check > 0) && ($id =! $checkarid))
		 {
			echo "J&aacute; exite um condom&iacute;nio com esse nome cadastrado: ( <strong>".$condominio."</strong> )<br />";
			include "editar_condominio1.php";
							}
				else
		{
		 $sql = mysql_query(" UPDATE cadastro SET cadastradopor='$cadastradopor', condominio='$condominio', endereco='$endereco', bairro='$bairro', cep='$cep', aptos='$aptos', padrao='$padrao', sindico='$sindico', telsindico='$telsindico', emailsindico='$emailsindico', porteiro='$porteiro', telporteiro='$telporteiro', emailporteiro='$emailporteiro', zelador='$zelador', telzelador='$telzelador', emailzelador='$emailzelador', contato='$contato', telcontato='$telcontato', emailcontato='$emailcontato', situacao='$situacao', edicao='$edicao', observacao='$observacao', data='$data' WHERE id='$id'
		")   or print(mysql_error());
		}
?>

te devo uma ... se precisar bater em alguém fala comigo :boxing:
:lol:

#3 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 13/08/2007, 20:04

não por isso (y)

Mas vendo seu código ali não vi a necessidade de verificar o:

... && ($id =! $checkarid))

Aliás nem vi vc reverenciando esta variável no novo código.

pois se no COUNT não encontrar nada igual nos IDs diferentes do $id não existe registro algum e assim entra no else.

portanto só assim já sria o suficiente:

if ($condominio_check > 0){

print "bla bla bla";

}
else{

// atualiza

}

Não estou certo ??

(y)Até mais

#4 FusionHost

FusionHost

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Masculino

Posted 22/08/2007, 21:29

Amigo seria possivel cada usuario ter uma pagina diferente?
Nem q a página tenha q ser feita manualmente!
Nao existe como fazer o sistema gravar uma pagina para cada usuario?
Como se fosse um painel de controle individual!

Edição feita por: FusionHost, 22/08/2007, 21:30.

FusionHost.com.br - Soluções em Hospedagem!
A FusionHost oferece serviços como: hospedagem de sites, registro de domínios, divulgação e criaçao de sites...
http://www.fusionhost.com.br

#5 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 22/08/2007, 22:04

Sim, há como fazer isso sem problemas...

Veja da seguinte forma a lógica para o que tu quer saber:

Digamos que você seja o usuário que acabou de logar, se acompanhou o tutorial com atenção percebeu que ao efetuar o login você grava algumas sessions com alguns valores do cadastro referente ao usuário que acabou de logar.

Repito... se vc viu com atenção no tutorial, este usuário ao logar, entre outras sessions ele grava uma com o valor do campo usuario_id referente ao usuário logado, que neste exemplifico como VOCÊ...

Uma vez vc tendo o id do usuário logado gravado numa session, vc pode listar todos os dados cadastrais deste usuário referente ao ID gravado na session em qualquer página.

entendendeu ??

Aí vai da criatividade de vc criar o design desta página e na mesma será executado uma querie de consulta no bd que vc irá escrever e listar os dados relacionados com o usuário que os requisitou

Podendo montar queries de atualização nos campos do usuário, assim dando a opção de edição e funcionando como um painel de controle onde poderá exibir e ediar tudo que se relaciona com este usuário.

Qualquer coisa posta aí

;) Até mais

#6 FusionHost

FusionHost

    Novato no fórum

  • Usuários
  • 3 posts
  • Sexo:Masculino

Posted 26/08/2007, 21:06

Sim sim, mais por exemplo, teria como fazer para quando o usuario se cadastrar criar uma pagina com a id dele vamos supor q a id dele e 10 ai qd cadastrar automaticamente criar a pagina 10.php e só quem pudesse se logar nessa pagina fosse ele mesmo, por exemplo, qd ele se logar no sistema automaticamente ele ser redirecionado para esta pagina, entende?

Edição feita por: FusionHost, 26/09/2007, 19:48.

FusionHost.com.br - Soluções em Hospedagem!
A FusionHost oferece serviços como: hospedagem de sites, registro de domínios, divulgação e criaçao de sites...
http://www.fusionhost.com.br

#7 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 28/08/2007, 23:02

Amigo, pelo visto não entendeu o que eu falei no post anterior...

Vamos lá então...

Você não criará uma pagina estática e sim dinâmica de acordo com o usuário que está registrado na session
Se a session do usuário_id estiver aberta com a gravação do usuario_id do Manuel, então é só puxar todos os dados do Manuel do bd e exibir nesta página ...

Veja bem ... digamos que exista o arquivo painelcontrole.php...
Assim que os usuários se logam no site, eles são direcionados para este arquivo...
Este arquivo estará pronto para exibir dados somente do usuário que estiver logado...

Exemplo:

Eu e vc somos cadastrados no site tal... eu 'logo' no meu pc com meu login e senha... vc loga no seu pc com seu login e senha... ambos somos redirecionados, após login com sucesso, para o arquivo painelcontrole.php, porém eu estarei somente vendo meus dados e vc só estará vendo os seus dados, pois os arquivos ali listados são puxados do banco de dados com resultados relacionados ao usuario_id gravado na session...

... eu quando loguei gravei a minha session com meu usuario_id e vc gravou na sua session o seu usuario_id.

Entendeu?

Se não entendeu, realmente terá que dar mais uma estudada no manual em todos os pontos do tutorial...

Essa de criar uma página/arquivo específico para cada um não vi a necessidade e a prática... e contudo não está dentro do escopo do tutorial...

A possibilidade teria, mas se não me explicar a finalidade, só posso te dizer que a viabilidade, funcionalidade, praticidade da tua lógica não se aplica ao que hoje chamamos "dinamismo" e que no qual o PHP e seus aliados nos serve muito bem para tornar o trabalho mais pratico no desenvolvimento web.

Fico no aguardo, de uma finalidade justificada para querer criar um arquivo específico para cada usuário.

(y)Até mais

#8 l3on4rdo

l3on4rdo

    O Mestre dos Mestres

  • Usuários
  • 159 posts
  • Sexo:Não informado
  • Localidade:São Carlos - SP

Posted 11/09/2007, 15:51

crab,

primeiramente excelente tut parabens e obrigado !!!
Eu to começando no php nao manjo quase nada pra nao fla nada e gostaria de saber 2 coisas :

1ª como fazer uma page q o usuario possa editar seus dados
2ª como fazer uma page em q mostrasse para todos os usuarios logados os dados dos outros menos a senha claro, por exemplo eu leonardo poderia ver qm esta cadastrado numa tabela tipo assim :

usuario | nome de usuario | + coisas sobre o usuario | email

crab | zé | admin | crab@crab.com

saco ??

vlw t+

Edição feita por: l3on4rdo, 11/09/2007, 18:23.

Buscando um convite do TorrentLeech ! Se tiver um, me mande uma MP ! Ratio > 1 garantida !

#9 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 11/09/2007, 19:32

Amigo eu respondi praticamente isso nos posts acima do seu... da uma olhada com atenção.

é só colocar no arquivo que será exibido após o login com sucesso, uma consulta sql para puxar do banco de dados todos os usuários e seus dados menos a senha e distribuir/listar/organizar a gosto com o uso de (X)HTML

Simples

;) Até mais

#10 l3on4rdo

l3on4rdo

    O Mestre dos Mestres

  • Usuários
  • 159 posts
  • Sexo:Não informado
  • Localidade:São Carlos - SP

Posted 11/09/2007, 19:39

cara mas como eu disse tmb nos posts acima eu nao sei fazer isso se nao nao teria postado !
C puder me mandar o arquivo pronto ou o tut agradeço !

t+
Buscando um convite do TorrentLeech ! Se tiver um, me mande uma MP ! Ratio > 1 garantida !

#11 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 12/09/2007, 01:34

Pronto não mando, adicionar no tutorial mais pra frente, acho que até pode ser, vou ver de acordo com meu tempo... mas de que adianta um tutorial se vc só copia e cola e não aprende, pois se tivesse acompanhado o tutorial da melhor forma, procurando saber o que cada coisa faz e como faz, saberia sem problemas fazer isso que quer, somente baseado nas instruções que passei acima.

Pois no próprio tutorial habilita a fazer isso tudo que quer...

Consulta simples no banco de dados...

Tutorial é para aprender e não copiar e colar... se quer copiar e colar procure por scripts prontos

http://www.hotscripts.com ... não saca inglês... eu tbm não saco muito não... http://babelfish.altavista.com

Preguiça de traduzir meia duzia de palavras no readme, que seriam suficiente para colocar a maioria desses sistemas prontos para funcionar, já que vem tudo explicado, então procure no google marcando a opção para procurar soemnte no brasil...

... enfim, as opções são muitas e foi assim que eu aprendi o pouco que sei, não posso te indicar outra forma.
... amigos ajudaram sim, não posso esquecer e ainda ajudam, mas nunca me dão pronto, e quando deram pronto, eu paguei por isso.

Procure se esforçar e tentar entender o que faz... não importa o tempo que necessite... se você quiser realmente, uma hora as coisas vão começar a parecer mais claras para vc...

Leia tutoriais como se deve ler tutoriais, e leia apostilas etc.. devore tudo relacionado ao assunto que quer mexer.

Se não for desta forma ... desista, procure outra coisa para fazer.

(y)Até mais

#12 incrivelbr

incrivelbr

    Novato no fórum

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

Posted 12/09/2007, 21:57

Grab, me cadastrei nesse forum só para poder responder.
Ae tu é cheio de marra :D , mas falou a verdade! Tem que ralar se quer aprender, ainda mais programação.
Veja meu caso, administro uma rede de médio porte e estamos sem programador para Web. Tive que ralar nos livros, no Google e nos fóruns para poder entender como funciona o PHP/MySQL, pois temos 3 sistemas funcionando aqui na empresa com essa dupla da pesada e quem programou foi demitido. Eu só administro e analiso não programo. :( Quando os programas começaram a apresentar problemas tive que consertar na marra, e muitas vezes minhas únicas ferramentas era um livro e a lógica da coisa. Os sistemas estão funcionando, mas precisando de melhorias.
Então Leonardo, dúvidas todos tem quando começa na programação, mas antes de perguntar dá uma olhada por aí, as vezes a resposta está na cara, experiência própia!
Grab, seu programa é simples, mas eficiente. Tentei rodá-lo em nosso servidor, mas apareceu um probleminha no cadastrar.php, amanhã no trabalho vou analisar com mais calma e vou ver se acho o problema. Tá dando um erro na verificação do email. To querendo usar uma autenticação única para os três programas e implementar o nível de acesso.
Vlw

#13 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 12/09/2007, 23:16

hehehe cheio de marra nada... humildade é meu lema...

Massa que me apóia na idéia do que é aprender de verdade...

... só uma coisinha que não curti...

é CRAB e não Grab...

Hehehehe

Sim é um sistema simples, justamente para aprender com maior facilidade... "B A BA"
... eu explico isso na descrição do tuto, nunca foi minha intenção ser algo complexo... observe o que está citado lá no final do tutorial:

Observação: Obviamente este tutorial é apresentado da forma simples e crua, onde a intenção é ajudar os iniciantes em PHP, porém há formas mais requintadas de tratar os dados aqui trabalhados e não gostaria de colocar em questão isso, pois como disse o objetivo é apresentar uma forma simples para quem ainda tenha pouco contato com PHP e gostaria de entrar nesse mundo.


Quanto ao problema que vc mencionou, me informe exatamente o que está acontecendo, de outra forma não posso ajudar... pois já testei várias vezes e se usado da forma que é para ser usado, acho que não terá problemas.

Quanto a verificação mais complexa e segura do email cadastrado, isso é por sua conta, pois não era minha intenção passar isso, como pode ver.

Talvez o problema não seja no sistema mas alguma coisa que vc possa ter implementado ou editado e assim ter dado algum conflito, mas tbm pode ser no sistema :D

Enfim, deves colocar aqui o problema, fico no aguardo, pois caso seja um problema do sistema eu possa arrumar.

Até que se prove ao contrário, não tem erro algum :snack:

(y)Até mais

#14 incrivelbr

incrivelbr

    Novato no fórum

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

Posted 13/09/2007, 09:03

Foi mal pelo "Grab"! :wacko:

Pois é, não especifiquei detalhamente o problema pq, como havia dito, vou mexer no programa com mais calma. Provavelmente, não vou usar todo ele, mas vou aproveitar o seu código e adaptar ao nosso, claro que vou deixar os créditos (y) . Valeu pela a intenção de ajudar. Talvez precise de alguma ajuda. Como tb já viu dito, não sou programador, mas entendo a lógica da coisa, não deixa de ser um começo. :D

vlw

#15 Crab

Crab

    Da paz, mas preparado para Guerra

  • Ex-Admins
  • 2521 posts
  • Sexo:Masculino
  • Localidade:Florianópolis - SC
  • Interesses:Desenvolvimento Gráfico e Web.

Posted 14/09/2007, 03:38

Possivelmente pode ocorrer erros quando tentamos integrar alguma coisa a outra, caso não façamos da forma que uma entre em sintonia com a outra.
Mas a intenção era um tutorial daquilo que está lá e não um tutorial para integrar com outra aplicação.
Como eu disse, no que aquele tutorial tem para apresentar, não possui erros de funcionalidade se seguido exatamente como está lá.
Mas é claro que se eu poder te ajudar em algumas dúvidas na integração de sua aplicação com as informações daquele tuto... ajudarei.

Mas torno a dizer... não funcionar com alguma aplicação terceira não é a mesma coisa que dizer que aquele sistema do tutorial tenha algum problema de erro em alguma verificação... mas se tiver realmente apuraremos os fatos...

Fico no aguardo :snack:Até mais




2 user(s) are reading this topic

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

IPB Skin By Virteq