Ir para conteúdo

POWERED BY:

Arquivado

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

Uli Oreggia

Problemas de redirecionamento usando location.href

Recommended Posts

Boa tarde galera...sou novo por aqui! Evito postar em foruns...somente em ultimo caso...como esse agora...procurei na internet toda por uma solução e nda...a principio meu problema parece ser simples, porem não intendo oque esta errado...vamos lah:

 

tenho duas funções. A primeira seta um cookie e recarrega (onde: 'progresso' é um iFrame):

 

function setCookie(nome, valor)
{
	var cookie	= nome + '=' + valor + ';';

	document.cookie	= cookie;
	document.getElementById('progresso').contentDocument.location.reload(true);
}

a segunda só redireciona

 

function finaliza()
{
	location.href='index.php?acao=finalisada';
}

a chamada pra elas é feita dentro de meu sistema em varios momentos. E, enquanto estava em localhost funcionava perfeitamente! Porem, quando subi no servidor começou a dar alguns erros de location...aqueles "Warning: Cannot modify header information - headers already sent". Logo de cara pensei, a culpa é do "header('location: ...')". tirei todos eles e substitui por "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=...'>"...nada! ainda dando warning. Debuguei algumas vezes e percebi que esses erros apareciam apos a chamada desses scriptsinhos acima, esses que contem location.href.

 

Moral da historia:

 

Qual pode ser o problema? meu sistema não contem mais nenhum "header('location: ...')" e os "Warning: Cannot modify header information - headers already sent" aparecem logo apos location.href

Se alguem puder me socorrer ficarei mto grato...to aqui a varias horas no meu trampo quebrando a kbeça com varias soluções de outros posts e nda...mto obrigado desde já!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

"Warning: Cannot modify header information - headers already sent".

 

isso é erro php

 

não tem nada a ver com js diretamente.

 

Veja, para enviar um cabeçalho (header), você não pode ter nenhuma saída HTML antes dele.

você não pode fazer:

<script></script>
<?php

header('Location: ..');
o correto seria:

<?php

header('Location: ..');
?>

<script></script>
entendeu ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim...eu estou ligado quanto a isso. por isso assim que vi esse warning tirei tdos os header('location: ...') do meu php...por isso to achando bem estranho.

 

porem o warning continua...e logo depois de executar as funçoes javascript

 

não estou mais enviando cabeçalhos dentro do php

Compartilhar este post


Link para o post
Compartilhar em outros sites

poste os codigos php, pois esse erro não tem como ser javascript

 

pode ser como expliquei, um javascript colocado no lugar errado.

mas não vai ser 'js' que vai resolver seu problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

index.php:

 

<?php include_once('classe/conexao.class.php'); ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>MMM :: MatrixMassMailer</title>
        <link href="css/estilo.css" rel="stylesheet" type="text/css" />
		<script language='javascript'>
			function setCookie(nome, valor)
			{
				var cookie	= nome + '=' + valor + ';';

				document.cookie	= cookie;
	            //document.getElementById('progresso').contentDocument.location.reload(true);
				window.open('progresso.php', 'progresso');
			}
			
			function finaliza()
			{
				window.open('index.php?acao=finalisada', '_top');
			}
		</script>
	</head>
    <body>
    
        <?php

        ...

        case 'progresso':
        	if(!is_null($_COOKIE['MMM_tarefa_ID']))
        	{
        		if(is_null($_COOKIE['status']))
        		{
        			setcookie('status', 'iniciada');
        		}

logo depois da um warning

 

        ...

			setcookie('MMM_tarefa_ID', null);
			setcookie('enviados', null);
			setcookie('status', null);
			setcookie('atual', null);
			setcookie('total', null);
			break;
        }
        		
        ?>

da um erro em cada uma dessas linhas tbm

 

e em todos os lugares onde tinha header('location: ...') substitui por outro meio de redirecionamento, como no exemplo:

 

echo "<meta HTTP-EQUIV='Refresh' CONTENT='0;URL=index.php?acao=progresso'>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

setcookie() também é considerada uma função de cabeçalho, o problema não era o header em si, e não era trocando ele que você ia resolver, na verdade, colocando a meta, você só abriu brechas de segurança no teu sistema.

 

http://br2.php.net/setcookie

 

setcookie() defines a cookie to be sent along with the rest of the HTTP headers. Like other headers, cookies must be sent before any output from your script (this is a protocol restriction). This requires that you place calls to this function prior to any output, including <html> and <head> tags as well as any whitespace.

^_^

Compartilhar este post


Link para o post
Compartilhar em outros sites

hmmmmm...m*****...então é isso!

 

brechas de segurança é? po bom saber...vo pensar em outra maneira de redirecionar então. E tambem outra maneira de setar esses cookies.

 

kra...só tenho q agradecer! Vo ver oq fasso

o/

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.