Ir para conteúdo

POWERED BY:

Arquivado

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

fsphp

Valida sessão

Recommended Posts

Oi pessoal,

 

Tenho um script de login e senha que está com alguma falha que eu nào estou conseguindo detectar.

 

quando eu faço o login, vem a mensagem "você não efetuou o login!" que está no echo do script.

 

Aí eu dou um BACKSPACE para retornar para a página de login, clico novamente no botão submit e, nessa segunda tentativa ele aceita e me remete para a página interna.

 

Abaixo está o código, quem descobre a falha?

 

Valeu galera.

 

<?php

session_start();

                if(isset($_SESSION["login"]));

                $login_cliente = $_SESSION["login"];

                if(isset($_SESSION["senha"]));

                $senha_cliente =$_SESSION["senha"];

 

                if(!(empty($login_cliente)) OR (empty($senha_cliente)));

                {

                    include "include.php";

                            mysql_connect($hostname, $username, $password);

                            mysql_select_db($database);

                    $confere_login = mysql_query("SELECT * FROM baby_login_senha

                                              WHERE login_cliente = '$login_cliente'

                                              AND senha_cliente = '$senha_cliente'");

 

                    $dados = mysql_fetch_array($confere_login);

                      $resultado = mysql_num_rows($confere_login);

                      //                      echo "$login_cliente - $senha_cliente";

                      if($resultado==0)

                      {

                      echo "<b>Você não fez o login!</b>";

                      exit;

                      }

                      $senha = $dados[1];

                      if($senha_cliente != $senha)

                            {

                              echo "Você não efetuou o login. A senha não confere!";

                              exit;

                              }

                              else

                              {

                              echo "<b>Área exclusiva da Administração! $dados[2]!</b>";

                              }

                }

 

 

?>

<_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

No Mozilla, eu retornava com o Backspace para a página anterior de login e clicava novamente no submit e ele aceitava.Fui testar no IE e ele não voltava para a página anterior, ele processava a informação, "piscava" rapidamente uma página com uma mensagem e mantinha-se na mesma página com a informação de que "Você não efetuou o login".eu dei um print screen para ver qual a mensagem da página "piscante" e ví o seguinte:

Warning: session_start(): Cannot send session cookie - headers already sent by (output startedat /home/.........../baby_confere_login_senha.php:7)in /home/..............baby_confere_login_senha.php on line 46Warning: session_start(): Cannot send session cache limiter - headers already sent (output startedat /home/...............baby_confere_login_senha.php:7in /home/............../baby_confere_login_senha.php on line 46

Alguém desvenda isso? :huh:

Compartilhar este post


Link para o post
Compartilhar em outros sites

só uma dica seu login ta sem segurança nenhum ,proteja ele contra sql injection e tags html

 

seu script eu modifiquei umas coisas testa ai:

 

PHP
  1. <?php
  2. session_start();
  3. if (isset($_SESSION["login"]) and isset($_SESSION["senha"])
  4. {
  5. $login_cliente = $_SESSION["login"];
  6. $senha_cliente = $_SESSION["senha"];

  7. include "include.php";
  8. mysql_connect($hostname, $username, $password);
  9. mysql_select_db($database);
  10. $confere_login = mysql_query("SELECT count(*) as total FROM baby_login_senha
  11. WHERE login_cliente = '$login_cliente'
  12. AND senha_cliente = '$senha_cliente'");

  13. $total = mysql_result($re, 0, "total");
  14. if ($total == 0) 
  15. {
  16. echo "Você não fez o login!";
  17. exit;
  18. }
  19. else 
  20. {
  21. echo "Área exclusiva da Administração! ";


  22. else
  23. {
  24. echo "Você não fez o login!";
  25. exit;
  26. }
  27. ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não funcionou, não logou, e quando eu dei o BACKSPACE, voltrando a página e clicando no submit, veio a sefuinte mensagem:

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in /home/httpd/vhosts/babybeefrondaiyat.com.br/httpdocs/babybeef/valida_sessao.php on line 16Você não fez o login!

PS: COLOQUEI O sql_injection() na pagina que está fazendo o login, e não na que está validando a sessão:

<html><head><title>Documento sem título</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body><?php$login_cliente = $_POST['login_cliente'];$senha_cliente = $_POST['senha_cliente'];function anti_injection($string) { $string = str_replace("update", "", $string); $string = str_replace("UPDATE", "", $string); $string = str_replace("sum", "", $string); $string = str_replace("SUM", "", $string); $string = str_replace("insert", "", $string); $string = str_replace("INSERT", "", $string); $string = str_replace("select", "", $string); $string = str_replace("SELECT", "", $string); $string = str_replace("delete", "", $string); $string = str_replace("DELETE", "", $string); $string = str_replace("create", "", $string); $string = str_replace("CREATE", "", $string); $string = str_replace("#", "", $string); $string = str_replace("=", "", $string); $string = str_replace("--", "", $string); $string = str_replace("*", "", $string); $string = str_replace(";", "", $string); $string = trim($string); $string = strip_tags($string); $string = addslashes($string); return $string; }foreach($_POST as $campo => $valor) { $$campo = anti_injection($valor); // Aqui, os dois sifrões na frente de $$campo, vai }/* # # # #  Banco de Dados = baby_login_senha# Tabela = login_senha# Campos: login_cliente VARCHAR (8), senha_cliente VARCHAR (40)# Primary Key (login_cliente)# */include "include.php";$con = mysql_connect($hostname, $username, $password);$res = mysql_select_db($database);$confere_login = mysql_query("SELECT * FROM baby_login_senha        WHERE login_cliente='$login_cliente'")        or die("Não foi possível efetuar o Login");//$senha_cliente = sha1($senha_cliente);$resultado = mysql_num_rows($confere_login); if($resultado == 0)  {  echo "<html><body>";  echo "<p align=\"center\"><b>O LOGIN está incorreto, favor verificar!</b></p>";//  echo "<p align=\"center\"><a href=\"pagina_efetua_login.htm\">Voltar</a></p>";  die("<p align=\"center\"><b>Não foi possível efetuar o Login</b><p>");  echo "</body></html>";  }  if ($senha_cliente != mysql_result($confere_login, 0, "senha_cliente"))  {  echo "<html><body>";  echo "<p align=\"center\"><b>A SENHA está incorreta!</b></p>";//  echo "<p align=\"center\"><a href=\"pagina_efetua_login.htm\">Voltar</a></p>";  echo "</body></html>";  }  else//($login_cliente == 1)    {                session_start();    $_SESSION['login'] = $login_cliente;    $_SESSION['senha'] = $senha_cliente;    print "<script>location='./baby_admin.php'</script>";    }//*/?></body></html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

01- Eu coloquei igual você me passou para testar. Qual você quer que eu poste?02- Acabei de editar o post anterior falando do sql_injection, você viu? Está bem assim?

Compartilhar este post


Link para o post
Compartilhar em outros sites

01- Eu coloquei igual você me passou para testar. Qual você quer que eu poste?

 

02- Acabei de editar o post anterior falando do sql_injection, você viu? Está bem assim?

<{POST_SNAPBACK}>

Não está funcionando, parece que está com problema no retorno da query. <_<

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora funcionou:

session_start();if(isset($_SESSION['login']))  {  $login_cliente = $_SESSION['login'];  }if(isset($_SESSION['senha']))  {  $senha_cliente =$_SESSION['senha'];  }if(!empty($login_cliente) AND !empty($senha_cliente))  {  include "include.php";  mysql_connect($hostname, $username, $password);  mysql_select_db($database);  $confere_login = mysql_query("SELECT * FROM baby_login_senha                                WHERE login_cliente = '$login_cliente'");  $dados = mysql_fetch_array($confere_login, MYSQL_BOTH);  $resultado = mysql_num_rows($confere_login);//                      echo "$login_cliente - $senha_cliente";  if($resultado == 0)      {      echo "<b>Você não fez o login!</b>";      exit;      }//                      $senha = $dados[1];      if($senha_cliente != $dados["senha_cliente"])        {        echo "Você não efetuou o login. A senha não confere!";        exit;        }        else            {            echo "<b>Área exclusiva da Administração!</b>";// $dados[2]!            }  }  else      {      echo "<b>Você não efetuou o Login!</b>";      exit;      }

:) PS: COLOQUEI os scripts de segurança (anti_injection()) na pagina que está fazendo o login, também dá certo, né? :mellow:

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.