Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Tenho a pagina painel.php que deve ser uma página restrita que está sendo 'protegida' pela restrito.php; A página restrito não acha os cookies antes feitos pela valida_login, resultado: erro geral.
painel.php:
<?php
include "Includes/restrito.php";
include "Includes/config.php";
if ($contagem == 1)
{ echo " Painel Adminsitrativo.";}
else { echo "Por favor logue-se.";}
?>
restrito.php
<?php
error_reporting(E_ALL ^ E_NOTICE);
include "config.php";
$contagem = 0;
if( isSet( $_COOKIE["login"],
$_COOKIE["senha"])) {
$nome = $_COOKIE["login"];
$pass = $_COOKIE["senha"];
$db = mysql_connect ($host, $login_db, $senha_db);
$basedados = mysql_select_db($database);
$confirmacao = mysql_query("SELECT * FROM `$log_db` WHERE login = '$nome' AND senha = '$pass'");
$contagem = mysql_num_rows($confirmacao);
}
?>
config.php
<?php
$host="localhost";
$database="frente";
$log_db="login";
$prod_db="produtos";
$login_db="root";
$senha_db="";
?>
valida_login.php
<?php
error_reporting(E_ALL ^ E_NOTICE);
include "config.php";
$login = $_POST["login"];
$senha = $_POST["senha"];
$db= mysql_connect ($host, $login_db, $senha_db);
$basedados = mysql_select_db($database);
$confirmacao = mysql_query("SELECT * FROM `$log_db` WHERE login = '$login' AND senha = '$senha'");
$contagem = mysql_num_rows($confirmacao);
if ( $login == "")
{ echo "Campo login vazio, escreva algo.";}
elseif ( $senha == "" )
{ echo "Campo senha vazio.";}
else { echo "Verificando dados...";}
if ($contagem == 1)
{
echo "Bem vindo, senhor $login. <font style='font-size:14px; color:#ccc;'>*cookies gravados. * <strong>redirecionando</strong></font>";
setcookie("login", $login,time()+172800);
setcookie("senha", $senha, time()+172800);
header("Refresh: 1; URL=http://localhost/Frente%20de%20Loja/painel.php");
}
else { echo "Não foi possivel se conectar.";}
?>
Alguem aê tem um bom tutorial explicando como fazer um sistema de segurança ( login e senha ) em sessões já que esses cookies só me dão problemas, além de não serem muito seguros, tem que criptografar e tal.
problema resolvido, na condição eu havia colocado $contagem == 1 ao invés de $contagem = 1 besteira o qe eu falei, continuo com o mesmo erro.
Tenta assim:
$contagem = $confirmacao->num_rows;
if($contagem == "1"){
exibe codigo } else { echo 'erro'; }
Porém aconselho seguir os tutoriais no thiago belem, são muito bons.
Segue link de um tutorial muito bom:
http://blog.thiagobelem.net/criando-um-sistema-de-logins-com-classe-no-php-parte-4/
no rodapé da pagina tem os arquivos para download (:
>
Tenta assim:
$contagem = $confirmacao->num_rows;
if($contagem == "1"){
exibe codigo } else { echo 'erro'; }
Porém aconselho seguir os tutoriais no thiago belem, são muito bons.
Segue link de um tutorial muito bom:
http://blog.thiagobelem.net/criando-um-sistema-de-logins-com-classe-no-php-parte-4/
no rodapé da pagina tem os arquivos para download (:
ficaria assim ?
<?php
include "Includes/restrito.php";
include "Includes/config.php";
$contagem = $confirmacao->num_rows;
if($contagem == "1")
{ echo "exibe codigo"; } else { echo 'erro'; }
?>$nome = $_COOKIE["login"];
$pass = $_COOKIE["senha"];
$confirmacao = mysql_query("SELECT * FROM `$log_db` WHERE login = '$nome' AND senha = '$pass'");
Só eu me assustei de cara com isto?
Nunca grava estes itens no cookie, logo alguém ve, e ainda pior utilizando direto no SQL, sem tratar.
Deixe esses valores server side. Só grava uma sessão, o cookie só leva seu id de sessão, os valores estão no seu servidor.
Desse jeito que você postou, não é seguro.
EDIT: Exemplo, alguém sendo bonzinho, defini pass no cookie como '123deoliveira4 OR 1=1 LIMIT 1', pronto está logado.
>
$nome = $_COOKIE["login"];
$pass = $_COOKIE["senha"];
$confirmacao = mysql_query("SELECT * FROM `$log_db` WHERE login = '$nome' AND senha = '$pass'");
Só eu me assustei de cara com isto?
Nunca grava estes itens no cookie, logo alguém ve, e ainda pior utilizando direto no SQL, sem tratar.
Deixe esses valores server side. Só grava uma sessão, o cookie só leva seu id de sessão, os valores estão no seu servidor.
Desse jeito que você postou, não é seguro.
EDIT: Exemplo, alguém sendo bonzinho, defini pass no cookie como '123deoliveira4 OR 1=1 LIMIT 1', pronto está logado.
eu ainda estou começando no PHP, mas estou com uns tutoriais impressos de anti injeção e de sessions, quando eu ficar entendido do assunto termino este painel. Por enquanto ele fica parado.
Não é complicado utilizar a sessão,
talvez até mais fácil do que você já fez.
Ela guarda na maquina do usuário o cookie, com ID da sessão, e no servidor com este ID tem os dados, por isto fica mais seguro. Claro que não é só isto, mas não tem mistérios.
Abraço.
Boa tarde
de uma olhada no Blog do Thiago Belem lá ele tem dois ou três ótimos tutoriais.