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

Cookies Atrasados


Guest --sepphiroth --

Pergunta

Guest --sepphiroth --

é o seguinte gente, eu criei uma pagina index.php, que ao iniciar, a primeira coisa que faz é gravar os cookies de acordo com os dados (se foram enviados)m caso seja o primeiro acesso, ela devera escrever VISITANTE...

segue o codigo:

<?php
##########################################################
### está logado? #########################################
include ("arquivo/config.php");
//Dados vieram do formulario?
if (isset($_POST['submit']))
{ //se sim...

// campos LOGIN e SENHA foram completados?
if(!$_POST['login'] | !$_POST['senha']) { //se não..
die('Complete todos os campos!'); //gera erro...
}
else
{
//procura no BANCO se existe o login digitado no formulario.
$check = mysql_query("SELECT * FROM usuarios WHERE login = '".$_POST['login']."'")or die(mysql_error());

//Quantos dados voltaram do banco?
$check2 = mysql_num_rows($check);

//se não voltar nada do banco...
if ($check2 == 0) {
die('Este usuario não está cadastrado! <a href=index.php?ses=principal&pag=login.php>confira os dados.</a>
<a href=index.php?ses=principal&pag=cadastro.php>Ou clique aqui para Registrar-se</a>');
}
else
{
while($info = mysql_fetch_array( $check )) //para cada resultado que voltou do banco...
{
$_POST['senha'] = stripslashes($_POST['senha']);
$info['senha'] = stripslashes($info['senha']);
$_POST['senha'] = md5($_POST['senha']); //gere a senha em MD5...

//Se a senha estiver errada, gere erro!
if ($_POST['senha'] != $info['senha']) {
die('A senha está incorreta, <a href=index.php?ses=principal&pag=login.php>tente novamente!</a>.');
}
else
{
// Se estiver correta... gere Cookie...
$_POST['username'] = stripslashes($_POST['username']);
$hour = time() + 3600;
setcookie(rnwl, $_POST['login'], $hour);
setcookie(rnwp, $_POST['senha'], $hour);

}//fim da verificação da senha
}//fim dos resultados do banco
}//fim do 'se voltar algo do banco'
}//fim do se os campos foram completados no formulario
}//fim do "se os dados vieram de um formulario"

####### Começa a verificar os dados dos cookies #########

//Existe Cookie com login?
if(isset($_COOKIE['rnwl']))
{
//Existe Cookie com senha?
if(isset($_COOKIE['rnwp']))
{
$login = $_COOKIE['rnwl'];
$pass = $_COOKIE['rnwp'];
$check = mysql_query("SELECT * FROM usuarios WHERE login = '$login'")or die("Problemas com o login, verifique!");
//buscou no banco os usuarios = do cokkie
while($info = mysql_fetch_array($check))
{
//se existiu algum, a senha confere?
if($pass == $info['senha'])
{
$hour = time() + 3600;
setcookie(rnwa, 1, $hour);
}
}
}
else
{
//existe o cookie login mas n o da senha, será tratado como visitante.
}
}
else //n existe cookie com login, será tratado como visitante
{
//definições para visitante
$hour = time() + 3600; // + 1 hora
$past = time() - 100; // - 1 segundo (passado)
setcookie(rnwl, Visitante, $hour); //escreve cookie com login="Visitante"
setcookie(rnwp, gone, $past); //Destroi cookie com senha
setcookie(rnwa, 2, $hour); //define permissão secundaria (de visitante apenas),
//para sobrescrever qualquer outra existente.
}
//fim das verificações, setar dados:
$usuario = $_COOKIE['rnwl']; //recebe valor do LOGIN do cookie
$senha = $_COOKIE['rnwp']; //recebe valor da SENHA do cookie
$permissao = $_COOKIE['rnwa']; //recebe valor da PERMISSÃO do cookie
// permissao = 0 => admin
// permissao = 1 => usuario
// permissao = 2 => visitante
### está logado? #########################################
##########################################################
?>
<html>
<head>
<?php
include("arquivo/cabecalho.html");
include("arquivo/abrir.php");
?></head>
<body bgcolor="#FFFFFF" text="#000000" link="#333333" vlink="#666666" alink="#FF0000" leftmargin="0" topmargin="0" bottommargin="0" marginwidth="0" marginheight="0">
<table width="775" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#000000" id="mestre" >
<tr>
<td width="245" height="134" align="left" valign="top" nowrap background="imagens/background/background1.jpg">&nbsp;

</td>
<td width="530" height="134" colspan="2" align="left" valign="top" nowrap background="imagens/background/background2.jpg">
<!----------------------------------------------->
<!--------------TABELA DE LOGIN------------------>
<!----------------------------------------------->
<table class="negrito" width="100%" height="95" border="0" align="left" cellpadding="0" cellspacing="3">
<tr>
<td height="65" align="left" valign="middle" nowrap>&nbsp;</td>
</tr>
<tr>
<td height="30" align="left" valign="top" nowrap class="negrito">
<form action="index.php" method="post" name="form1" class="custominput">
Login:
<input name="login" type="text" class="custominput" accesskey="l" size="15" maxlength="12">
Senha:
<input name="senha" type="password" class="custominput" accesskey="l" size="15" maxlength="12">

<input name="submit" type="submit" value=" Ok " class="custombutton">
</form>

Seja bem vindo <?php echo ("$usuario") ?>, caso tenho uma conta fa&ccedil;a o login
ou Registre-se!<br>
</td>
</tr>
</table>
<!----------------------------------------------->
<!--------------TABELA DE LOGIN------------------>
<!----------------------------------------------->
</td>
</tr>
<tr>
<td valign="top" nowrap >
<!------------------------------------------------------------------------>
<!-----------------------------MENU--------------------------------------->
<!------------------------------------------------------------------------>
<!------------------------------------------------------------------------>
<!-----------------------------MENU--------------------------------------->
<!------------------------------------------------------------------------>
</td>
<td height="750px" class="corpo" width="521" align="left" valign="top" nowrap bordercolor="#666666" bgcolor="#FFFFFF">
<br><?php include ("$abrir") ?><br><br>
</td>
<td width="9" align="right" valign="top" nowrap background="imagens/background/background4.gif">&nbsp;</td>
</tr>
<tr>
<td class="negrito" width="245" height="30" align="center" valign="bottom" nowrap bgcolor="#000000">
---
</td>
<td class="negrito" width="530" height="30" colspan="2" align="center" valign="bottom" nowrap bgcolor="#000000">
...
</td>
</tr>
</table>[/codebox]

a parte vermelha é a verificação do cookie, o negrito um pouco abaixo é onde escreve o usuario...

acontece o seguinte

ao entrar na pagina: escreve -> *NADA*

recarrega pagina/link: escreve -> Visitante

faz login: escreve -> Visitante

recarrega 1 vez depois do login: escreve -> *NOME DO USUARIO*

como faço pra n precisar estas "recargas" e sem usar HEADERS??????

desde já agradeço ;)

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0

Isso deve ser natural da função, pois na documentação do PHP aparece escrito o seguinte:

Once the cookies have been set, they can be accessed on the next page load with the $_COOKIE or $HTTP_COOKIE_VARS arrays. Note, superglobals such as $_COOKIE became available in PHP » 4.1.0. $HTTP_COOKIE_VARS has existed since PHP 3. Cookie values also exist in $_REQUEST.

Ou seja, depois que os cookies foram definidos, poderão ser acessador na próxima página com $_COOKIE ou $_HTTP_COOKIE_VARS e tal.

Significa que eles não funcionarão na mesma página em que foram criados.

O jeito é criar um script que os gere de acordo com os resultados e depois redirecione o navegador para a página inicial!

Link para o comentário
Compartilhar em outros sites

  • 0

ah sim, por isso funcionou quando coloco os headers, porque vai uma pagina adiante...

existe algum meio pra que assim que criar os cookies eu carregar a mesma pagina? por exemplo, o usuario estah longe em uma pesquisa de topicos, mas quando vai postar lembra que n estah logado, ele então loga e vai voltar pra index..... tem como eu guardar o lugar que ele estava e redireciona-lo?

Link para o comentário
Compartilhar em outros sites

  • 0

Uma solução seria utilizar o HTTP_REFERER para descobrir de onde o cara veio antes de chegar na página de login, com essa informação você pode redirecioná-lo para onde ele estava antes de pensar em fazer login, é claro que você vai ter que tratar os resultados desse HTTP_REFERER para garantir que, por exemplo, se ele estava em outro site não seja redirecionado para esse outro site depois de fazer login no seu sistema...

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...