fsphp 0 Denunciar post Postado Abril 28, 2005 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
fsphp 0 Denunciar post Postado Abril 28, 2005 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 46Alguém desvenda isso? :huh: Compartilhar este post Link para o post Compartilhar em outros sites
Fabyo 66 Denunciar post Postado Abril 28, 2005 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 <?php session_start(); if (isset($_SESSION["login"]) and isset($_SESSION["senha"])) { $login_cliente = $_SESSION["login"]; $senha_cliente = $_SESSION["senha"]; include "include.php"; mysql_connect($hostname, $username, $password); mysql_select_db($database); $confere_login = mysql_query("SELECT count(*) as total FROM baby_login_senha WHERE login_cliente = '$login_cliente' AND senha_cliente = '$senha_cliente'"); $total = mysql_result($re, 0, "total"); if ($total == 0) { echo "Você não fez o login!"; exit; } else { echo "Área exclusiva da Administração! "; } } else { echo "Você não fez o login!"; exit; } ?> Compartilhar este post Link para o post Compartilhar em outros sites
fsphp 0 Denunciar post Postado Abril 28, 2005 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
Fabyo 66 Denunciar post Postado Abril 28, 2005 você deve estar errando em alguma coisa posta ai o script pra gente ver Compartilhar este post Link para o post Compartilhar em outros sites
fsphp 0 Denunciar post Postado Abril 28, 2005 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
fsphp 0 Denunciar post Postado Abril 29, 2005 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
fsphp 0 Denunciar post Postado Maio 2, 2005 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