Ir para conteúdo

POWERED BY:

Arquivado

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

Vitor RC

proteger paginas

Recommended Posts

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

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

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

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

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

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

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

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

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

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

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
<?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

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

 

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

×

Informação importante

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