Vitor RC 11 Denunciar post Postado Maio 22, 2014 mais uma duvida de PHP! Criei o sistema de login, mas o problema que qualquer usuário pode acessar as paginas restritas! Queria saber como posso "protege-las", se puderem enviar codigo pronto é melhor, para mim dar uma estudada! login.php <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Login - RC2 Suporte</title> <link href='http://fonts.googleapis.com/css?family=Open+Sans:400,300' rel='stylesheet' type='text/css'> <style type="text/css"> body { margin-top:0px; margin-left:0px; margin-bottom:0px; margin-right:0px; background-image:url(../sc/img/fundo2.png); background-repeat: no-repeat; background-attachment: fixed; background-size: 100% 100%; } #login { width:350px; height:380px; background-color:#FFF; margin:200px auto; font-family: 'Open sans'; font-weight:300; border:1px solid #CCC; border-radius:8px; } #login1 label { font-size:19px; } #titulo { width:100%; height:40px; margin-top:50px; text-align:center; } #title { font-family:'Open sans';font-weigh:300;font-size:32px; border-bottom:1px solid #CCC; color:#000; } #login1 { text-align:center; } #login1 input { width:210px; height:27px; margin:0px auto; border-radius:3px; border:1px solid #CCC; font-family:'Open sans'; font-weight:400; } #login1 .button2{ width:76px; height:48px; background-color:#333; color:#FFF; font-family:'Open sans'; font-weight:400; font-size:17px; cursor:pointer; -webkit-transition: all 0.5s ease-out 0s; -moz-transition: all 0.5s ease-out 0s; -ms-transition: all 0.5s ease-out 0s; -o-transition: all 0.5s ease-out 0s; transition: all 0.5s ease-out 0s; } #login1 .button2:hover { background-color:#000; } #tudo { width:330px; height:360px; margin:0px auto; } </style> </head> <body> <div id="login"> <div id="tudo"> <div id="titulo"><span id="title">Entre no painel</span></div> <form id="login1" name="loginform" method="post" action="verifica_usuario.php"> <br> <br> <label for="usuario">USUÁRIO:</label><br> <input name="usuario" type="text"/> <br> <br> <label for="senha">SENHA:</label><br> <input name="senha" type="password"/><br> <br> <input type="submit" class="button2" value="Entrar"/> </form> <br> </div> </div> </body> </html> verifica_usuario.php <?php require_once('conexaorc.php'); ?> <?php $usuario = $_POST['usuario']; $senha = $_POST['senha']; if(empty($usuario)){ echo "<script>alert('Preencha todos os campos para logar-se.'); history.back();</script>"; }elseif(empty($senha)){ echo "<script>alert('Preencha todos os campos para logar-se.'); history.back();</script>"; }else{ $query1 = mysql_num_rows(mysql_query("SELECT * FROM rc2us WHERE usuario = '$usuario' AND senha = '$senha'")); if($query1 == 1){ echo "<script>alert('Usuário logado com sucesso.');</script>"; echo "<meta http-equiv='refresh' content='0, url=./_painel/'>"; }else{ echo "<script>alert('Usuário e senha não correspondem.'); history.back();</script>"; } } ?> Acho que eu deveria abrir uma SESSAO, mas como? Compartilhar este post Link para o post Compartilhar em outros sites
jgustavo99 85 Denunciar post Postado Maio 22, 2014 Olá! Sim você pode criar um sessão ao autenticar os dados do login, com o valor por exemplo 1(Verdadeiro). Aí você faz uma comparação (IF e ELSE), se existe a sessão criada, e se o valor é igual a 1, nas suas páginas. Exemplo: Verefica_usuario.php <?php require_once('conexaorc.php'); ?> <?php $usuario = $_POST['usuario']; $senha = $_POST['senha']; if(empty($usuario)){ echo "<script>alert('Preencha todos os campos para logar-se.'); history.back();</script>"; }elseif(empty($senha)){ echo "<script>alert('Preencha todos os campos para logar-se.'); history.back();</script>"; }else{ $query1 = mysql_num_rows(mysql_query("SELECT * FROM rc2us WHERE usuario = '$usuario' AND senha = '$senha'")); if($query1 == 1){ // Se os dados estiverem OK cria a sessão session_start(); $_SESSION['status'] = 1;// Vai receber o valor 1 echo "<script>alert('Usuário logado com sucesso.');</script>"; echo "<meta http-equiv='refresh' content='0, url=./_painel/'>"; }else{ echo "<script>alert('Usuário e senha não correspondem.'); history.back();</script>"; } } ?> Aí na suas páginas restritas, você pode fazer no cabeçalho essa vereficação: <?php session_start(); if(isset($_SESSION['status']) and $_SESSION['status'] == 1){ ?> <html> <head><title>Página Restrita ...</title></head> <body> Conteudo de sua página restrita </body> </html> <?php }; else{ echo "Acesso Negado! Faça Login!!"; ;}?> Espero ter Ajudado! Uma dica: session_start(); começa a sessão, sempre que for usar-la para criar ou usar, e a sintaxe básica para criar uma sessão é: $_SESSION['NOME'] = VALOR. Compartilhar este post Link para o post Compartilhar em outros sites
Marcos_imasters 288 Denunciar post Postado Maio 22, 2014 pagina verificar <?php require_once('conexaorc.php'); $usuario = $_POST['usuario']; $senha = $_POST['senha']; if(empty($usuario) || empty($senha)){ echo "<script>alert('Preencha todos os campos para logar-se.'); history.back();</script>"; }else{ $query = mysql_query("SELECT * FROM rc2us WHERE usuario = '$usuario' AND senha = '$senha'"); $rows=mysql_num_rows($query); if($rows == 1){ echo "<script>alert('Usuário logado com sucesso.');</script>"; $_SESSION["login"] = $login; //salva login em uma session $_SESSION["senha"] = $senha; //salva senha em uma session echo "<meta http-equiv='refresh' content='0, url=./_painel/'>"; }else{ echo "<script>alert('Usuário e senha não correspondem.'); history.back();</script>"; } } ?> nas paginas que deseja restricoes <?php include_once "conexaorc.php"; if (isset($_SESSION['login']) AND $_SESSION['senha']): echo "Acesso restrito"; exit; endif; ?> Compartilhar este post Link para o post Compartilhar em outros sites
Vitor RC 11 Denunciar post Postado Maio 22, 2014 Vlw os dois me ajudaram! :D Compartilhar este post Link para o post Compartilhar em outros sites
jgustavo99 85 Denunciar post Postado Maio 22, 2014 Legal, cara. Sempre que precisar de algo é dar um toque. Se resolveu seu problema/dúvida, marque como resolvido a melhor resposta e dê um ponto positivo :) Compartilhar este post Link para o post Compartilhar em outros sites
Vitor RC 11 Denunciar post Postado Maio 22, 2014 Legal, cara. Sempre que precisar de algo é dar um toque. Se resolveu seu problema/dúvida, marque como resolvido a melhor resposta e dê um ponto positivo :) n resolveu kk! O seu codigo não está dando certo! Compartilhar este post Link para o post Compartilhar em outros sites
jgustavo99 85 Denunciar post Postado Maio 22, 2014 Estas dando alguma mensagem de Erro? Compartilhar este post Link para o post Compartilhar em outros sites
Vitor RC 11 Denunciar post Postado Maio 22, 2014 Eu utilizei o do Marcos Imasters, mas o dele não protege a pagina, qualquer um continua podendo entrar ! Compartilhar este post Link para o post Compartilhar em outros sites
jgustavo99 85 Denunciar post Postado Maio 22, 2014 Posso tentar lhe ajudar. Poste aqui seu código completo, da criação da sessão e verificação. Compartilhar este post Link para o post Compartilhar em outros sites
vonzuben 12 Denunciar post Postado Maio 23, 2014 <?php function session_checker(){ if (!isset($_SESSION['usuario_id'])){ header ("Location: http://www.seusite.com.br"); exit(); } } ?> Compartilhar este post Link para o post Compartilhar em outros sites
samoelyeshua 15 Denunciar post Postado Maio 23, 2014 Se você for exibir algum error de campo não preenchido ou coisa assim é mais eficaz que seja na mesma página, sem necessidade de refresh ou coisa assim... Verifica_usuario.php <?php session_start("log"); require_once('conexaorc.php'); $usuario = $_POST['usuario']; $senha = $_POST['senha']; if(isset($usuario) and isset($senha)){ /* Você precisa se atentar que só verificar se a query foi executada não basta para autenticar um login, eu geralmente busco no banco o login digitado e comparo, se ainda assim for igual então eu permito a passagem. */ $query1 = mysql_query("SELECT * FROM rc2us WHERE usuario = '$usuario' AND senha = '$senha'"); if($query1){ $num = mysql_num_rows($query1){ if ($num > 0) { $_SESSION['status'] = 'true'; header("Location: pagina.php"); // Coloca a página pra onde vai redirecionar no lugar de "Página.php" }else{ #Aqui você executa alguma coisa caso deh errado o login } }else{ # Aqui caso alguma coisa saia errado na query } } ?> Aqui você pode usar em todas páginas que você quer que só usuários cadastrados acessem <?php session_start("log"); if (!isset($_SESSION['status']) or $_SESSION['status'] != 'true') { # Faça algo porque o usuario não esta logado } ?> Coloque o atributo required no input por que assim você não corre risco de ficar algum dado faltando required é um atributo HTML5 Ah e apenas uma sugestão, começa a usar MYSQLI Compartilhar este post Link para o post Compartilhar em outros sites
Marcos_imasters 288 Denunciar post Postado Maio 23, 2014 desculpa vitor tente assim if (!isset($_SESSION['login']) or !isset($_SESSION['senha'])): echo "Você deve usar um login e uma senha válidos para acessar esse recurso\n"; else: echo "logado"; exit; endif; Compartilhar este post Link para o post Compartilhar em outros sites
Vitor RC 11 Denunciar post Postado Maio 23, 2014 Ta assim: verifica_usuario.php <- pagina que verifica os dados do form <?php require_once('conexaorc.php'); ?> <?php $usuario = $_POST['usuario']; $senha = $_POST['senha']; $senha = md5($senha); if(empty($usuario) || empty($senha)){ echo "<script>alert('Preencha todos os campos para logar-se.'); history.back();</script>"; }else{ $query = mysql_query("SELECT * FROM rc2us WHERE usuario = '$usuario' AND senha = '$senha'"); $rows=mysql_num_rows($query); if($rows == 1){ echo "<script>alert('Usuário logado com sucesso.');</script>"; $_SESSION["login"] = $login; //salva login em uma session $_SESSION["senha"] = $senha; //salva senha em uma session echo "<meta http-equiv='refresh' content='0, url=painel.php'>"; }else{ echo "<script>alert('Usuário e senha não correspondem.'); history.back();</script>"; } } ?> e o painel.php que é onde se redireciona caso o login esteja correto: <?php include_once "conexaorc.php"; if (isset($_SESSION['login']) and $_SESSION['senha']){ echo "Acesso restrito"; exit; } ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Painel usuario - RC2 Suporte</title> <body> MEU CONTEUDO AQUI! </body> </html> Mas quando eu faço login, ao inves de aparecer o conteudo da pagina aparece Acesso Restrito, mas como? eu abro as sessões na parte da verificação! ajuda! Compartilhar este post Link para o post Compartilhar em outros sites
jgustavo99 85 Denunciar post Postado Maio 23, 2014 Dei uma alterada, no seu código: Verifica_usuario.php <?php require_once('conexaorc.php'); ?> <?php $usuario = $_POST['usuario']; $senha = $_POST['senha']; $senha = md5($senha); if(empty($usuario) || empty($senha)){ echo "<script>alert('Preencha todos os campos para logar-se.'); history.back();</script>"; }else{ $query = mysql_query("SELECT * FROM rc2us WHERE usuario = '$usuario' AND senha = '$senha'"); $rows=mysql_num_rows($query); if($rows == 1){ echo "<script>alert('Usuário logado com sucesso.');</script>"; $_SESSION["login"] = $login; //salva login em uma session $_SESSION["senha"] = $senha; //salva senha em uma session echo "<meta http-equiv='refresh' content='0, url=painel.php'>"; }else{ echo "<script>alert('Usuário e senha não correspondem.'); history.back();</script>"; } } ?> Painel.php <?php include_once "conexaorc.php"; if (isset($_SESSION['login']) and $_SESSION['senha']){ // Se existir a sessão é pois o usuário esta logado ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Painel usuario - RC2 Suporte</title> <body> MEU CONTEUDO AQUI! </body> </html> <?php } else{ echo "Acesso restrito"; exit; } } ?> Se erro foi na vereficação do painel.php. Você estava vereficando errado, pois se existir a sessão Login e Senha, é para mostrar. Espero ter Ajudado! Compartilhar este post Link para o post Compartilhar em outros sites
Vitor RC 11 Denunciar post Postado Maio 23, 2014 Dei uma alterada, no seu código: Verifica_usuario.php <?php require_once('conexaorc.php'); ?> <?php $usuario = $_POST['usuario']; $senha = $_POST['senha']; $senha = md5($senha); if(empty($usuario) || empty($senha)){ echo "<script>alert('Preencha todos os campos para logar-se.'); history.back();</script>"; }else{ $query = mysql_query("SELECT * FROM rc2us WHERE usuario = '$usuario' AND senha = '$senha'"); $rows=mysql_num_rows($query); if($rows == 1){ echo "<script>alert('Usuário logado com sucesso.');</script>"; $_SESSION["login"] = $login; //salva login em uma session $_SESSION["senha"] = $senha; //salva senha em uma session echo "<meta http-equiv='refresh' content='0, url=painel.php'>"; }else{ echo "<script>alert('Usuário e senha não correspondem.'); history.back();</script>"; } } ?> Painel.php <?php include_once "conexaorc.php"; if (isset($_SESSION['login']) and $_SESSION['senha']){ // Se existir a sessão é pois o usuário esta logado ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Painel usuario - RC2 Suporte</title> <body> MEU CONTEUDO AQUI! </body> </html> <?php } else{ echo "Acesso restrito"; exit; } } ?> Se erro foi na vereficação do painel.php. Você estava vereficando errado, pois se existir a sessão Login e Senha, é para mostrar. Espero ter Ajudado! Cara, habilitei os erros do PHP, e no painel.php apareceu o seguinte: Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/u938041365/public_html/login/painel.php:1) in /home/u938041365/public_html/login/painel.php on line 9 Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/u938041365/public_html/login/painel.php:1) in /home/u938041365/public_html/login/painel.php on line 9 erro Que traduzindo para o portugues ficaria: Aviso : session_start (): Não é possível enviar cookie de sessão - cabeçalhos já enviados pelo (a saída começou em / home/u938041365/public_html/login/painel.php: 1) em / home/u938041365/public_html/login/painel.php na linha 9 Aviso : session_start (): Não é possível enviar sessão limitador do cache - cabeçalhos já foi enviado (a saída começou em / home/u938041365/public_html/login/painel.php: 1) em / home/u938041365/public_html/login/painel.php na linha 9 Erro Não é possivel enviar sessao limitador do cache - cabeçalhos ja foi enviado ?????? Ve se voce consegue identificar o erro por isso! Dei uma alterada, no seu código: Verifica_usuario.php <?php require_once('conexaorc.php'); ?> <?php $usuario = $_POST['usuario']; $senha = $_POST['senha']; $senha = md5($senha); if(empty($usuario) || empty($senha)){ echo "<script>alert('Preencha todos os campos para logar-se.'); history.back();</script>"; }else{ $query = mysql_query("SELECT * FROM rc2us WHERE usuario = '$usuario' AND senha = '$senha'"); $rows=mysql_num_rows($query); if($rows == 1){ echo "<script>alert('Usuário logado com sucesso.');</script>"; $_SESSION["login"] = $login; //salva login em uma session $_SESSION["senha"] = $senha; //salva senha em uma session echo "<meta http-equiv='refresh' content='0, url=painel.php'>"; }else{ echo "<script>alert('Usuário e senha não correspondem.'); history.back();</script>"; } } ?> Painel.php <?php include_once "conexaorc.php"; if (isset($_SESSION['login']) and $_SESSION['senha']){ // Se existir a sessão é pois o usuário esta logado ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Painel usuario - RC2 Suporte</title> <body> MEU CONTEUDO AQUI! </body> </html> <?php } else{ echo "Acesso restrito"; exit; } } ?> Se erro foi na vereficação do painel.php. Você estava vereficando errado, pois se existir a sessão Login e Senha, é para mostrar. Espero ter Ajudado! Nem mesmo esse codigo funcionou! Compartilhar este post Link para o post Compartilhar em outros sites
jgustavo99 85 Denunciar post Postado Maio 23, 2014 <?php require_once('conexaorc.php'); ?> <?php $usuario = $_POST['usuario']; $senha = $_POST['senha']; $senha = md5($senha); if(empty($usuario) || empty($senha)){ echo "<script>alert('Preencha todos os campos para logar-se.'); history.back();</script>"; }else{ $query = mysql_query("SELECT * FROM rc2us WHERE usuario = '$usuario' AND senha = '$senha'"); $rows=mysql_num_rows($query); if($rows == 1){ echo "<script>alert('Usuário logado com sucesso.');</script>"; session_start(); $_SESSION["login"] = $login; //salva login em uma session $_SESSION["senha"] = $senha; //salva senha em uma session echo "<meta http-equiv='refresh' content='0, url=painel.php'>"; }else{ echo "<script>alert('Usuário e senha não correspondem.'); history.back();</script>"; } } ?> Painel.php <?php include_once "conexaorc.php"; session_start(); if (isset($_SESSION['login']) and $_SESSION['senha']){ // Se existir a sessão é pois o usuário esta logado ?> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Painel usuario - RC2 Suporte</title> <body> MEU CONTEUDO AQUI! </body> </html> <?php } else{ echo "Acesso restrito"; exit; } } ?> Tenta aí. Compartilhar este post Link para o post Compartilhar em outros sites
Marcos_imasters 288 Denunciar post Postado Maio 23, 2014 vitor tenta coloca essa restricao aqui pega normal caso não pegue ai tente limpa o cahce do seu navegador. <?php session_start(); if(!isset($_SESSION['login']) AND !isset($_SESSION['senha'])){ header("location:erro.php"); }else{ echo"<center>Para Acessar essa Página é preciso está logado.</center>"; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
samoelyeshua 15 Denunciar post Postado Maio 24, 2014 Cara, habilitei os erros do PHP, e no painel.php apareceu o seguinte: Que traduzindo para o portugues ficaria: Não é possivel enviar sessao limitador do cache - cabeçalhos ja foi enviado ?????? Ve se voce consegue identificar o erro por isso! Nem mesmo esse codigo funcionou! Se tiver alguma quebra de linha antes de <?php você precisa deletar por que se não vai mandar um header antes da hora ai não funciona a session Compartilhar este post Link para o post Compartilhar em outros sites
Vitor RC 11 Denunciar post Postado Maio 24, 2014 Nao esta funfando msm! eu ja tirei as quebras de linha! Compartilhar este post Link para o post Compartilhar em outros sites