Ir para conteúdo

POWERED BY:

Arquivado

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

Smilinguido

Autenticação

Recommended Posts

Como eu faço pra criar um sistema de autenticação no qual, cliente vai pra uma pag. administrador vai pra outra...E eu tenho duas tabelas, uma clientes e outra admin, precisaria verificar nas duas...?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o certo seria você ter 1 tabela com o campo nivelai la você verificaria if nivel == admin, ou nivel == user e assim ia manipulando^^[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ola, eu não entendi muito, ai sai olhando varios exemplos por ai pra tentar montar o meu, so que não achei nada simples, so coisas mais completas e tb não deu muito certo...

 

Vou colocar o que eu montei aqui, se possivel você poderia me apontar os erros...

 

<?php session_start();   include ("config/mysqlconecta.php");$user = $_POST['user']; $senha = $_POST['senha']; $sql = ("SELECT * FROM cadastro WHERE usuario='$user' and senha=password('$senha')");  // pega a senha criptografada ; $valores = mysql_query("$sql"); $valor = mysql_fetch_row($valores); $existe = mysql_num_rows($valores); // Testando a senha. Se estiver OK vai ser resultado 1... if ($existe == '1') { 	//dando valor para as session. 	$cliente = $valor[0]; 	$admin = $valor[1]; 	// registrando a session    $_SESSION["cliente"]	 = $valor["id"];    $_SESSION["admin"]	   = $valor["usuario"];    $_SESSION["permissao"]   = $valor["nivel"]; 	   	header("Location: index2/admin.php");	 } elseif { 	 	header("Location: index.php/clien"); 	} elseif {//login ou senha errada? Retorna pra index 	header("Location: index.php?erro=1"); }?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz umas mudanças e agora ele não está dando erro, mas tb não esta autenticando...

 

<?php session_start();  include ("config/mysqlconecta.php");$user = $_POST['user']; $senha = $_POST['senha']; $sql = ("SELECT * FROM cadastro WHERE usuario='$user' and senha=password('$senha')");  // pega a senha criptografada $resultado = mysql_query("$sql"); $permissao = mysql_num_rows($resultado); $permissao = $_SESSION["nivel"];if ($permissao == 'admin') {    $_SESSION["admin"]; 	   	header("Location: index2.php?id=$id");	 } else if ($permissao == 'cliente'){ 	 $_SESSION["cliente"];	header("Location: testeclientes.php?id=$id"); 	} else {//login ou senha errada? Retorna pra index 	header("Location: index.php?erro=1"); }?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum o erro seria supostamente esse cara:$permissao = mysql_num_rows($resultado);mysql_num_rows retorna o numero de dados em uma tabela, tem nada haver com que a gente quer oOtesta assim:$return = mysql_fetch_object($resultado);$permissao = $return->nivel;echo $permissao;vamos ver o que da =]] se continuar sem exibir nada, vamos achar o erro do mysql, ponha assim:$resultado = mysql_query("$sql") or die(mysql_error());devagar e sempre ^^[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

:( Não deu certo cara, ele cont. indo pro header de erro "header("Location: index.php?erro=1"); "

 

<?php session_start();  include ("config/mysqlconecta.php");$user = $_POST['user']; $senha = $_POST['senha']; $sql = ("SELECT * FROM cadastro WHERE usuario='$user' and senha=password('$senha')");  // pega a senha criptografada $resultado = mysql_query("$sql") or die(mysql_error());//$permissao = mysql_num_rows($resultado); $return = mysql_fetch_object($resultado);$permissao = $return->nivel;echo $permissao;$permissao = $_SESSION['nivel'];if ($permissao == 'admin') {    $_SESSION["usuario"]; 	   	header("Location: index2.php?id=$id");	 } else if ($permissao == 'cliente'){ 	 $_SESSION["usuario"];	header("Location: testeclientes.php?id=$id"); 	} else {//login ou senha errada? Retorna pra index 	header("Location: index.php?erro=1"); }?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem o campo nivel realmente na tabela? porque se nao tiver realmente nao vai dar muito certo :( se tivesse como você postar a estrutura da tabela ficaria mais facil ^^[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acho que isso acho ajuda, e no campo ninvel estão cadastrados admin e cliente...

CREATE TABLE `cadastro` (  `id` int(5) NOT NULL auto_increment,  `nome` varchar(20) NOT NULL default '',  `sobrenome` varchar(20) NOT NULL default '',  `email` varchar(30) NOT NULL default '',  `usuario` varchar(20) NOT NULL default '',  `senha` varchar(20) NOT NULL default '',  `nivel` varchar(20) NOT NULL default '',  PRIMARY KEY  (`id`)) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=4;

Compartilhar este post


Link para o post
Compartilhar em outros sites

cierto, agora já fica mais facil quando da echo no $permissao o que exibe? se exibir certo o erro esta aqui:$permissao = $return->nivel;echo $permissao;$permissao = $_SESSION['nivel'];você define $permissao = $return->nivel; e depois redefine $permissao = $_SESSION['nivel'];não é isso?[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

então algo está errado... você pois o $resultado = mysql_query("$sql") or die(mysql_error()); ?porque nao esta achando os resulstados =/[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa, isso ta complicado, eu fiz e ja des fiz umas mudanças e nada tb...

Vou colocar o codigo do form...

 

index.php

<?php session_start(); session_destroy(); // isso é para destruir qualquer session que esteja criada. Ex: se o usuario logou entrou // no sistema e apertou o botao voltar do browser até chegar na index.php, o que vai // acontecer, a session vai está criada, e seus dados fixados, se outro logar vai // conseguir passar para dentro do sistema mas vai estar com os dados do outro, isso // acontece que para trocar valor de uma session você tem que desregistrar (comando // session_unregister()) e registrar novamente. ?><link href="stile.css" rel="stylesheet" type="text/css"><style type="text/css"><!--.style1 {color: #333333}--></style><form name="form1" method="post" action="redirect.php">  <table width="177" border="0" align="center" cellpadding="0" cellspacing="0">	<tr>	  <td width="51"><div align="right" class="style1">Usuario:</div></td>	  <td width="120"><div align="left">		<input name="usuario" type="text" class="campo" id="usuario2" size="20" maxlength="20"></div></td>	</tr>	<tr>	  <td><div align="right" class="style1">Senha:</div></td>	  <td><div align="left">		<input name="senha" type="password" class="campo" id="senha2" size="20" maxlength="20">	  </div></td>	</tr>	<tr>	  <td colspan="2">		<div align="center"><input name="Submit2" type="submit" class="button" value="Entrar">		  <input name="Reset" type="reset" class="button" value="Limpar">	</div>		<div align="left">		</div></td>	</tr>  </table></form>
redirect.php

 

<?php session_start();  include ("config/mysqlconecta.php");$usuario = $_POST['usuario']; $senha = $_POST['senha']; $sql = ("SELECT * FROM cadastro WHERE usuario='$usuario' and senha=password('$senha')");  // pega a senha criptografada $resultado = mysql_query("$sql") or die(mysql_error());//$permissao = mysql_num_rows($resultado); $return = mysql_fetch_object($resultado);$permissao = $return->nivel;//$permissao = $_SESSION['nivel'];if ($permissao == 'admin') { 	 $_SESSION["usuario"];   header("Location: index2.php?id=$id");	 } else if ($permissao == 'cliente'){ 	 $_SESSION["usuario"];  header("Location: testeclientes.php?id=$id"); 	} else {//login ou senha errada? Retorna pra index   header("Location: index.php?erro=1"); }?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao da erro de sql ? nao da nenhum erro?poe a linha na priemira linha de todos seus scripts:error_reporting(E_ALL);sem saber o erro fica dificil de achar a solucao[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm, agora sim deu um erro...Olha...Notice: Trying to get property of non-object in C:\Apache2\htdocs\php\claudio\redirect.php on line 13Warning: Cannot modify header information - headers already sent by (output started at C:\Apache2\htdocs\php\claudio\redirect.php:13) in C:\Apache2\htdocs\php\claudio\redirect.php on line 28

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hummm, agora sim deu um erro...

Olha...

 

Notice: Trying to get property of non-object in C:\Apache2\htdocs\php\claudio\redirect.php on line 13

 

Warning: Cannot modify header information - headers already sent by (output started at C:\Apache2\htdocs\php\claudio\redirect.php:13) in C:\Apache2\htdocs\php\claudio\redirect.php on line 28

Leia a linha 13 do arquivo redirect.php:

$permissao = $return->nivel;
Agora leia o "erro" (na verdade é somente um aviso):

Notice: Trying to get property of non-object in C:\Apache2\htdocs\php\claudio\redirect.php on line 13
Simples, não ? http://forum.imasters.com.br/public/style_emoticons/default/shifty.gif

 

O segundo erro só é causado pelo fato do primeiro erro ter gerado um output. É recomendável que tu utilize um error_reporting(false); em seu código para que isso não aconteça mais. http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

[]s :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

O segundo erro só é causado pelo fato do primeiro erro ter gerado um output. É recomendável que tu utilize um error_reporting(false); em seu código para que isso não aconteça mais. thumbsup.gif

discordo :rolleyes: , nao podemos esconder os erros ^^enfim, vamos mudar um pouco, $resultado = mysql_query("$sql");$fetch = mysql_fetch_array($resultado);print_r($fetch);e vamos ver o que aparece, o erro esta sendo causado porque nao esta achando esse campo nivel... []'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora pelo menos estão aparecendo os erros...

 

 

Notice: Undefined index: nivel in C:\Apache2\htdocs\php\claudio\redirect.php on line 19

 

Warning: Cannot modify header information - headers already sent by (output started at C:\Apache2\htdocs\php\claudio\redirect.php:19) in C:\Apache2\htdocs\php\claudio\redirect.php on line 32

 

<?php error_reporting(E_ALL);session_start();  include ("config/mysqlconecta.php");$usuario = $_POST['usuario']; $senha = $_POST['senha']; $sql = ("SELECT * FROM cadastro WHERE usuario='$usuario' and senha=password('$senha')");  // pega a senha criptografada $resultado = mysql_query("$sql") or die(mysql_error());//$permissao = mysql_num_rows($resultado); //$return = mysql_fetch_object($resultado);//$permissao = $return->nivel;$fetch = mysql_fetch_array($resultado);print_r($fetch);$permissao = $_SESSION['nivel'];if ($permissao == 'admin') { 	 $_SESSION["usuario"];   header("Location: index2.php?id=$id");	 } else if ($permissao == 'cliente'){ 	 $_SESSION["usuario"];  header("Location: testeclientes.php?id=$id"); 	} else {//login ou senha errada? Retorna pra index   header("Location: index.php?erro=1"); }?>

E se eu tirar o "$permissao = $_SESSION['nivel'];"

aparece esse erro:

 

Notice: Undefined variable: permissao in C:\Apache2\htdocs\php\claudio\redirect.php on line 21

 

Notice: Undefined variable: permissao in C:\Apache2\htdocs\php\claudio\redirect.php on line 26

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.