Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Prinz

Script PHP não reconhece variável "?ref="

Recommended Posts

Olá pessoal!

 

Sou iniciante em php, e estou precisando de um ajuda.

 

 

É o seguinte, instalei um sistema de script de afiliados em php, só que por alguma razão, depois que entro na área adiministrativa e saio, se eu cadastrar um novo usuário, o sistema não reconhece a variável que indica quem foi a pessoa que a indicou o novo usuário. Porque será que isso acontece?

Compartilhar este post


Link para o post
Compartilhar em outros sites

tem o codigo do script?

Compartilhar este post


Link para o post
Compartilhar em outros sites
Isso é variável "?ref="?

Quando eu vejo ref= eu lembro de <a href="#"></a>.

 

Para isso ser uma variável teria que ter o $ no início, algo como $ref,

 

faça como shini disse, poste a parte do código que aponta o erro

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão está justamente aí, como sou iniciante em php, eu não sei exatamente em qual página está o erro exatamente.

 

 

A minha dúvida é porque eu tenho instalado um script de afiliados em php, e quando o instalo ele funciona normalmente a princípio (graças a algumas adaptações que fiz para a linguajem do php 5.3), e como a maioria dos script de afiliados, tem no final http://seusite.com/?...lanoqueindicou.

 

Mas depois que entro na área adiministrativa e saio (deslogo) de lá, misteriosamente, surge um problema que impedem o funcionamento do script.

 

Para testar o sistema, cadastrei o usuário:

 

login:testeagora

e-mail:testeagora@teste.com

 

Veja no print da imagem:https://lh4.googleus...ma-codigo-2.png

 

Até o passo que fiz o primeiro cadastro para testar o sistema nesta hospedagem, tudo ok, então eu acessei a área administrativa, e lá estava:

 

Nome: testeagora

e-mail:testeagora@teste.com

Patrocinador:admin

 

Confira:https://lh5.googleus...ma-codigo-4.png

 

Só que após sair da área administrativa, acontece uma alteração no código (que eu não fiz) e que impede o código de funcionar corretamente.

 

 

O que ocorre, é que antes de eu fazer login na área administrativa e depois sair, era exibido "Página pessoal do membro afiliado: teste@teste.com

 

Print:https://lh3.googleus...ma-codigo-1.png

 

 

Mas Agora aparece: "Página pessoal do membro afiliado ( ) "

 

https://lh3.googleus...ma-codigo-5.png

 

 

E se eu cadastrar um novo usuário, na área administrativa não vai aparecer o nome da pessoa que o indicou.

 

 

 

Se vocês puderem me ajudar com estes erros, ficarei muito grato.



O script está on line agora e aparenta estar funcionando normal, se alguém se cadastrar, o sistema registra normalmente, e na area administrativa aparece o nome de quem se cadastrou e quem indicou.

 

MAS SE EU SAIR DA AREA ADMINISTRATIVA "logout", estranhamente, quando uma proxima pessoa se cadastrar,o sistema não irá mais acusar quem é a pessoa que indicou esta ultima.

 

Será que é por causa do trecho "session_destroy?"

 

Aqui está o código da página logout.php:

 

 

<?
session_start();
session_destroy();
header("Location: index.php");
?>
Quando eu saio da átrea administrativa, coincidentemente, na página cadastro.php, onde aparecia o nome e o e-mail da pessoa que está indicando no final da página, deixa de aparecer e no lugar aparece dois parentes desta forma ( ) como no print abaixo:
Código da página cadastro.php:
<? include ("includes/session.php"); ?>
<HTML>
<HEAD>
<TITLE><? echo "$nome_do_site" ?></TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</HEAD>
<BODY style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:10px; margin-left:auto; margin-right:auto; margin-top:0px; margin-bottom:auto; background-attachment:fixed" background="Imagens/bg_cool.png" bgcolor="#CCCCCC">
<div align="center">
<img border="0" src="Imagens/bg1.png" width="729" height="206"></div>
<div align="center">
<table style="font-family:Verdana, Arial, Helvetica, sans-serif;font-size:9px; margin:0px auto auto auto;" border="0" width="729" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td background="Imagens/bg-2-4.png" height="25">
<p align="center"><? include "menu.php"; ?></td>
</tr>
<tr>
<td height="32" background="Imagens/bg-3.png"><div align="center"><form name="cadastro" onSubmit="return validar();" action="cadastro_sucesso.php" method="post">
<div style="text-align: center;"><font face="verdana" size="3">
<p><br>
<b>Cadastro Para Pagamento</b></p>
</font>
<div align="center">
<table width="440" border="0">
<tr>
<td width="35%"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>
Login:</strong></font></td>
<td width="65%"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<input name="login" type="text" id="login" class="form1" size="35">
</font></td>
</tr>
<tr>
<td width="35%"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>
Nome completo:</strong></font></td>
<td width="65%"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<input name="nome" type="text" id="nome" class="form1" size="35">
</font></td>
</tr>
<tr>
<td width="35%"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><strong>
E-mail (PagSeguro):</strong></font></td>
<td width="65%"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<input name="email" type="text" id="email" class="form1" size="35">
</font></td>
</tr>
<tr>
<td colspan="2" align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><b>
<small><small><input name="concorda" id="concorda" value="sim" type="checkbox" value="checkbox">
</small></small></b><small><small><a href="termos.php">Li e estou de acordo com os termos de adesão</a></small></small></font></td>
</tr>
</table>
</div>
<input type="submit" name="Submit" value="Cadastrar" class="submit2"/>
<br>
</div>
</form>
<script language="JavaScript" src="includes/cadastro.js" type="text/javascript"></script>
</div></td>
</tr>
<tr>
<td height="80" background="Imagens/bg-2-4.png">
<div align="center">
<font color="#FFFFFF">Página pessoal do membro afiliado:
<? // AQUI MOSTRA O NOME DA PESSOA
echo "$nomedapessoa ";
// AQUI MOSTRA O EMAIL DA PESSOA
echo "(<a href=\"mailto:$emaildapessoa\">$emaildapessoa</a>)"
?>
<br> <br>
</font>
<span class="bod"><b>
<font size="1" color="#FFFFFF">Script Afiliados Pro 2.0</font></a></b></span><font color="#FFFFFF"><font size="1"> 
</font>
<span style="line-height: 115%; font-style: normal">
<font size="1">© </font> </span><font size="1">2010 - Todos os Direitos Reservados</font></font></div></td>
</tr>
<tr>
<td>
<img border="0" src="Imagens/bg-5.png" width="729" height="34"></td>
</tr>
</tbody>
</table>
</div>
</BODY>
</HTML>
E na área administrativa não aparece mais o nome da pessoa que indicou esta segunda que se cadastrou.
Estranho que eu achei que em php, só o que poderia alterar algum código fosse alguém entrar no código e mudar algo, não sabia que um visitante que esta entrando na página, só de entrar e sair poderia fazer isto.


A variável a qual me referia do ?ref= seria correspondente a este trecho :

 

 

<? // AQUI MOSTRA O NOME DA PESSOA
echo "$nomedapessoa ";
// AQUI MOSTRA O EMAIL DA PESSOA
echo "(<a href=\"mailto:$emaildapessoa\">$emaildapessoa</a>)"
?>
Só que depois que sai da área administrativa ao inves de aparecer o nome e e-mail da pessoa aparece um "( ) ", e não mostra depois quem indicou ela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja se open_short_tag esta habilitada no phpinfo, se possivel habilite ela no php.ini ou troque as ocorrencias de <? por <?php

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vou dar uma olhada aqui Shini. Eu realmente cheguei a cogitar a possibilidade de ser alguma coisa com o php.ini. só não sabia exatamente o que. Vou ver aqui...



Fiz o prodecimento com a página cadastro.php, mas o problema persistiu. Será que eu teria que trocar todas as ocorrências do script que estão em <? por <? php .... ?

 

Em caso afirmativo, teria alguma forma de executar este comando de forma automática em todas as páginas do script?

 

Mas será que é este mesmo o problema? Digo porquê eu tenho este mesmo script em outra hospedagem com uma versão de php diferente que está funcionando normalmente.

 

O que achei mais estranho é isto, é que o problema não ocorre devido a alguma alteração de código, mas sim, no ato de entrar e sair da página administrativa. Será que o trecho session_destroy da página logout.php que está provocando este efeito?

 

Digo, porque quando acabo de instalar o script este problema não acontece. É só depois que eu cadastro o primeiro usuário, entro na área administrativa e saio dela (logout).

Compartilhar este post


Link para o post
Compartilhar em outros sites

veja as versões do php nas hospedagens.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pelo Visto esta é a parte mais curiosa Shini.

 

Veja, que, o script que está funcionando perfeitamente, se encontra na hospedagem " leadhoster", e a versão de php é mais antiga, sendo esta, a versao 5.25

 

E na que não está funcionando com a mesma configuração é uma profissional com a versão de php 5.3.6.

 

Aliás, ainda sendo bastante leigo em php, observei que muitas coisas mudaram de versões anteriores para o php versão 5.3

 

Eu mesmo neste script, tive que fazer centenas de adaptações antes de chegar a este novo "desafio" para resolver, que envolviam por exemplo trocar termos eregi por preg_match em alguns pedaços, em outros trocar o session_register (" parte a ser editada") por $_SESSION[ ' parte a ser editada '] entre outros.

 

Mas confesso que este erro aí está me preocupando um pouco....

 

Na pior das hipóteses, eu posso "contornar" este erro com um pouco mais de trabalho...que seria ao invés de eu editar os usuários pela pagina http:/meusite.com/admin eu fazer isto diretamente pelo banco de dados, mas com isso eu ficaria bastante limitado ainda.

 

Vamos ver o que acontece aí no meio tempo, de qualquer forma obrigadão pela ajuda, e sabendo de mais algum recurso que possa ajudar ficarei grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como eu poderia fazer isso?



Eu resolvi alguns bugs anteriores, mas ainda não consegui descobrir o que está causando isso. O mais estranho, é que só acontece depois que eu entro na área adiministrativa do site e saio, aí então não dá mais para identificar é a pessoa que indicar novos usuários.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consiste em você testar se os valores estão sendo passados, e quando eles deixam de ser passados.

 

 

 

var_dump($_SESSION);
var_dump($_GET);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Hum...muito interessante hein Alaerte! Acredito que este código poderá me dar um bom feed back. É porque eu sou iniciante ainda em php, como eu faria isso?

 

 

Criaria algum arquivo ou poderia inserir este código no arquivo que eu acho que pode estar gerando este problema?

 

 

Encontrei um video falando sobre isso no you tube.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O script que estou usando não trabalha com a variável $_GET, só com SESSIONS, e realmente estou achando que é alguma coisa com o SESSIONS, então eu devo colocar na página que tem sessions no início?

 

 

Por exemplo, uma delas é justamente a página cadastro, então eu colocaria este código nesta página certo?



Apareceu isto:

 

array(8) { ["ref, nomedapessoa , emaildapessoa , fonefixo , fonemovel , cidade , estado"]=> &array(0) { } ["ref"]=> &string(5) "admin" ["nomedapessoa"]=> &string(20) "Sistema de Afiliados" ["emaildapessoa"]=> &string(15) "teste@teste.com" ["fonefixo"]=> &NULL ["fonemovel"]=> &NULL ["cidade"]=> &NULL ["estado"]=> &NULL }



O que significa?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estou começando a achar que o problema é com algum comando existente na página sair.php (disponivel quando o membro usuário quer sair do menu interno do site) e também na página logout,php (disponivel quando o administrador do site quer sair da área administrativa do site), por duas razões:

 

1- Pois o problema ocorre quando eu saio da página de administação

 

2- Pois ocorreu exatamente o mesmo problema quando eu testei entrar como usuário na área de membros e sai de lá.

 

Lembrete do Problema: ao cadastrar um novo usuário, na área administrativa não vai aparecer o nome da pessoa que o indicou.

 

 

Obrigado á aqueles que se esforçaram em me ajudar. Se mais alguém tiver novas alternativas, ficarei muito grato.



Aqui está o código da página logout.php (mesmo da sair.php)

 

 

<?
session_start();
session_destroy();
header("Location: index.php");
?>
Versão de php que estou utilizando:5.36

Compartilhar este post


Link para o post
Compartilhar em outros sites

É....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.

 

Obrigado pela força pessoal!

 

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.

 

PS: Estes servidores de hoje em dia estão apresentando cada vez mais tendências ao sobrenatural.

Compartilhar este post


Link para o post
Compartilhar em outros sites

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?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade não são erros, são "NOTICE".

 

Veja esses links sobre tratamento de erros e erros/alertas comuns do PHP.

 

:seta: http://forum.imasters.com.br/topic/229485-tratamento-de-erros/

 

:seta: http://forum.imasters.com.br/topic/375491-erros-comuns-com-php/

 

Boa Leitura. :joia:

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.