Dúvida

1. Dúvida

Vinicius Medina
viniciusmedina

(usa Fedora)

Enviado em 24/10/2012 - 08:16h

Gente, não sei se é PHP ou se a conexão com o banco, mas como não acusa o or die acredito que tenha algo errado na programação mesmo.

Tenho uma página que á pagina de login para o sistema. Quando coloco usuário e senha e clico em entrar, não acontece nada. Nem erro de conexão, nem erro de senha, fica na mesma página.

O código da página é:

<?
if($logar) {
if($usuario=="admin" AND $senha=="lanza") {
setcookie("sessid", md5($usuario));
echo "<script>window.location='./imoveis.php';</script>";
} else {
echo "<script>window.location='./index.php';</script>";
$acesso="falha";
}
}
if(!$sessid OR $acesso=="falha") {
?>
<html>
<head>
<title>PAINEL DE CONTROLE</title>
<link rel="stylesheet" href="./css/estilo.css">
</head>
<body>
<div id="login">
<form action="./index.php" method="post">
Usuário: <input type="text" name="usuario"><br>
Senha: <input type="password" name="senha"><br>
<input type="hidden" name="logar" value="1">
<input type="submit" value="ENTRAR">
</form>
<center><?if($acesso=="falha"){?><font color="#ff0000">Falha no login</font><?}?></center>
</div>
</body>
</html>
<?} else {?>
<script>window.location='./imoveis.php';</script>
<?}?>

Desde já agradeço.


  


2. Re: Dúvida

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 24/10/2012 - 08:25h

cadê a conexão com o banco de dados ?


3. Re: Dúvida

Diego Lepera
d_lepera

(usa Linux Mint)

Enviado em 24/10/2012 - 09:41h

Cara, você não está consultando nada no banco de dados (pelo menos nada no que você postou aqui).

Pelo código que está acima você precisa colocar isso aqui:
$logar = addslashes($_POST['logar']);
$usuario = addslashes($_POST['usuario']);
$senha = addslashes($_POST['senha']);

ANTES DE: if($logar){

A forma que está aí não está incorreta, porém depende de configuração do PHP no php.ini para funcionar corretamente. Fazendo da maneira que mostrei vai funcionar em qualquer servidor, independente da configuração do PHP.

e no lugar de if(!$sessid OR $acesso=="falha") aconselho usar if(!$sessid || $acesso=="falha")
;)


4. Re: Dúvida

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 24/10/2012 - 09:51h

exatamente como o amigo acima disse e mais para complementar a função utilizada addslashes protege contra SQL injection, pois sem isso bastaria colocar no campo de login.

'or '1'='1' -- '
'or '1'='1' ({ '
'or '1'='1' /* '


Isso faz logar como admin do sistema web feito em PHP com falha de segurança.


5. Re: Dúvida

Vinicius Medina
viniciusmedina

(usa Fedora)

Enviado em 24/10/2012 - 13:11h

Bom pessoal, agradeço as respostas. Mas ainda não chama nada. Fica parado como se fosse uma página estática.

Acusa um erro aqui;
<center><? if($acesso=="falha"){?><font color="#ff0000">Falha no login</font><? }?></center>


6. Re: Dúvida

Diego Lepera
d_lepera

(usa Linux Mint)

Enviado em 24/10/2012 - 14:21h

viniciusmedina escreveu:

Bom pessoal, agradeço as respostas. Mas ainda não chama nada. Fica parado como se fosse uma página estática.

Acusa um erro aqui;
<center><? if($acesso=="falha"){?><font color="#ff0000">Falha no login</font><? }?></center>


Cara, vamos fazer uma revisão na parte do PHP:

<?
// ADICIONE ISTO
$logar = addslashes($_POST['logar']);
$usuario = addslashes($_POST['usuario']);
$senha = addslashes($_POST['senha']);

if($logar) {

// Altere essa linha para if($usuario=="admin" && $senha=="lanza") {
if($usuario=="admin" AND $senha=="lanza") {
setcookie("sessid", md5($usuario));
echo "<script>window.location='./imoveis.php';</script>";
} else {

/*
* NESSA PARTE TEM UM PEQUENO ERRO DE LÓGICA, POIS PRIMEIRO VOCÊ
* DIRECIONA PARA A PÁGINA index.php E DEPOIS TENTA SETAR UMA VARIÁVEL.
* PORÉM COMO VOCÊ 'SAI' DA PÁGINA DE LOGIN A VARIÁVEL NEM CHEGA A SER
* USADA.
*/
echo "<script>window.location='./index.php';</script>";
$acesso="falha";
}
}

// Altere essa linha para if(!$sessid || $acesso=="falha")
if(!$sessid OR $acesso=="falha") {
?>

Umas dicas de boas práticas:
- Ao entrar em um bloco php procure utilizar a forma completa: <?php ?>
- Sempre de 1 espaço entre os delimitadores php: Ex.: Certo: <?php echo "Olá mundo!"; ?>, errado: Certo: <?phpecho "Olá mundo!";?>


7. Re: Dúvida

Vinicius Medina
viniciusmedina

(usa Fedora)

Enviado em 26/10/2012 - 12:53h

Agradeço muito a atenção.
Gostaria de informar que o painel já loga no sistema. O que não acontece é que seu eu digito qualquer senha que não a correta ele fica parado e não aparece falha.

Eu não sou o desenvolvedor, sou apenas o responsável pela hospedagem, por isso a dificuldade de entender algumas coisas. Acontece que a linguagem PHP é antiga se comparada com a do servidor, por isso os erros acredito.

Valeu mesmo pelas dicas de boas práticas, embora não programe acho importante conhecer elas.

Abraços.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts