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

Trabalhando Com Cookies ...


Tavinho

Pergunta

biggrin.gif Ola galera .. !!

Bom, minha dúvida é a seguinte:

Eu tenho o seguinte código que cria um cookie :

<script>
var nome = prompt("Qual o seu nome?")
document.cookie = nome;
document.write("Olá ",nome,", seja bem vindo(a)!")
</script> 

E pra recuperar as informações em outras páginas eu chamo assim:
<script>
var nome = document.cookie
document.write("Olá ",nome,", seja bem vindo(a)!")
</script> 

Até este ponto legal !!! Funciona perfeito !!!

Mas o problemas surgiu, quando tentei adicionar mais informações a este cookie:

Vamos pegar o exemplo da idade, e supondo que eu quisesse mostrar além do nome , também a idade, eu tentei colocar estas informações, na hora da criação do cookie, dava tudo certo e eu conseguia pegar as informações e imprimir na página, mas na hora de recuperar elas em outra página, hora recuperava 2 vezes o nome, hora 2 vezes a idade ...

Alguém poderia me dizer o que devo fazer para adicionar outras informações na criação do cookie e recupera-las em outra página ????

Desde já agradeço a atenção ...

Um abraço

falou .. !!! tongue.gif

Link para o comentário
Compartilhar em outros sites

8 respostass a esta questão

Posts Recomendados

  • 0

Tavinho,

é importante em um cookie q se use as funções escape() e unescape() para codificar e decodificar as informações escritas.

Um cookie é composto por várias informações divididas em três grupos. O nome, para designar o nome do cookie, o conteúdo, para designar o conteúdo de cada "parte" do cookie e o valor "expire" que especifica quanto tempo o cookie ficará no computador do visitante.

Assim, um cookie pode ter uma "parte" chamada nome com a informação Tavinho e data de expiração para daqui a três meses e outra chamada sexo com a informação masculino. Faz-se isso assim:

var hj= new Date();
var expire= new Date();
var cont= "conteúdo";
var nome= "nome";
expire.setTime(hj.getTime() + 1000*60*60*24*365);  //tempo em milissegundos equivalente a um ano (hoje + 31536000000ms)
document.cookie = nome + "=" + escape(cont) + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()));

Assim, se você tiver o requisito idade, a variável nome deve ter o valor "idade" e será então criado outro valor no cookie.

Mas se "nome" ou "idade" for modificado pelo usuário, o cookie não criará um novo valor, e sim o modificará.

Uma opção e deixar o valor expire sem nenhum valor. Porém, quando o usuário sair do site, o cookie se apaga.

Para acessar os valores no cookie é só utilizar a função indexOf().

Se você não souber usá-la, envie um novo post ao fórum ou um e-mail pra mim.

feramo1@hotmail.com

Link para o comentário
Compartilhar em outros sites

  • 0

tu tem certeza que esse código tava funcionando?

<script>

var nome = prompt("Qual o seu nome?")

document.cookie = nome;

document.write("Olá ",nome,", seja bem vindo(a)!")

</script>

Eu não sei se uma virgula pode servir para concatenação de String acredito q o correto seria usar o sinal de "+".

Completando o que o Fernando falou eu tb utilizo o indexLastOf() pra procurar o q quero além do indexOf()...

Abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

biggrin.gif

Hehehe, tava funcionando sim Crystian !!!

Pra ser bem honesto, este código eu peguei na net, (não lembro onde)...

A propósito não consegui resolver o problema, você teria uma sugestão ??

PS: Não sei utilizar estas funções :

indexLastOf() e indexOf(), vocês poderiam me ajudar ??

Teria uma maneira mais "elegante" que o prompt para coletar estas informações ??

Em ultimo caso, tem como centralizar este prompt ??

Ah, outra coisa já aproveitando, tem como depois de eu receber estas informações em outra página, fazer o envio delas por e-mail (usando um script PHP??)...

Se vocês pudessem, postar um script funcionando e ou comenta-lo, eu ficaria agradecido, pois assim eu poderia estuda-lo e entender realmente como funcionam estas funções ....

Um abraço

falou !! wink.gif

Link para o comentário
Compartilhar em outros sites

  • 0

Bom vou te explicar sobre indexOf e indexLastOf, pois exemplos do que você quer eu não tenho em mãos (somente em casa eu acho) e se ninguém postar até o final de semana quando for pra casa, dae eu posto.

o método indexOf() retorna a primeira posição da string pesquisada.

ex.:

var exemplo = "Tavinho";

var resultado = exemplo.indexOf("vinho");

// resultado = 2

O resultado é igual a 2 porque dentro da string "Tavinho" a string vinho existe e começa na posição 2.

T a v i n h o

0 1 2 3 4 5 6 // este seria o indice das posições do teu nome. O indexLastOf tb utiliza essa mesma contagem para os indices, só que ele retorna a última posição da string encontrada.

var exemplo = "Tavinho";

var resultado = exemplo.indexLastOf("vinho");

// resultado = 6

Nos dois métodos se a string passada não for encontrada retorna "-1".

Não sei se fui claro, qualquer coisa posta ae...

Abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal,

Eu nunca tinha trabalhado com cookies em javascript, mas este tópico me deu uma esclarecida legal! Muito obrigado! smile.gif

Aproveitando o ensejo, criei 2 funções pra facilitar a vida de quem quiser trabalhar com cookies pelo javascript. A primeira criei baseado no post do Fernando Arruda, e serve pra definir os cookies. O primeiro parâmetro é o nome, o segundo é o valor do cookie e o terceiro é o número de dias que ele vai durar (este último parâmetro é opcional. Leiam o post do Fernando pra entender melhor). A outra função serve pra acessar o valor do cookie. Não utilizei essas funções que vocês citaram, achei mais fácil fazer por expressões regulares, mesmo... no final, dá na mesma. biggrin.gif

Abraços!

<script type="text/javascript">

function setCookie(cookie_name, cookie_value, expire_in_days)

{

    var cookie_expire = "";

    if (expire_in_days != null)

    {

        var expire = new Date();

        expire.setTime(expire.getTime() + 1000*60*60*24*parseInt(expire_in_days));

        cookie_expire = "; expires=" + expire.toGMTString();

    }

    document.cookie = escape(cookie_name) + "=" + escape(cookie_value) + cookie_expire;

}

function getCookie(cookie_name)

{

    if (!document.cookie.match(eval("/" + escape(cookie_name) + "=/")))

    {

        return false;

    }

    return unescape(document.cookie.replace(eval("/^.*?" + escape(cookie_name) + "=([^\\s;]*).*$/"), "$1"));

}

// Definindo um cookie:

setCookie("nome", "Carlos", 5); // este cookie vai expirar em 5 dias

// Acessando

cookie = getCookie("nome");

document.write(cookie);

</script>

Link para o comentário
Compartilhar em outros sites

  • 0

Ótimo código Illidan. Só estou postando para deixar uma coisa clara, é muito mais eficaz se trabalhar com regexp (Expressões Regulares) do que você manipular strings como agente faz com o indexOf e similares, mas acredito q pra quem tah começando o melhor mesmo é o mais simples q não é o caso das expressões regulares. Um conselho pra quem quer dar uma estudada em coisas novas, RegExp com certeza, é muito interessante e bem mais simples do que parece.

Illidan nosso próximo desafio pode ser com regexp o que acha?...hehehehe...

Abraço

Crystian

Link para o comentário
Compartilhar em outros sites

  • 0

Valeu, Crystian! biggrin.gif

Bom, quanto ao desafio, acho que está ótimo se tiver Expressões Regulares.

Pessoal, corram atrás de tutoriais sobre ERs... smile.gif é bem mais simples do que parece, como o Crystian falou... além de ser muito interessante (e útil!).

Abraços!

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,3k
    • Posts
      652,3k
×
×
  • Criar Novo...