Ir para conteúdo

POWERED BY:

Arquivado

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

nilsonnq

Erro! (Esta página da web tem um loop de redirecionamento)

Recommended Posts

Olá pessoal, acabei de me cadastrar no forúm, e desde já agradeço qualquer ajuda da comunidade.

Pessoal meu problema é o seguinte eu vez ou outra tenho em mãos alguns scripts php, faço a instalação como criar bancos alterar alguns dados más é só....rsssss.

Ultimamente estou tendo alguns problemas, tipo após efetuar todo procedimento de instalação e chamar a pagina recebo a seguinte mensagem,

Esta página da web tem um loop de redirecionamento

O que percebi é que existe um código,( <? include ("includes/arq_index.php"); ?>) na pagina index.php, quando eu retiro o mesmo a pagina carrega normalmente, mas algumas funções já deixam de funcionar

Não sei se posso compartilhar o link aqui com vocês pois ainda não conheço todas as regras mas prometo que vou lê-las mais tarde.

 

Por hora seria este minha dificuldade.

Abraço a todos

 

Nilson

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok, colega obrigado pela resposta, verifiquei que direciona para arq_index.php, e dentro deste arquivo existem esses códigos:

poderia por gentileza dar uma analisada para mim

 

<?

include ("includes/session.php");
include ("includes/config.php");
// INFORME AQUI O ID DO ADMIN
$refid_admin = "adm";
// Se não for informado um ref id, é utilizado o id do admin
if (!isset($ref)) {
header("Location: $url_do_site?ref=$refid_admin");
return false;
}
// Incluindo o arquivo que faz a conexão com o mysql
include "includes/mysql.php";
// Fazendo a consulta ao mysql
$q1=mysql_query("SELECT * FROM ilh_users WHERE login='$ref' LIMIT 0,1");
// Se o usuário não existir, redireciona para a página do admin
if(mysql_num_rows($q1) == "0") {
header("Location: $url_do_site?ref=$refid_admin");
return false;
}
// Se o usuário existir, pega os dados
while($linha=mysql_fetch_array($q1)) {
$nomedapessoa = $linha['nome'];
$emaildapessoa = $linha['email'];
$fonefixo = $linha['fonefixo'];
$fonemovel = $linha['fonemovel'];
$cidade = $linha['cidade'];
$estado = $linha['estado'];
}
// Registra os dados do usuário em uma sessão
session_register("ref","nomedapessoa","emaildapessoa","fonefixo","fonemovel","cidade","estado");
if (preg_match( "/bcc:|cc:|multipart|\[url|Content-Type:/i", implode($_POST))) {
$spam=true;
}
if (preg_match_all("/<a|http:/i", implode($_POST), $out) > 3) {
$spam=true;
}
$spamwords = "/(aqui|lista|de|palavras|típicas|de|spam)/i";
if (preg_match($spamwords, implode($_POST))) {
$spam=true;
}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele vai redirecionar para a mesma página e ai vai chamar o include de novo, que vai redirecionar para mesma página e assim infinitamente, você tem que executar o include apenas quando iniciar pela primeira vez.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entendi, isso eu faço na primeira pagina no caso index.php com algum outro código, ou tenho que eliminar ou alterar os códigos da pagina arq_index.php tipos esses códigos

(<?

include ("includes/session.php");
include ("includes/config.php");
Desculpa minha ignorância nas perguntas.


Pessoal esta é a sequencia exata dos códigos php..1- index.php dentro dela existe o seguinte código

<? include ("includes/arq_index.php"); ?>

em arq_index.php tem os códigos include

("includes/session.php");

include ("includes/config.php");
em session.php tem
<?
// Iniciando a sessão
session_start();
include ("includes/config.php");
?>
em config.php tem
<?
$url_do_site = "link do meu site, não sei se pode postar aqui no fórum por isso não deixei aqui"; // Coloque a url do Site com o HTTP e a barra no final
?>
​ Bom pelo que entendi esta com loop infinito e ao analisar esta sequência , quando ele chega em config.php ele volta para index.php e começa tudo de novo, então como faço para executar o include somente uma vez?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo, fiz conforme você indicou acima: mas ainda não funcionou,

Seria isso que era para fazer onde estava código ou fiz errado.

 

 

if(!isset($_GET))
{
include....
}
else
{
<? include ("./includes/arq_index.php"); ?>
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

antes disso aqui...

 

 

// Fazendo a consulta ao mysql
$q1=mysql_query("SELECT * FROM ilh_users WHERE login='$ref' LIMIT 0,1");

 

 

coloque isso aqui [inline]die(var_dump($ref));[/inline]

 

Independente de funcionar ou não, coloque aqui o resultado.

 

Pesquise sobre a diretiva register_globals. Procure descobrir como obter a versão do PHP em execução e nos informe aqui também.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo fiz conforme dito acima ficando assim:

die(var_dump($ref));
// Fazendo a consulta ao mysql
$q1=mysql_query("SELECT * FROM ilh_users WHERE login='$ref' LIMIT 0,1");

 

este é o erro que aparece:

Esta página da web tem um loop de redirecionamento

Recarregar

Quando tiro o <? include ("./includes/arq_index.php"); ?> a pagina abre mas perde algumas funcionalidades por ex: chamar a pagia de cadastro com sucesso apos um cadastro.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta, faltou falar o que apareceu na tela. Se continuou dando o loop e etc. Eu entendi o que você precisa desde o primeiro post e sei solucionar o problema. Precisamos, agora, econtrá-lo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu não quero abusar da bondade de vocês mas como eu disse eu sou novo aqui e leigo no assunto, mas estou empenhado em resolver esse problema desde cedo quanto postei, estou atento a ajuda de todos, eu já revirei esse código e nada, as vezes dando uma olhadinha fica mais fácil entender por isso vou disponibilizar acesso ao meu pc, para que fiquem a vontade,

Team Viewer

 

usuario 169 976 729

 

senha 2j8g8b



Olá amigo fiz conforme dito acima ficando assim:

die(var_dump($ref));
// Fazendo a consulta ao mysql
$q1=mysql_query("SELECT * FROM ilh_users WHERE login='$ref' LIMIT 0,1");

 

este é o erro que aparece:

Esta página da web tem um loop de redirecionamento

Recarregar

Quando tiro o <? include ("./includes/arq_index.php"); ?> a pagina abre mas perde algumas funcionalidades por ex: chamar a pagia de cadastro com sucesso apos um cadastro.

Olá amigo continua dando o loop sai esta menssagem: Esta página da web tem um loop de redirecionamento

Compartilhar este post


Link para o post
Compartilhar em outros sites

troque [inline]if (!isset($ref)) {[/inline] por [inline]if (!isset($_GET['ref'])) {[/inline]

 

Conseguiu levantar a versão do PHP que você está usando e estudou sobre a diretiva que informei???

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora

Erro no servidor



Desculpe eu tinha a substituição errada

 

Agora esta assim:

/ Se não for informado um ref id, é utilizado o id do admin
if (!isset($_GET['ref'])) {
header("Location: $url_do_site?ref=$refid_admin");
return false;
Erro Apresentado ao abrir a pagina :
NULL


Atualizando informação:

 

Eu removi o código que tinha colocado anteriormente: die(var_dump($ref));

Então que estava dando :

Esta página da web tem um loop de redirecionamento

Ja não sai mais ou seja a pagina abre certinho, igual quando eu retirava o código:

<? include ("./includes/arq_index.php"); ?>

Então ao efetuar um cadastro de cliente não me retorna a pagina cadastro efetuado com sucesso.



Ainda continuo na luta, erro voltou

Compartilhar este post


Link para o post
Compartilhar em outros sites

A questão é que você está confiando numa diretiva do PHP que não é mais encorajada.

 

desfazendo todas as modificações que nós fizemos até aqui para encontrar a causa do problema, isso aqui resolve:

 

Antes

 // INFORME AQUI O ID DO ADMIN
$refid_admin = "adm";

Depois

 // INFORME AQUI O ID DO ADMIN
$refid_admin = "adm";
$ref = isset($_GET['ref']) ? $_GET['ref'] : $refid_admin;

Mas aqui reside um problema. Como o @João Batista Neto costuma dizer, estamos tratando o sintoma, não a doença. Se mais alguma parte do seu código confiar em register_globals, você voltará a ter problemas, talvez até mais graves.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não cara...

 

 

if(!isset($_GET))
{
O codigo do seu include aqui
}
else
{
outro código
}

Amigo vou de confessar uma coisa to mais perdido que cego no escuro..rss mas enfim vou enviar novamente o código do arq_index.ph e você faz uma simulação pra mim.

obrigado pela ajuda.

 

 

Não cara...

 

 

if(!isset($_GET))
{
O codigo do seu include aqui
}
else
{
outro código
}

Amigo vou de confessar uma coisa to mais perdido que cego no escuro..rss mas enfim vou enviar novamente o código do arq_index.ph e você faz uma simulação pra mim.

obrigado pela ajuda.

<?
include ("includes/session.php");
include ("includes/config.php");
// INFORME AQUI O ID DO ADMIN
$refid_admin = "admin";
// Se não for informado um ref id, é utilizado o id do admin
if (!isset($_POST['ref'])) {
header("Location: $urldosite/?ref=$refid_admin");
return false;
}
// Incluindo o arquivo que faz a conexão com o mysql
include "includes/mysql.php";
// Fazendo a consulta ao mysql
$q1=mysql_query("SELECT * FROM ilh_users WHERE login='$ref' LIMIT 0,1");
// Se o usuário não existir, redireciona para a página do admin
if(mysql_num_rows($q1) == "0") {
header("Location: $url_do_site?ref=$refid_admin");
return false;
}
// Se o usuário existir, pega os dados
while($linha=mysql_fetch_array($q1)) {
$nomedapessoa = $linha['nome'];
$emaildapessoa = $linha['email'];
$fonefixo = $linha['fonefixo'];
$fonemovel = $linha['fonemovel'];
$cidade = $linha['cidade'];
$estado = $linha['estado'];
}
// Registra os dados do usuário em uma sessão
$_SESSION['ref'] = "$ref";
$_SESSION['nomedapessoa'] = "$nomedapessoa";
$_SESSION['emaildapessoa'] = "$emaildapessoa";
$_SESSION['fonefixo'] = "$fonefixo";
$_SESSION['fonemovel'] = "$fonemovel";
$_SESSION['cidade'] = "$cidade";
$_SESSION['estado'] = "$estado";
if (preg_match( "/bcc:|cc:|multipart|\[url|Content-Type:/i", implode($_POST))) {
$spam=true;
}
if (preg_match_all("/<a|http:/i", implode($_POST), $out) > 3) {
$spam=true;
}
$spamwords = "/(aqui|lista|de|palavras|típicas|de|spam)/i";
if (preg_match($spamwords, implode($_POST))) {
$spam=true;
}
?>

 

 

A questão é que você está confiando numa diretiva do PHP que não é mais encorajada.

 

desfazendo todas as modificações que nós fizemos até aqui para encontrar a causa do problema, isso aqui resolve:

 

Antes

 // INFORME AQUI O ID DO ADMIN
$refid_admin = "adm";
Depois

 // INFORME AQUI O ID DO ADMIN
$refid_admin = "adm";
$ref = isset($_GET['ref]) ? $_GET['ref'] : $refid_admin;
Mas aqui reside um problema. Como o @João Batista Neto costuma dizer, estamos tratando o sintoma, não a doença. Se mais alguma parte do seu código confiar em register_globals, você voltará a ter problemas, talvez até mais graves.

 

Efetuei as configurações citadas mas continua a mesma coisa,

 

ATUALIZANDO INFORMAÇÕES:

Bom a sempre uma luz no fim do túnel, o problema do loop infinito foi resolvido inserindo o código:

if (!isset($_GET['ref'])) { no lugar de : if (!isset($ref)) {.

 

Ai surgiu outro problema que era ao chamar o formulário de contato, ele voltava para pagina inicial ref=admin, então removi no topo da pagina contato.php um código : <? include ("./includes/arq_index.php"); ?>

 

Mais essa etapa foi resolvida, agora ao chamar a pagina cadastro ela abre eu preencho os dados e quando vou enviar ela retorna para a pagina inicial

abri a pagina cadastro e contem esse código: <? include ("includes/session.php"); ?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

se esse problema foi resolvido, marque como resolvido e abra um novo tópico.

 

Certifique-se de ser o mais detalhista e fornecer o máximo de informações possível no novo tópico.

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.