pataxo 0 Denunciar post Postado Novembro 9, 2009 Olá gurizada...Gostaria que alquem pudece me ajudar, sou novo em php e acabei de desenvolver um sistema... o problema que nesse sistema, o acesso dele de login esta igual pra todos, todos que entram podem fazer oque quiserem, mas eu quero restrições... por isso admin e usuarios, e não estou conseguindo fazer isso, se alguem puder de alguma forma ajudar agradeço muito... Obrigado desde já. Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Novembro 9, 2009 Você precisa nos dar mais informações, se está usando MySQL, cookies ou sessões... se usar MySQL basta criar um campo "nivel" ou "acesso" e setar de acordo com o usuario na base de dados, capturar isso e usar nas checagens de seu site. Exemplo no MySQL você tem o campo nivel INT( 1 ) No PHP você pode fazer um switch: switch($nivel) { case 0: $titulo = "usuário"; break; case 1: $titulo = "administrador"; break; default: $titulo = "usuário"; } Em seus scripts... if($nivel >= 1) { echo("Administradores tem acesso dentro dessa condição"); } else { echo("Desculpe, apenas administradores"); die; } No laboratório de scripts você encontra vários exemplos, pela web também, no site do iMasters deve ter algo, qualquer dúvida só postar. Compartilhar este post Link para o post Compartilhar em outros sites
pataxo 0 Denunciar post Postado Novembro 9, 2009 area_restrita <?php require_once("login.class.php"); $login = new Login(); $login->verificar("index_.php"); echo "<span style=\"font-size: 15px; color: #ffffff; font-family: Calibri;\">Bem vindo " . $LoginUsuario . "</span>"; ?> Logar.php <?php mysql_connect("localhost", "root", ""); mysql_select_db("caf"); $LoginUsuario = $_POST["usuario"]; $SenhaUsuario = $_POST["senha"]; require_once("login.class.php"); $login = new Login(); $logar = $login->logar($LoginUsuario, $SenhaUsuario, "index_.php"); if ($logar) echo $logar; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Novembro 9, 2009 Por esse código não tem como te ajudar, essa classe faz o login, provavelmente você terá que fazer o que eu disse, no MySQL e depois inserir esse campo na classe. Compartilhar este post Link para o post Compartilhar em outros sites
Ferreira Felipe 0 Denunciar post Postado Novembro 9, 2009 if($nivel >= 1) { echo("Administradores tem acesso dentro dessa condição"); } else { echo("Desculpe, apenas administradores"); die; } Ola Skyo, Desculpe me meter no tópico... Mas somente para entender o codigo a cima que você postou!! if($nivel >= 1) { echo("Administradores tem acesso dentro dessa condição"); Nessa parte que esta em negrito é onde vai o código para o administrador, ou seja, o layout por exemplo... Digamos que eu quero somente mostrar para o admi os links: "TEMPO", "MEDIA". Desta forma eu posso chamar esse if e colocar dentro dessa parte os links? Obrigado pela atenção e desculpe por atrapalhar!!! Compartilhar este post Link para o post Compartilhar em outros sites
pataxo 0 Denunciar post Postado Novembro 9, 2009 login.class.php <?php class Login { // DEFININDO VARIÁVEIS private $SenhaUsuario, $tabela, $campoLogin, $campoSenha; public $LoginUsuario, $msgErro; // DEFINIR AS INFORMAÇÕES DA CLASSE function Login($tabela = "user", $campoLogin = "login", $campoSenha = "senha", $msgErro = "Login ou senha inválido") { $this->tabela = $tabela; $this->campoLogin = $campoLogin; $this->campoSenha = $campoSenha; $this->msgErro = $msgErro; } // FAZENDO LOGIN DO USUARIO function logar($login,$senha,$redireciona = false) { // Informações do formulário $this->SenhaUsuario = mysql_real_escape_string(addslashes($senha)); $this->LoginUsuario = mysql_real_escape_string(addslashes($login)); // Verifica se o usuário existe $consulta = @mysql_query("SELECT ".$this->campoLogin.",".$this->campoSenha." FROM ".$this->tabela." WHERE ".$this->campoLogin." = '".$this->LoginUsuario."' LIMIT 0,1"); $campos = @mysql_num_rows($consulta); // Se o usuário existir if($campos != 0): // Se a senha estiver incorreta if($this->SenhaUsuario != @mysql_result($consulta,0,$this->campoSenha)): return $this->msgErro; // Se a senha estiver correta else: // Coloca as informações em sessões session_start(); $_SESSION['LoginUsuario'] = $login; $_SESSION['SenhaUsuario'] = $senha; // Se for necessário redirecionar if ($redireciona): header("Location: ".$redireciona.""); endif; endif; // Se o usuário não existir else: return $this->msgErro; endif; } // VERIFICA SE O USUÁRIO ESTÁ LOGADO function verificar($redireciona = false) { session_start(); // Se estiver logado if(isset($_SESSION['LoginUsuario']) and isset($_SESSION['SenhaUsuario'])): global $LoginUsuario; $LoginUsuario = $_SESSION["LoginUsuario"]; return true; // Se não estiver logado else: // Se for necessário redirecionar if ($redireciona): header("Location: ".$redireciona.""); endif; return false; exit; endif; } // LOGOUT function logout($redireciona = false) { session_start(); // Limpa a Sessão $_SESSION = array(); // Destroi a Sessão session_destroy(); // Modifica o ID da Sessão session_regenerate_id(); // Se for necessário redirecionar if ($redireciona): header("Location: ".$redireciona.""); exit; endif; } } ?> é isso ai meu código, ele funciona como pra todos administradores, como diferencio agora usur de admin??? Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Novembro 9, 2009 Ola Skyo, Desculpe me meter no tópico... Mas somente para entender o codigo a cima que você postou!! if($nivel >= 1) { echo("Administradores tem acesso dentro dessa condição"); Nessa parte que esta em negrito é onde vai o código para o administrador, ou seja, o layout por exemplo... Digamos que eu quero somente mostrar para o admi os links: "TEMPO", "MEDIA". Desta forma eu posso chamar esse if e colocar dentro dessa parte os links? Obrigado pela atenção e desculpe por atrapalhar!!! Pode. Pataxo você vai ter que alterar aqui (coloquei mais ou menos como ficaria, necessita inserir no MySQL o campo): // Verifica se o usuário existe $consulta = @mysql_query("SELECT ".$this->campoNivel.",".$this->campoLogin.",".$this->campoSenha." FROM ".$this->tabela." WHERE ".$this->campoLogin." = '".$this->LoginUsuario."' LIMIT 0,1"); $campos = @mysql_num_rows($consulta); // Se o usuário existir if($campos != 0): // Se a senha estiver incorreta if($this->SenhaUsuario != @mysql_result($consulta,0,$this->campoSenha)): return $this->msgErro; // Se a senha estiver correta else: // Coloca as informações em sessões session_start(); $nivel = @mysql_result($consulta,0,$this->campoSenha); $_SESSION['LoginUsuario'] = $login; $_SESSION['SenhaUsuario'] = $senha; $_SESSION['NivelUsuario'] = $nivel; // Se for necessário redirecionar if ($redireciona): header("Location: ".$redireciona.""); endif; endif; // Se o usuário não existir else: return $this->msgErro; endif; } Você vai ter que definir o campoNivel na parte superior da classe, igual está o campoLogin em: // DEFININDO VARIÁVEIS e // DEFINIR AS INFORMAÇÕES DA CLASSE Assim você teria a sessão NivelUsuario e poderia trabalhar com ela fazendo as checagens no script, como postei anteriormente. Compartilhar este post Link para o post Compartilhar em outros sites
pataxo 0 Denunciar post Postado Novembro 9, 2009 Ba cara muito obrigado pela ajuda, mas sou leigo mesmo, aqui deu erros...até seria melhor alguem me passar um link de algum lugar que tenha esse código pronto...mas se não souberem de algum lugar tambem valeu a ajuda ja, ja vi que neste fórum a gurizada ajuda mesmoo... Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Novembro 9, 2009 Tente modificar o que eu falei e essa parte também, assim: class Login { // DEFININDO VARIÁVEIS private $SenhaUsuario, $tabela, $campoLogin, $campoSenha; $campoNivel; public $LoginUsuario, $msgErro; // DEFINIR AS INFORMAÇÕES DA CLASSE function Login($tabela = "user", $campoNivel = "nivel", $campoLogin = "login", $campoSenha = "senha", $msgErro = "Login ou senha inválido") { $this->tabela = $tabela; $this->campoLogin = $campoLogin; $this->campoSenha = $campoSenha; $this->campoNivel = $campoNivel; $this->msgErro = $msgErro; } E crie um campo no seu MySQL chamado nivel. Compartilhar este post Link para o post Compartilhar em outros sites
pataxo 0 Denunciar post Postado Novembro 9, 2009 Parse error: parse error, expecting `T_FUNCTION' in C:\Arquivos de programas\EasyPHP5.3.0\www\login\login.class.php on line 4 Cara da este erro e a linha 4 seria ... private $SenhaUsuario, $tabela, $campoLogin, $campoSenha; $campoNivel; Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Nito 1 Denunciar post Postado Novembro 9, 2009 Estou estudando através do livro "PHP 5 - Conceitos, Programaçao e Integraçao - Walace Soares". Lá ele dá um exemplo sobre sistema com login com níveis e tudo mais. Recomendadíssimo pra quem quer aprender PHP. Compartilhar este post Link para o post Compartilhar em outros sites
pataxo 0 Denunciar post Postado Novembro 9, 2009 Boa dica cara, tem como fazer donwload deste livro??? ou só comprando mesmo Compartilhar este post Link para o post Compartilhar em outros sites
Fernando Nito 1 Denunciar post Postado Novembro 9, 2009 Eu peguei o livro na biblioteca da faculdade e to renovando o empréstimo toda semana http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Aqui você pode baixar os EXEMPLOS do livro: http://www.editoraerica.com.br/download.asp?cod=031X O livro em si nunca vi disponível para download. Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Novembro 9, 2009 Parse error: parse error, expecting `T_FUNCTION' in C:\Arquivos de programas\EasyPHP5.3.0\www\login\login.class.php on line 4 Cara da este erro e a linha 4 seria ... private $SenhaUsuario, $tabela, $campoLogin, $campoSenha; $campoNivel; Tira o ponto e virgula de $campoSenha, poe assim: private $SenhaUsuario, $tabela, $campoLogin, $campoSenha, $campoNivel; não tinha visto quando editei Compartilhar este post Link para o post Compartilhar em outros sites
pataxo 0 Denunciar post Postado Novembro 9, 2009 Beleza cara deu certo, eles logam normal, mas o problema ainda continua, eles continuam entrando os dois normal, como que agora eu faço as restrições dentro da pagina para usuarios? Compartilhar este post Link para o post Compartilhar em outros sites
Skyo 1 Denunciar post Postado Novembro 9, 2009 Agora você deve ter a sessão NivelUsuario, faz algo como eu postei la no começo do topico, uma pagina de teste por exemplo: <?php session_start(); $nivel = $_SESSION['UsuarioNivel']; switch($nivel) { case 0: $titulo = "usuário"; break; case 1: $titulo = "administrador"; break; default: $titulo = "usuário"; } if($nivel >= 1) { echo("Você é um $titulo, administradores tem acesso dentro dessa condição!"); } else { echo("Desculpe, apenas administradores, você é $titulo!"); die; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
pataxo 0 Denunciar post Postado Novembro 9, 2009 sim cara, mas ainda continua, aparece pra min... Notice: Undefined index: UsuarioNivel in C:\Arquivos de programas\EasyPHP5.3.0\www\login\index_.php on line 3 Desculpe, apenas administradores, você é usuário! tanto pra admin como pra user...se puder ajudar acho que é no anco o erro antes ele rodava assim,oque devo acrescentar nele para rodar? CREATE TABLE `user` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `login` VARCHAR(28) NOT NULL, `senha` VARCHAR(50) NOT NULL, `nivel` VARCHAR(2) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=MYISAM AUTO_INCREMENT=17 DEFAULT CHARSET=latin1 Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 9, 2009 Preste atenção, ali em cima você cria: $_SESSION['NivelUsuario'] = $nivel; e depois tenta usar: $nivel = $_SESSION['UsuarioNivel']; percebe que são diferentes? Não precisa floodar o fórum. Isso vai contra as regras. Aguarde alguma resposta. Faça assim: <?php session_start(); $nivel = isset( $_SESSION['NivelUsuario'] )?$_SESSION['NivelUsuario']:0; Compartilhar este post Link para o post Compartilhar em outros sites
pataxo 0 Denunciar post Postado Novembro 9, 2009 Desculpa então não tinha lido antes, mas muito obrigado deu certo, mas ainda tem um problema se puderes dar essa ultima ajuda, tipo...eu logo tanto com user e adm e ela encima au logar aparce mesmo pro user bemn vindo, voce é um admin, sendo que não é, e o mesmo para o user...como posso arrumar isso? Compartilhar este post Link para o post Compartilhar em outros sites
William Bruno 1501 Denunciar post Postado Novembro 9, 2009 Ou o erro tá no teu banco, ou na hora em que você guarda as informações nas SESSIONs. Reveja esse trecho aqui: $nivel = @mysql_result($consulta,0,$this->campoSenha); $_SESSION['LoginUsuario'] = $login; $_SESSION['SenhaUsuario'] = $senha; $_SESSION['NivelUsuario'] = $nivel; para: $nivel = mysql_fetch_assoc( $consulta ); $_SESSION['LoginUsuario'] = $dados['login']; $_SESSION['SenhaUsuario'] = $dados['senha']; $_SESSION['NivelUsuario'] = $dados['nivel']; Compartilhar este post Link para o post Compartilhar em outros sites