Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia a todos!
Estou com um problema com o session_destroy em um script de afiliados que instalei em uma hospedagem de php versão 5.36 que está complicando a minha vida desde 4ª feira desta semana.
O fato é que quando eu instalo o script, tudo funciona corretamente a princípio, e como é um script de afiliados, uma das funções principais é a de identificar quem foi a pessoa que indicou a outra, para desta forma gerar um comissionamento para esta.
Só que estranhamente, quando acesso a área administrativa, e depois saio de lá clicando na página logout.php, estranhamente o sistema não reconhece mais caso uma nova pessoa se cadastrar, quem foi a pessoa que a indicou para o sistema.
O que me fez ter a certeza de que o problema está na página logout.php, é porque depois eu fiz um novo teste:
Após ter instalado o script, ao invés de acessar a área adiministrativa do site, eu acessei a área de membros, que tem uma página chamada "sair.php" com o código idêntico a página "logout.php", e após eu ter clicado nela para me" deslogar" deu exatamente o mesmo erro, ou seja, se um novo usuário se cadastrar depois disso, o banco de dados interpreta tanto o nome quanto o e-mail deste novo usuário, mas não interpreta mais quem foi seu patrocinador (pessoa que o indicou).
Como isso só acontece nestas circunstâncias, isso me levou a crer que o problema está no código da página logout.php e sair.php (ambos idênticos).
Só que, ao fazer uma pesquisa no google, vi muitos códigos de saída de página semelhante e o código não parece ter nada de errado, e isso me deixou ainda mais confuso, veja o código abaixo:
>
<?
session_start();
session_destroy();
header("Location: index.php");
?>
Este código vale tanto para a página "logout.php" (da área administrativa do site) quanto para a página "sair.php" da área de membros, que são as páginas que aparentemente estão causado o problema.
Será que o problema está no comando session_destroy( )? Sou ainda bem iniciante em php, bastante leigo ainda, mas imaginei que talvez esta codificação esteja "destruindo" a capacidade de registrar os dados que permitem identificar quem indicou um novo membro para o sistema.
PS1: Ah, uma observação interessante, se eu NÃO acessar nem a área administrativa nem a área de membros, eu posso registrar quantas pessoas forem que o sistema irá reconhecer todos os dados de cadastro, inclusive quem indicou a pessoa.
PS2: Testei este mesmo script em uma outra hospedagem onde a versão do php é mais antiga (5.25) e o script funcionou perfeitamente, sem precisar fazer nenhuma alteração, porém esta outra hospedagem não atende completamente as minhas necessidades).
PS3: Li referências no google sobre um código, se não me engano assim: unset_($_SESSION ['nome da sessão']) ), será que substituir o session_destroy por este poderia resolver esta questão?
Peço a ajuda de vocês.
Grato desde já.
Vou fazer uma tentativa, Matrix, obrigado pela sugestão!
É....se antes eu parecia confuso ,tenho uma boa notícia, agora estou mais confuso do que nunca!
(Mas confesso que esta situação por hora me agrada) hehe, o problema e solucionou sozinho sem qualquer intereferência minha,!
Espero que permanesça resolvido.
Não vou comemorar ainda, ou marcar isto como resolvido, pois tenho a impressão que isso já me aconteceu antes e no dia seguinte voltou a problemática. Cruzem os dedos por mim. Obrigadão Matriz, por enquanto acho que está resolvido, segunda feira ou terça caso não volte a dar zebra eu marcarei aqui no fórum como resolvido!
bom, provavelmente deve ter cookies, geralmente não são usados apenas sessions, cheque esse scripts meu de logout
<?php
session_start(); // inicia a sessão para ter certeza de que ela esta iniciada
if(isset($_COOKIE['seu_cookie_e_login'])) { // checa se o cookie existe
unset($_COOKIE['seu_cookie_e_login']); // faz unset no seu cookie
setcookie('seu_cookie_e_login ','', time() - 36000); // transfere a validade do cookie para um tempo passado, assim eliminando-o de vez
}espero ter ajudado ;)
Olá Webdevbr, estou achando com toda a certeza que o problema está relacionado aos cookies, e estou começando a achar que talvez o problema não aconteça apenas quando saio da área administrativa.
No sábado, voltou a funcionar normalmente, inclusive eu entrei e sai da área de membros e da administrativa, e estava funcionando ainda sem erros.
Só que no domingo voltou a dar o mesmo problema, sem eu fazer alteração alguma, e isso está me levando a acreditar que o problema tem tudo haver com a configuração dos cookies.
A grande questão é que sou iniciante em php não sei como configurar os cookies do site, inclusive estive pesquisando no google, e tem muitos cookies que expiram depois de algum tempo, não é isso?
Em uma outra hospedagem, com versão diferente de php inclusive, instalei este mesmo script e lá continua funcionando normalmente, o que me fez deduzir ainda, que possivelmente a configuração de cookies, talvez também dependa da versão de php utilizada ou de outras características individuais da configuração da hospedagem...
Alguma coisa me diz que estou no caminho certo para resolver este problema, só preciso de mais algumas luzes no fim do tunel...
Será que você poderia me ajudar?
Como eu poderia localizar estes cookies do meu site? Como configurá-los? Será que é muito complexo?
Grato desde já!
Executei o comando:
>
<?php ini_set('display_errors', true); error_reporting(E_ALL | E_STRICT);?>
E Descobri que os erros na realidade eram:
Notice: Undefined index: nomedapessoa in /home/sucessoo/public_html/cadastro.php on line 68
Notice: Undefined variable: emaildapessoa in /home/sucessoo/public_html/cadastro.php on line 70
Notice: Undefined variable: emaildapessoa in /home/sucessoo/public_html/cadastro.php on line 70
()
Mas confesso que não entendi porque eles ocorreram, afinal de contas, quando eu acesso a página index.php, teoricamente era para os dados da sessão serem passados automaticamente para a página cadastro.php onde foi localizado o erro.
Alguém aí pode me ajudar?
Poste as linhas do erro
Esses erros são simples:
no arquivo cadastro.php, na linha 60, você está chamando o campo nomedapessoa de algum array, mas esse campo não está presente nesse array.
no arquivo cadastro.php na linha 70 você, por duas vezes, tentou chamar uma variável com o nome emaildapessoa, mas essa variável não está definida.
vc poderia passar os arquivos que acha que esta causando erros? assim eu poderia checar algum cookie a mais ou algo assim que possam estar causando eros, mas se funciona em outras hosts talvez seja algo com o php.ini tente contatar sua host ;)
Amigo eu não consegui entender direito seu problema, mas você já pensou em utilizar cookies? Talvez eles seja que o uso de sessões visto que os cookies poderão continuar salvos mesmo após o usuário sair do site ou mesmo fechar o navegador.
Sugiro que dê uma olhada em: http://br1.php.net/manual/en/features.cookies.php