Ir para conteúdo

Arquivado

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

Vales & Dores

[Resolvido] compartamento estranho no if(! iseet)

Recommended Posts

Bem to usando o comando a baixo para tentar barrar o acesso via URL até aqui ta dando certo por que quando tento via URL ele não deixa eu ver a pagina e volta para index.php.

 

Até ai tudo certo, mas quando entro com Usuario e senha correto ele volta mesmo assim para a pagina index.php, mas eu estou usando o operador logico ! e mesmo assim volta.

 <?php

  	session_start();
  	if(!isset($_SESSION['login']) AND !isset($_SESSION['senha']))
  	header('location: index.php');
 ?>

 

 

 

Vou colocar a pagina logar aqui:

 

logar.php

 

<?php

if($_SERVER['REGUEST_METHOD'] = 'POST')

include('conectar bd.php');

$sql = mysql_query("SELECT * FROM cadastro WHERE login='{$_POST['login']}' and senha='{$_POST['senha']}'");

if(mysql_num_rows($sql)>0)
{

               session_start();

               $_SESSION['login'] = $_POST['login'];
               $_SESSION['senha'] = $_POST['senha'];
               header("location: pagina segura.php");
}
else
{
 echo('<h1>Usuario e senha Incorreto tente novamente!!!');
}
?>

 

e ai gente como fazer isso funcionar?

 

resumindo quero barrar acesso via URL e nao autorizado a pagina com o nome pagina segura.php, mas mesmo com acesso e senha correto ele me barra.

Compartilhar este post


Link para o post
Compartilhar em outros sites

deve ter mesmo algo errado ae, faz o seguinte

 

verifica o q tem na pagina segura...

 

aki

 

if(mysql_num_rows($sql)>0)
{

               session_start();

               $_SESSION['login'] = $_POST['login'];
               $_SESSION['senha'] = $_POST['senha'];
               header("location: pagina segura.php");
}

 

deveria dar erro, pois o session_start manda saida par ao navegador, ocorrendo assim erro de redirecionamento,o session start deve ser o primeiro a ser chamado, em todas as paginas...

 

header("location: pagina segura.php"); -> aki nao se deve usar nomes de arquivos com espaços...tipo... pagina segunra.php, use pagina_segura.php, use um undersocre

 

outra coisa, vai na pagina segura, retira o codigoe verifica se esta logado, deixa o session start e dar um var dump no session pra ver o q a pagina segura esta recebendo...

 

//pagina_segura.php
session_start();
echo '<pre>';
var_dump($_SESSION);//pode ser tb print_r($_SESSION);

Compartilhar este post


Link para o post
Compartilhar em outros sites

deve ter mesmo algo errado ae, faz o seguinte

 

verifica o q tem na pagina segura...

 

aki

 

if(mysql_num_rows($sql)>0)
{

               session_start();

               $_SESSION['login'] = $_POST['login'];
               $_SESSION['senha'] = $_POST['senha'];
               header("location: pagina segura.php");
}

 

deveria dar erro, pois o session_start manda saida par ao navegador, ocorrendo assim erro de redirecionamento,o session start deve ser o primeiro a ser chamado, em todas as paginas...

 

header("location: pagina segura.php"); -> aki nao se deve usar nomes de arquivos com espaços...tipo... pagina segunra.php, use pagina_segura.php, use um undersocre

 

outra coisa, vai na pagina segura, retira o codigoe verifica se esta logado, deixa o session start e dar um var dump no session pra ver o q a pagina segura esta recebendo...

 

//pagina_segura.php
session_start();
echo '<pre>';
var_dump($_SESSION);//pode ser tb print_r($_SESSION);

 

 

ok Igor isso que voce esta pensando eu tambem estava pensando (se a pagina esta recebendo a pesquisa do mysql ou o post da pagina index.php), se estou tendo resposta no

if(mysql_num_rows($sql)>0)

mas o problema e que nao sei como fazer o teste desse tipo de codigo voce falo sobre o Var_dump vou ver como e que se usa esse codigo e fazer um teste.

 

Eu sei que ele testa variaveis mas no meu caso e uma condição, nao sei como colocar o var_dump nessa situação.

 

kara muito obrigado sempre voce me salvando add voce como amiga aceita ai.

 

obrigado Igor sempre voce me ajudando

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ai esta as paginas acho que voce acho que a pagina segura era a pagina logar.

de uma olhada agora, ela funciona como bloqueio de url, mas, não funciona se eu entrar com a senha e usuario correto mesmo usando o( ! )no codigo esse comando não era para agir somente se fosse diretente?

que porcaria vamos la gente vamos resolver esse pepino.

 

logar.php

 

<?php

if($_SERVER['REGUEST_METHOD'] = 'POST')

include('conectar bd.php');

$sql = mysql_query("SELECT * FROM cadastro WHERE login='{$_POST['login']}' and senha='{$_POST['senha']}'");

if(mysql_num_rows($sql)>0)
{

               session_start();

               $_SESSION['login'] = $_POST['login'];
               $_SESSION['senha'] = $_POST['senha'];
               header("location: pagina segura.php");
}
else
{
 echo('<h1>Usuario e senha Incorreto tente novamente!!!');
}
?>

 

 

 

 

pagina segura.php

 

<?php

  	session_start();
  	if(!isset($_SESSION['login']) AND !isset($_SESSION['senha']));
  	header('location:index.php');
 ?>

<html>
<body bgcolor="red">

      	<h1>conteudo restrito</h1>


</body>
<html> 

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, e nao, eu realmente keria ver se a sessao estava mandando as informacoes corretas na pagina segura...nao tem como eu ver pois você nao postou o resultado correto...

 

eu to desconfiado desta linha aki

 

$_SESSION['login'] = $_POST['login'];
               $_SESSION['senha'] = $_POST['senha'];

 

ve se armazenandoeste post em variaveis comum e usando elas nao da certo, mas nao creio q seja isto nao....mas faz o teste...

Compartilhar este post


Link para o post
Compartilhar em outros sites

session_start();

var_dump(($_SESSION['login']) AND !isset($_SESSION['senha']));

deu bool(false)o que voce me diz disso ?

 

sera que nao estou recebendo os post?

 

ou sera a respsta do (mysql_num_rows($sql)>0)?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Colocar ao invés de AND um OR.

 

Está escrito $_SERVER['REGUEST_METHOD'];

 

Evite colocar espaços em nomes de arquivos...

 

Tem ';'(ponto e vírgula) fechando o IF do !isset.

 

Só dei uma olhada por alto ;x

Compartilhar este post


Link para o post
Compartilhar em outros sites

nao foi assim q eu indiquei fazer, mas de qq forma serviu, retorna false...ou seja...nao esta recebendo dados da sessao

 

entao você da um echo no mysql num rows ou nos posts...e veja o q retorna....

Compartilhar este post


Link para o post
Compartilhar em outros sites

vou ter que rever todo o sistema ?

to ferrado vou fazer uma verificação completa e vamos ver o que da no relatório final, ai gente obrigado por tudo assim que eu tiver uma relação do que esta avendo eu posto mais.

 

vou ver no Google também para tentar não ficar enchendo a paciência de vocês.

Compartilhar este post


Link para o post
Compartilhar em outros sites

quero saber de uma coisa ligada a logica.

 

o programa deve receber primerio as informações de usuario e senha pelo post e depois se conectar ao BD e fazer a pesquisa dos dados do usuario e senha ou, primeiro ele tem que se conectar ao BD e depois receber os dados e fazer a pesquisa pelos dados usuario e senha recebidos pelo post?

Compartilhar este post


Link para o post
Compartilhar em outros sites

quero saber de uma coisa ligada a logica.

 

o programa deve receber primerio as informações de usuario e senha pelo post e depois se conectar ao BD e fazer a pesquisa dos dados do usuario e senha ou, primeiro ele tem que se conectar ao BD e depois receber os dados e fazer a pesquisa pelos dados usuario e senha recebidos pelo post?

 

nesse caso receber e conectar nao tem importancia, e sim a validacao do metodo de requisicao, pois ele pode tentar roubar link resource...so depois q validar ae você conecta e recebe, mas depois de validar, receber e validar, validar e receber, nao tem importancia, so validar a requisicao...

Compartilhar este post


Link para o post
Compartilhar em outros sites

nesse caso receber e conectar nao tem importancia, e sim a validacao do metodo de requisicao, pois ele pode tentar roubar link resource...so depois q validar ae você conecta e recebe, mas depois de validar, receber e validar, validar e receber, nao tem importancia, so validar a requisicao...

fala serio nao vaz diferenção onde eu coloco a conexao com o BD? nao faz diferenção onde coloco o post?

 

<?php

include('conectar bd.php');

 

$login = $_POST['login'];

$senha = $_POST['senha'];

 

 

$result = mysql_query("SELECT * FROM cadastro WHERE login='{$_POST['login']}' and senha='{$_POST['senha']}'");

 

$num_rows = mysql_num_rows($result);

 

echo "$num_rows";

 

?>

 

ok os codigos agora esta funcionando agora so resta a gente intender por que a session nao esta funcionando.

 

re fiz e retirei o ($_SERVER['REGUEST_METHOD'] = 'POST'), coloquei mais simples, e claro que testei cada um ate mesmo, o resultado do mysql_num_rows e esta funcionando, vou falar para voce esse negocio de programar e gostoso mas nao e nada fácil, pelo o que to vendo vai ser assim toda vida, e olha que estou no inicio e o sistema de cadastro e login e simples imagina um sistema mais complexo

 

mas estai ai o resultado, e obrigado Igor e a todos que me ajudam

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala serio nao vaz diferenção onde eu coloco a conexao com o BD? nao faz diferenção onde coloco o post?

 

você nao entendeu, você DEVE primeiro ver se o metodo de requisicao eh mesmo post ou get, isto evita brechas de seguranca, depois deste ponto, se o recebimento de $_POST/ $_GET e a inclusao/conexao do db nao difere, o importante eh primeiro validar o metodo de requisicao...

Compartilhar este post


Link para o post
Compartilhar em outros sites

você nao entendeu, você DEVE primeiro ver se o metodo de requisicao eh mesmo post ou get, isto evita brechas de seguranca, depois deste ponto, se o recebimento de $_POST/ $_GET e a inclusao/conexao do db nao difere, o importante eh primeiro validar o metodo de requisicao...

 

 

ok a forma esta resolvida estou usando post e esta recebendo corretamente as informações do usuario e senha, a pesquisa esta retornando corretamente no mysql_num_rows tanto se verdadeiro como se falso agora, nao tem mais duvidas esta ok.

 

mas quando chegamos em session e que ests complicado assim como voce tinha dito antes acredito que o erro esta em

(!isset($_SESSION["login"]) AND !isset($_SESSION["senha"]));

 

ainda estou testando o comando :

 

session_start();

$_SESSION['login'] = $_POST['login'];

$_SESSION['senha'] = $_POST['senha'];

header("location: pagina_segura.php");

 

include('conectar bd.php');

 

a pesar dele estar direcionando corretamente, mas acredito quem deve barrar caso nao tenha as informações de usuario e senha seja o (!isset($_SESSION["login"]) AND !isset($_SESSION["senha"])); por isso acredito que seja o !ISSET.

Compartilhar este post


Link para o post
Compartilhar em outros sites

 

a pesar dele estar direcionando corretamente, mas acredito quem deve barrar caso nao tenha as informações de usuario e senha seja o (!isset($_SESSION["login"]) AND !isset($_SESSION["senha"])); por isso acredito que seja o !ISSET.

 

por isso eu pedi o var dump, pra debugar...pq o $_SESSION['senha'] etc, nao esta recebendo valores nenhum...por favor, post novamente o codigo do logar e da pagina segura...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Logar.php

 

<?php

 

 

include('conectar bd.php');

 

$login = $_POST['login'];

$senha = $_POST['senha'];

 

 

$result = mysql_query("SELECT * FROM cadastro WHERE login='{$_POST['login']}' and senha='{$_POST['senha']}'");

 

$num_rows = mysql_num_rows($result);

 

//deste ponto para cima os coigos estao corretos e verificando e retornando os resultados de post e de mysql_num_rows nao mexa nessas partes

 

if(!session_start())

{

session_start();

 

$_SESSION['login'] = $_POST['login'];

$_SESSION['senha'] = $_POST['senha'];

header("location: pagina_segura.php");

}

 

?>

 

 

 

 

Pagina_segura.php

 

<?php

 

session_start();

if(!isset($_SESSION["login"]) AND !isset($_SESSION["senha"]));

 

?>

 

<html>

<body bgcolor="red">

 

<h1>conteudo restrito</h1>

 

 

</body>

<html>

 

HEEEE!!! Vida de gado povo marcado heee povo feliz

Compartilhar este post


Link para o post
Compartilhar em outros sites

Logar.php

 

<?php

 

 

include('conectar bd.php');

 

$login = $_POST['login'];

$senha = $_POST['senha'];

 

 

$result = mysql_query("SELECT * FROM cadastro WHERE login='{$_POST['login']}' and senha='{$_POST['senha']}'");

 

$num_rows = mysql_num_rows($result);

 

//deste ponto para cima os coigos estao corretos e verificando e retornando os resultados de post e de mysql_num_rows nao mexa nessas partes

 

if(!session_start())

{

session_start();

 

$_SESSION['login'] = $_POST['login'];

$_SESSION['senha'] = $_POST['senha'];

header("location: pagina_segura.php");

}

 

?>

 

 

 

 

Pagina_segura.php

 

<?php

 

session_start();

if(!isset($_SESSION["login"]) AND !isset($_SESSION["senha"]));

 

?>

 

<html>

<body bgcolor="red">

 

<h1>conteudo restrito</h1>

 

 

</body>

<html>

 

no logar.php, faz um teste, trca o header e coloca akele var_dump($_SESSION); e post o resultado...

Compartilhar este post


Link para o post
Compartilhar em outros sites

no logar.php, faz um teste, trca o header e coloca akele var_dump($_SESSION); e post o resultado...

BOOOOOOOOOOOOOOOOA igor veja só:

 

array(2) { ["login"]=> string(4) "alex" ["senha"]=> string(3) "123" }

 

ta recebendo como eu disse o problema aparentemente esta na porcaria do !ISSET

nao tem outra forma de escrever ele nao acho outra forma.

Compartilhar este post


Link para o post
Compartilhar em outros sites

e na pagina segura, logo apos ao sesion start, o q aparece...?

<?php

 

session_start();

var_dump(!isset($_SESSION["login"]) AND !isset($_SESSION["senha"]));

 

?>

ERROR: bool(false)

mas a pagina carrega.

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.