Ir para conteúdo
Fórum Script Brasil
  • 0

problemas com cookies


Diogo Freitas

Pergunta

boas tardes,

modifiquei o meu sistema de login e senha. passei a usar cookies em vez de sessions.

mas tou com um problema. quando o user tenta fazer a validação o browser tenta entrar na página solicitada mas não consegue e fica permanentemente a tentar.

penso k tereri de terminar o outpu started e depois iniciar uma nova sessão.

como posso fazer isso?

Link para o comentário
Compartilhar em outros sites

Posts Recomendados

  • 0

oi marcos...

sim..faz refresh consecutivo para tentar entrar

tenho uma página onde os users digitam a senha e pass. o formulario dessa página direcciona para a página que confirma o login.

<?
include "config.php"; //inclui o arquivo de configurações

$db   = mysql_connect ($host, $login_db, $senha_db); //conecta ao mysql
$basedados = mysql_select_db($database); //conecta a base de dados

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

$confirmacao = mysql_query("SELECT * FROM user_empresa WHERE login LIKE '%".$_POST['login']."%' AND senha LIKE '%".$_POST['senha']."%'"); //verifica se o login e a senha conferem
$contagem = mysql_num_rows($confirmacao); //traz o resultado da pesquisa acima

$x = mysql_fetch_assoc($confirmacao);

if ( $contagem == 1 ) {
  setcookie ("login", $login); //grava o cookie com o login
  setcookie ("senha", $senha); //grava o cookie com a senha
  echo "<script>window.location=('empresa_user.php?id=".$x['id']."')</script>";
  echo "Usuário logado."; //se a senha digitada está correta, mostra a mensagem
  } else {
  echo "Login ou senha inválidos. <a href=java script:window.history.go(-1)>Clique aqui para voltar.</a>"; //se a senha está incorreta mostra essa mensagem
  }
?>
...esta página deveria levar a outra página. Agora, se eu colocar um if de validação na página secreta dá erro...se não colocar entra correctamente.
<?
require "confirmar_login_empresa.php";

if ( $contagem == 1 ) {
//aqui deixe aberto, pois iremos fechar somente no final da página
  ?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="shortcut icon" href="../../../gifs/logo.ico" />
<body>

....cnbjkchsdcghcgsjcshdcjsdchjs

</body>
</html>
    <?
  } else {
    echo "Você não está logado."; //aqui que terminamos o IF que iniciamos na página
}
  ?>

muito obrigado desde já

Link para o comentário
Compartilhar em outros sites

  • 0

o erro:

Warning: Cannot modify header information - headers already sent by (output started at /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php:6) in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 31

Warning: Cannot modify header information - headers already sent by (output started at /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php:6) in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 32

a linha 31 e 32 corresponde a:

setcookie ("login", $login); //grava o cookie com o login
  setcookie ("senha", $senha); //grava o cookie com a senha

obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Só uma dúvida, você procurou sobre esse erro aqui mesmo no fórum? Já respondi sobre ele várias vezes, enfim, pela culhonésia vez, esse erro é porque você está tentando gravar um cookie após enviar o cabeçalho para o navegador, como resolver? Não envie nada para o nevagador antes de tentar criar o cookie, um simples espaço em branco já ferra tudo.

Link para o comentário
Compartilhar em outros sites

  • 0

Eserra, eu sei que voce já me ajudou com isso....para alem disso eu já pesquisei no forum e no google.eu entendi os problemas.

estes problemas podem advir de um espaço em branco, de enviar uma header anterior e de outras coisas (li num artigo), o problema é que não encontro o erro no meu script.

mas fazer oke?vou tentando encontrar.lol

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

<?
include "config.php"; //inclui o arquivo de configurações
$db   = mysql_connect ($host, $login_db, $senha_db); //conecta ao mysql
$basedados = mysql_select_db($database); //conecta a base de dados

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

$confirmacao = mysql_query("SELECT * FROM user_empresa WHERE login LIKE '%".$_POST['login']."%' AND senha LIKE '%".$_POST['senha']."%'"); //verifica se o login e a senha conferem
$contagem = mysql_num_rows($confirmacao); //traz o resultado da pesquisa acima

$x = mysql_fetch_assoc($confirmacao);

if ( $contagem == 1 ) {
  setcookie ("login", $login); //grava o cookie com o login
  setcookie ("senha", $senha); //grava o cookie com a senha
  echo "<script>window.location=('empresa_user.php?id=".$x['id']."')</script>";
  echo "Usuário logado."; //se a senha digitada está correta, mostra a mensagem
  } else {
  echo "Login ou senha inválidos. <a href=java script:window.history.go(-1)>Clique aqui para voltar.</a>"; //se a senha está incorreta mostra essa mensagem
  }
?>

onde está o erro?

Link para o comentário
Compartilhar em outros sites

  • 0

$confirmacao = mysql_query("SELECT * FROM user_empresa WHERE login LIKE '%".$_POST['login']."%' AND senha LIKE '%".$_POST['senha']."%'"); //verifica se o login e a senha conferem
não deveria ser assim?
$confirmacao = mysql_query("SELECT * FROM user_empresa WHERE login = '".$_POST['login']."' AND senha ='".$_POST['senha']."'"); //verifica se o login e a senha conferem

e agora, qual erro ta acusando?

Link para o comentário
Compartilhar em outros sites

  • 0

não sei se seria esse o erro.

contudo, eu coloquei esse código. o problema é que ele não loga, diz sempre que o login ou a senha estão errados.

porque será?

já agora, não sei se voce reparou mas o erro que me dava anteriormente era o das headers, o famosos

cannot modified header information.

as linhas de erro eram as seguintes:

setcookie ("login", $login); //grava o cookie com o login
  setcookie ("senha", $senha); //grava o cookie com a senha

abraço

Editado por Diogo Freitas
Link para o comentário
Compartilhar em outros sites

  • 0

setcookie, session_start e header não podem ter espaço antes deles, tipo uma string mesmo que vazia.

Parece ser esse o problema, verifique se não há espaço antes de <? e poste o arquivo config.php

verifique tambem nele se não tem nenhum espaço (geralmente echo""; print(); ou algum espaço antes de

<?).

PS.: os seguintes postes seus são Floods (tipo Upper) isso é proibido, eu tambem to com um tópico e uma duvida urgente e nem por isso floodei, você tem de ter paciencia e respeitar as regras ;)

pf...alguém me pode ajudar?

obrigados

qual o erro que aparece?

em qual linha?

Link para o comentário
Compartilhar em outros sites

  • 0

me desculpe hipnos.:(

relativamente ao espaço em branco, isso eu já sabia, porem não consegui encontrar erro nem espaços em branco. veja ai.

config.php

<?
$host  = "localhost"; //endereço do seu servidor MySQL
$database = "emprego"; //o database que conterá sua tabela, muitas vezes seu próprio login
$tabela  = "user_empresa"; //o nome de sua tabela
$login_db = "emprego"; //login usado no MySQL
$senha_db = "240490"; //senha usado no MySQL
?>
e confrimar_login.php
<title>:: Uttil - &eacute; mesmo uttil... - emprego ::</title>
<style>
body{
text-align:center;
color:#999999;
}
a.link , a.hover{color:#333333; font-size:16px;}
a.visited{color:#999999;}
</style>
</head>
<body>
<?
include "config.php"; //inclui o arquivo de configurações
$db   = mysql_connect ($host, $login_db, $senha_db); //conecta ao mysql
$basedados = mysql_select_db($database); //conecta a base de dados

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

$confirmacao = mysql_query("SELECT * FROM user_empresa WHERE login = '".$_POST['login']."' AND senha ='".$_POST['senha']."'"); //verifica se o login e a senha conferem
$contagem = mysql_num_rows($confirmacao); //traz o resultado da pesquisa acima

$x = mysql_fetch_assoc($confirmacao);

if ( $contagem == 1 ) {
  setcookie ("login", $login); //grava o cookie com o login
  setcookie ("senha", $senha); //grava o cookie com a senha
  echo "<script>window.location=('empresa_user.php?id=".$x['id']."')</script>";
  echo "Usuário logado."; //se a senha digitada está correta, mostra a mensagem
  } else {
  echo "Login ou senha inválidos. <a href='../emprego.php'>Clique aqui para voltar.</a>"; //se a senha está incorreta mostra essa mensagem
  }
?>
</body>
</html>

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

coloquei um error_reporting para verificar que erros me estavam dando. bem, está me dando uma notice. parece que o código php não está a conseguir pegar no login e na senha colocados pelo user na página anterior, em campo de texto.

Notice: Undefined index: login in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 18

Notice: Undefined index: senha in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 19

Notice: Undefined index: login in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 21

Notice: Undefined index: senha in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 21

o que será?

o formulário:

<form name="login" method="post" action="empresas/confirmar_login_empresa.php">
Login: <input name="login" type="text" id="login">
<BR>
Senha: <input name="senha" type="password" id="senha">
<BR>
<input name="entrar" type="submit" id="entrar" value="Entrar"><br />
<a href="#" onclick="MM_openBrWindow('empresas/recuperar_senha_empresa_form.html','','width=300,height=120')">Esqueceu
a senha?<br />
</a> <a href="empresas/registar_empresa.php">Cadastre-se</a>
</form>

Link para o comentário
Compartilhar em outros sites

  • 0

Este código ai embaixo não vai funcionar. Note que existem tags html que são enviadas antes da intrução setcookie.

confrimar_login.php

<title>:: Uttil - é mesmo uttil... - emprego ::</title>                       Aqui você já enviou o header e não pode mais nodifica-lo
<style>
body{
text-align:center;
color:#999999;
}
a.link , a.hover{color:#333333; font-size:16px;}
a.visited{color:#999999;}
</style>
</head>
<body>
<?
include "config.php"; //inclui o arquivo de configurações
$db   = mysql_connect ($host, $login_db, $senha_db); //conecta ao mysql
$basedados = mysql_select_db($database); //conecta a base de dados

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

$confirmacao = mysql_query("SELECT * FROM user_empresa WHERE login = '".$_POST['login']."' AND senha ='".$_POST['senha']."'"); //verifica se o login e a senha conferem
$contagem = mysql_num_rows($confirmacao); //traz o resultado da pesquisa acima

$x = mysql_fetch_assoc($confirmacao);

if ( $contagem == 1 ) {
  setcookie ("login", $login); //grava o cookie com o login                                         Esta linha tem que estar antes das tags HTML.
  setcookie ("senha", $senha); //grava o cookie com a senha
  echo "&lt;script>window.location=('empresa_user.php?id=".$x['id']."')</script>";
  echo "Usuário logado."; //se a senha digitada está correta, mostra a mensagem
  } else {
  echo "Login ou senha inválidos. <a href='../emprego.php'>Clique aqui para voltar.</a>"; //se a senha está incorreta mostra essa mensagem
  }
?>
</body>
</html>

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

hmm..não.infelizmente não é isso. o erro que dá é

Notice: Undefined index: login in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 18

Notice: Undefined index: senha in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 19

Notice: Undefined index: login in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 21

Notice: Undefined index: senha in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 21

e continua a dar.:(

o que será? já tentei colocar

if(!isset($senha))
$senha = $_POST['senha'];
em vez de
$senha = $_POST['senha'];

mas tb não dá

Link para o comentário
Compartilhar em outros sites

  • 0

agora aparece isto:

Notice: Undefined index: login in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 7

não veio a senha

Notice: Undefined index: login in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 19

Notice: Undefined index: senha in /srv/www/vhosts/uttil.com/httpdocs/ficheiros/html_php/emprego/empresas/confirmar_login_empresa.php on line 19

Login ou senha inválidos. Clique aqui para voltar.Você não está logado.

sinceramente estou a achar muito estranho

Link para o comentário
Compartilhar em outros sites

  • 0

estou, veja ai:

<form name="login" method="post" action="empresas/confirmar_login_empresa.php">
Login: <input name="login" type="text" id="login">
<BR>
Senha: <input name="senha" type="password" id="senha">
<BR>
<input name="entrar" type="submit" id="entrar" value="Entrar"><br />
<a href="#" onclick="MM_openBrWindow('empresas/recuperar_senha_empresa_form.html','','width=300,height=120')">Esqueceu
a senha?<br />
</a> <a href="empresas/registar_empresa.php">Cadastre-se</a>
</form>

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...