Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Fabyo

Sistema de Login

Recommended Posts

Cara, gostaria de saber como eu faço para restringir o acesso.Pois tipo o cara pode ser visitante, administrador ou cliente.Como eu farei para em uma determinada pagina ele informe q nao pode acessar se é visitante. E se for administrador ele acesse outras paginas. Se for cliente só algumas paginas.Fico grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Paulo Afonsotipo... na hora de seta as session você pega e seta tmb o nivel do usuario... por exemplo1 = admin2 = usuario3 = visitanteta dae na pagina q você quer proteger soh pra admin por exemplo bota$nivel = $_SESSION["nivel"] //bota como quise.. só pra pega a variavel você ja deve saber disso!if($nivel==1){include "administracao.php";}elseif($nivel==2){include "painel_de_adm.php";}else{$nivel = 3;echo "Ola visitante!";}espero ter ajudado FLW

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom diaSou novo em desenvolvimento em PHP, mas estou gostando da linguagem.Estou montando uma aplicação aqui e estou utilizando o login postado pelo Fabyo para autenticação, pois o achei simples e de facil entendimento.Mas como nem tudo é facil, estou com um problema:-- Criei a pagina de login-- Criei o protecao.php-- Criei a base e inclui o usuario teste/123 com o MD5 na senha-- Fiz a chamado do protecao.php na pagina de login e na pagina da aplicação-- Alterei o php.ini com o parametro de session.save_pathAté ai tudo ok, mas quando na pagina de login, eu digito o usuario e senha, a tela entre em status de carregando no browser e o diretório definido no session.save_path está sendo inundado de arquivos sess_xxxxxxx e a tela do login não sai do lugar, fica travada até dar time-outAlguem sabe me dizer o que está errado ? Acredito que seja a configuração do PHP, mas não sei o que é, pois isso aconteceu após a configuração do session.save_path pois a pagina estava anteriormente apresentando erro de CGIDesde já agradeçoAtenciosamenteAcferrarijr

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas,Eu não entendo muito de progamação mas aqui vai a minha duvida e se me puderem ajudar agradeço muito.Eu quero criar uma homepage mas só quero que acessem nela quem eu quiser.Será possivel criar um login ou password pra fazer isso??Mais uma vez desculpem a ignorancia...AbraçosPs- tou utilizando frontpage

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim seria possível,de uma lida melhor nesse mesmo tópico desse o começo,pois contem a solução do seu problema..Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal, queria ver se alguém consegue me dar uma idéia.

 

Aqui comigo o script funcionou 100%, mas na página que eu implementei eu tenho uma página principal assim:

 

<!-- Aqui tem vários comandos html no início -->
<?php
   //Aqui eu dou um include na pagina que o usuario escolheu
   include($pagina.".php");
?>
<!-- Aqui vem o final da página em HTML -->

É mais ou menos isso. Ou seja, quando o usuário clica em http://www.site.com.br/index.php?pagina=fotos

eu na verdade carrego o template da página em index.php e faço um include do foto.php.

 

O problema é que se o usuário descobrir isso, ele pode simplesmente acessar:

http://www.site.com.br/fotos.php e aí não passa pelo include do "protecao.php" que está no index.

E se eu adicionar a verificação no fotos.php alem do index.php eu vou estar fazendo a verificação duas vezes.

 

Seria isso mesmo? A única opção que eu tenho é fazer a verificação duas vezes?

Não estou conseguindo achar outra solução...

 

Grato pela ajuda.

 

t+!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não to conseguindo logar nem a pau, dá sempre usuário inválido, mas os dados estão no bd.. :(

Alguém pode me dar uma luz por favor? Dá usuário inválido sempre.. os dados são cadastrados corretamente, mas não valida..

 

Resolvido.. ufa http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

 

Não quer dizer como?

É que estou com o mesmo problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Exemplo simples de um sistema login usando session e protegido contra ataques sql injection

 

nivel iniciante

 

mas basicamente você precisa só colocar nas suas paginas o include "protecao.php"

 

index.php:

 

<!--php--><div class='highlight_syntax_top'>PHP</div><div class='highlight_syntax_main'><!--php1--><div class="php"><?

include "protecao.php";

?>

</div><!--php2--></div><!--php3-->

 

login.html:

 

<div class="html">[color= #009900;][url="http-~~-//december.com/html/4/element/html.html"]<span style="color: #0000BB;"><html>[/url]
<span style="color: #009900;">[url="http-~~-//december.com/html/4/element/head.html"]<span style="color: #0000BB;"><head>[/url]
     <span style="color: #009900;">[url="http-~~-//december.com/html/4/element/title.html"]<span style="color: #0000BB;"><title>[/url]Sistema de Login<span style="color: #009900;"><span style="color: #0000BB;"></title>
<span style="color: #009900;"><span style="color: #0000BB;"></head>

<span style="color: #009900;">[url="http-~~-//december.com/html/4/element/body.html"]<span style="color: #0000BB;"><body>[/url]
<span style="color: #009900;">[url="http-~~-//december.com/html/4/element/h1.html"]<span style="color: #0000BB;"><h1>[/url]Sistema de Login<span style="color: #009900;"><span style="color: #0000BB;"></h1>
<span style="color: #009900;">[url="http-~~-//december.com/html/4/element/form.html"]<span style="color: #0000BB;"><form[/url] <span style="color: #000066;">action=<span style="color: #ff0000;">"index.php" <span style="color: #000066;">method=<span style="color: #ff0000;">"post" <span style="color: #000066;">name=<span style="color: #ff0000;">"login" <span style="color: #000066;">id=<span style="color: #ff0000;">"login"<span style="color: #0000BB;">></a>  
        <span style="color: #009900;">[url="http-~~-//december.com/html/4/element/label.html"]<span style="color: #0000BB;"><label[/url] <span style="color: #000066;">for=<span style="color: #ff0000;">"nome"<span style="color: #0000BB;">></a>Nome:<span style="color: #009900;"><span style="color: #0000BB;"></label>

        <span style="color: #009900;">[url="http-~~-//december.com/html/4/element/input.html"]<span style="color: #0000BB;"><input[/url] <span style="color: #000066;">type=<span style="color: #ff0000;">"text" <span style="color: #000066;">name=<span style="color: #ff0000;">"nome" <span style="color: #000066;">id=<span style="color: #ff0000;">"nome" /<span style="color: #0000BB;">></a>

        <span style="color: #009900;">[url="http-~~-//december.com/html/4/element/label.html"]<span style="color: #0000BB;"><label[/url] <span style="color: #000066;">for=<span style="color: #ff0000;">"senha"<span style="color: #0000BB;">></a>Senha:<span style="color: #009900;"><span style="color: #0000BB;"></label>

        <span style="color: #009900;">[url="http-~~-//december.com/html/4/element/input.html"]<span style="color: #0000BB;"><input[/url] <span style="color: #000066;">type=<span style="color: #ff0000;">"password" <span style="color: #000066;">name=<span style="color: #ff0000;">"senha" <span style="color: #000066;">id=<span style="color: #ff0000;">"senha" /<span style="color: #0000BB;">></a>

        <span style="color: #009900;">[url="http-~~-//december.com/html/4/element/input.html"]<span style="color: #0000BB;"><input[/url] <span style="color: #000066;">type=<span style="color: #ff0000;">"submit" <span style="color: #000066;">name=<span style="color: #ff0000;">"submit" <span style="color: #000066;">value=<span style="color: #ff0000;">"Entrar" <span style="color: #000066;">style=<span style="color: #ff0000;">"cursor: pointer;" /<span style="color: #0000BB;">></a>     
<span style="color: #009900;"><span style="color: #0000BB;"></form>
<span style="color: #009900;"><span style="color: #0000BB;"></body>
<span style="color: #009900;"><span style="color: #0000BB;"></html></div>

 

protecao.php:

 

<!--php--><div class='highlight_syntax_top'>PHP</div><div class='highlight_syntax_main'><!--php1--><div class="php"><span style="color: #DD0000; font-weight: bold;"><?php[/color]

session_start();

 

//função anti sql injection

function anti_injection($txt)

{

        //Verifico se esta ativado magic_quotes caso esteja desativado uso a função addslashes

        $txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt;

        //referencia:

        //http://www.php.net/get_magic_quotes_gpc

        //http://www.php.net/addslashes

       

        // retiro da variavel esses caracteres (--, #, *, ;)

        return preg_replace("@(--|#|*|;|=)@s", "", $txt);     

}

 

function verifica_usuario($nome, $senha)

{

        //conecto ao servidor de banco de dados passo o nome do servidor usuario e senha

        mysql_connect("localhost", "usuario", "senha");

        // seleciono o banco de dados

        mysql_select_db("login");

 

        /*faço uma pesquisa perguntando a quantidade de usuarios com o nome e a senha passada pelo usuario usando o count ele conta a quantidade de ocorrencias no select essa maneira é a forma mais rapida e correta desse tipo de pesquisa, muitas pessoas usam o select * from e pega com mysql_num_rows() dessa forma prejudica muito mais o acesso ao banco podendo travar se tiver muitos acessos simutaneos*/

 

        $re    = mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha =

md5('$senha')");

 

        //referencia: <a href="http://www.php.net/md5" target="_blank">http://www.php.net/md5</a> e <a href="http://www.php.net/mysql_result" target="_blank">http://www.php.net/mysql_result</a>

        $total = mysql_result($re, 0, "total");

        mysql_close();

       

        /* se o total for diferente de 1 é porque o usuario nao esta cadastrado usando dessa forma o resultado esperado sempre sera 1 porque você precisa tbm criar um sistema de cadastros que deixe apenas um usuario ser cadastrado evitando usuarios repetidos */

        if($total != 1)

        {

   // redireciono para pagina de login

  header("Location: login.html");

  exit;

        }       

        // se nao existir ja a sessao eu gravo ela

        if(!isset($_SESSION["dados"]))

        {

  $dados["nome"]     = $nome;

  $dados["senha"]    = $senha;

  //gravo a sessao por padrao o php hj ja passa o serialize automaticamente nao precisa mais passar ela

  $_SESSION["dados"] = serialize($dados);

        }       

}       

 

//verifico se existe a sessao e ja pego os dados que nela contem

if(isset($_SESSION["dados"]))

{

        $dados = unserialize($_SESSION["dados"]);

        $nome  = $dados["nome"];

        $senha = $dados["senha"];

        verifica_usuario($nome, $senha);

}

else

{

        //aqui eu verifico se o usuario esta vindo de um formulario e pego os valores

        $nome  = isset($_POST["nome"])  ? anti_injection($_POST["nome"])  : "";

        $senha = isset($_POST["senha"]) ? anti_injection($_POST["senha"]) : "";

        verifica_usuario($nome, $senha);

}

 

?>

</body>

</html></div><!--php2--></div><!--php3-->

 

principal.php:

 

<!--php--><div class='highlight_syntax_top'>PHP</div><div class='highlight_syntax_main'><!--php1--><div class="php"><?php

// incluo a pagina de protecao que faz a verificação do usuario

include "protecao.php";

?>

</div><!--php2--></div><!--php3-->

 

pagina2.php:

 

<!--php--><div class='highlight_syntax_top'>PHP</div><div class='highlight_syntax_main'><!--php1--><div class="php"><?php

include "protecao.php";

?></div><!--php2--></div><!--php3-->

 

banco de dados usado no exemplo:

 

ja tem o usuario Teste senha 123

obs: lembre-se na hora de gravar mais um usuario usar md5 na senha

 

<div class="sql"><span style="color: #993333; font-weight: bold;">CREATE <span style="color: #993333; font-weight: bold;">TABLE usuarios <span style="color: #66cc66;">(
        id_usuario smallint<span style="color: #66cc66;">(<span style="color: #cc66cc;">5<span style="color: #66cc66;">) <span style="color: #993333; font-weight: bold;">UNSIGNED <span style="color: #993333; font-weight: bold;">NOT <span style="color: #993333; font-weight: bold;">NULL <span style="color: #993333; font-weight: bold;">AUTO_INCREMENT,
        nome varchar<span style="color: #66cc66;">(<span style="color: #cc66cc;">40<span style="color: #66cc66;">) <span style="color: #993333; font-weight: bold;">NOT <span style="color: #993333; font-weight: bold;">NULL <span style="color: #993333; font-weight: bold;">DEFAULT <span style="color: #ff0000;">'',
        senha varchar<span style="color: #66cc66;">(<span style="color: #cc66cc;">32<span style="color: #66cc66;">) <span style="color: #993333; font-weight: bold;">NOT <span style="color: #993333; font-weight: bold;">NULL <span style="color: #993333; font-weight: bold;">DEFAULT <span style="color: #ff0000;">'',
        <span style="color: #993333; font-weight: bold;">PRIMARY <span style="color: #993333; font-weight: bold;">KEY  <span style="color: #66cc66;">(id_usuario<span style="color: #66cc66;">)
<span style="color: #66cc66;">)
<span style="color: #993333; font-weight: bold;">INSERT <span style="color: #993333; font-weight: bold;">INTO usuarios <span style="color: #993333; font-weight: bold;">VALUES <span style="color: #66cc66;">(<span style="color: #cc66cc;">1, <span style="color: #ff0000;">'Teste', <span style="color: #ff0000;">'202cb962ac59075b964b07152d234b70'<span style="color: #66cc66;">);</div>

 

 

pessoal esta muito simples e funcional, mas se tiverem duvidas postem ai que eu respondo

 

é irmão mais estou com uma pequna dúvida pq estou usando o WAMP5.

já tenho uma tabela de user e senha como faço para criar um página de login

usando WAMP5

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fabyo não entendi uma coisa no codigo

 

<!--php--><div class='highlight_syntax_top'>PHP</div><div class='highlight_syntax_main'><!--php1--><div class="php">$txt = get_magic_quotes_gpc() == 0 ? addslashes($txt) : $txt;

       

        // retiro da variavel esses caracteres (--, #, *, ;)

        return preg_replace("@(--|#|*|;|=)@s", "", $txt);  

</div><!--php2--></div><!--php3-->

 

você esta dando addslashes no texto ($txt) para depois tirar as barras no preg_replace ?

 

E vlw Muito bom esse script ;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não Consigo de forma alguma logar... Testei de diversas formas cadastrei varias vezes e nadica....

 

sql =

CREATE TABLE `usuarios` (
  `id_usuario` smallint(5) unsigned NOT NULL auto_increment,
  `nome` varchar(45) NOT NULL default '',
  `senha` varchar(32) NOT NULL default '',
  `email` varchar(64) NOT NULL default '',
  `nivel_acesso` enum('0','1','2') NOT NULL default '0',
  `chave` varchar(32) NOT NULL default '',
  PRIMARY KEY  (`id_usuario`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2;

--
-- Extraindo dados da tabela `usuarios`
--

INSERT INTO `usuarios` VALUES(1, 'jose', '0812b432e33a698d3f8e9ca92366', 'jose@email.com', '2', 'nao');

e o tal acusa o seguinte erro

 

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/bvgcom/public_html/testes/login/login.php on line 27

 

Se algume puder colaborar ou me esplicar o motivo do erro e se o sql esta correto agradeço. Muito Obrigado a todos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia gente,

tentem mudar a parte

$re	= mysql_query("select count(*) as total from usuarios where nome = '$nome' and senha =
md5('$senha')");

		//referencia: http://www.php.net/md5 e http://www.php.net/mysql_result
		$total = mysql_result($re, 0, "total");
		mysql_close();
	   
		/* se o total for diferente de 1 é porque o usuario nao esta cadastrado usando dessa forma o resultado esperado sempre sera 1 porque você precisa tbm criar um sistema de cadastros que deixe apenas um usuario ser cadastrado evitando usuarios repetidos */
		if($total != 1)

Para:

 

$re	= mysql_query("select * from usuarios where nome = '$nome' and senha = md5('$senha')");
		$total = mysql_num_rows($re);

		if($total == 0) // Aqui q esta a jogada... tem que ser igual a zero p/ voltar ao login. Do jeito que estava, mesmo achando alguém iria voltar para a página de login!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.