Jump to content


Photo

[Resolvido] Erro Estranho Com Cookies?


  • Faça o login para participar
11 replies to this topic

#1 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 29/07/2010, 18:37

Olá a todos,
Sempre usei a seguinte função e nunca ocorreu erros:
function salt($length) {
$pattern = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvXxZz1234567890"; 
for($i=0;$i<$length;$i++) { 
$key .= $pattern{rand(0,9)}; } 
return $key; 
}
No entanto, agora passou a apresentar o seguinte erro:

Notice: Undefined variable: key in /var/www/xxx/functions.php on line 10


Alguém poderia me ajudar?
Obrigado,

#2 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 29/07/2010, 19:16

Você está usando $key sem tê-la definido antes. O certo é:

function salt($length) {
$pattern = "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvXxZz1234567890";
$key = ''; // <-------
for($i=0;$i<$length;$i++) {
$key .= $pattern{rand(0,9)}; }
return $key;
}

Sempre inicialize uma variável.
  • Inu likes this

#3 Cristiano Galdino

Cristiano Galdino

    Dark Defender

  • Administradores
  • 3738 posts
  • Sexo:Masculino
  • Localidade:Brasília, DF

Posted 29/07/2010, 20:35

O PHP está apresentando essa mensagem de aviso (não é erro) porque a diretiva error_reporting foi configurada para exibir mensagens de nível E_NOTICE. Essa configuração pode ser feita no arquivo de configuração php.ini ou usando as funções init_set() ou error_reporting().
  • Inu likes this
Cristiano Galdino
- http://cristiano.galdino.net/

“Since 2003”


#4 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 29/07/2010, 21:18

Ainda que a mensagem possa ser ocultada, usar variáveis que não foram inicializadas não é uma boa prática. O PHP é muito tolerante em várias situações como essa, mas o mesmo pode não ocorrer em outra linguagem. Então criar o hábito correto é mais vantajoso.

#5 Cristiano Galdino

Cristiano Galdino

    Dark Defender

  • Administradores
  • 3738 posts
  • Sexo:Masculino
  • Localidade:Brasília, DF

Posted 29/07/2010, 21:59

Sim, sim, salabin! Meu post só foi para explicar o motivo das mensagens "aparecerem" de repente. Você tá corretíssimo em dizer que as variáveis deve ser inicializadas, e ainda, tipadas.
Cristiano Galdino
- http://cristiano.galdino.net/

“Since 2003”


#6 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 29/07/2010, 22:31

Tudo bem. Não quis criar confusão. Só tinha entendido que a sua sugestão era alterar o php.ini. Agora está esclarecido.

#7 André Manoel

André Manoel

    Doutor

  • Usuários
  • 996 posts
  • Sexo:Masculino
  • Localidade:Brasilia

Posted 30/07/2010, 10:34

:click:
Iniciando na Ajuda On line...

Posted Image Meu post lhe ajudou? Reputar/votar é uma das formas de agradecer.

#8 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 30/07/2010, 12:41

Obrigado a todos pela ajuda! Irei mudar esta má prática de programação. Se tiverem mais dicas, agradeço.

/Ah, e no caso de variáveis próprias do PHP, como $HTTP_COOKIE_VARS, como procedo?

Edição feita por: Inu, 30/07/2010, 12:42.


#9 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 30/07/2010, 14:29

Elas são inicializadas pelo PHP. Não precisa fazer nada. E $HTTP_COOKIE_VARS está obsoleta. Use $_COOKIE.

#10 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 30/07/2010, 18:57

Então, por quê quando eu uso $_COOKIE['login'], retorna isso:

Notice: Undefined index: login in /var/www/xxx/cadastro.php on line 9

Notice: Undefined index: senha in /var/www/xxx/cadastro.php on line 9

?



#11 LeoB

LeoB

    Super Veterano

  • Usuários
  • 1876 posts
  • Sexo:Masculino
  • Interesses:Programação

Posted 30/07/2010, 19:00

Porque não existe um cookie com o nome de login. O erro não é da variável $_COOKIE. É do índice 'login'.

$login = (isset($_COOKIE['login']) ? $_COOKIE['login'] : '');


#12 Inu

Inu

    Veterano

  • Usuários
  • 1138 posts
  • Sexo:Masculino
  • Localidade:Canela, Rio Grande do Sul, Brasil

Posted 30/07/2010, 19:22

Agora está tudo certo. Obrigado! :D




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq