Ir para conteúdo

POWERED BY:

Arquivado

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

PHDiniz

Redirecionamento sem causar problemas (PHP/HTML)

Recommended Posts

Pessoal, preciso usar algum tipo de redirecionamento. Mas.. não sei se é pq to fazendo alguma coisa errada ou se dá problema mesmo.

 

 

Em algumas áreas do meu site, eu preciso redirecionar uma pessoa pra tal lugar.

 

Só que estou usando assim:

 

 

echo "<meta http-equiv='refresh' content='0;página_x.php'>";

 

Só que esse código só funciona no Firefox, se eu entrar na página que tem esse código de cima com o IE, ele não redireciona.

 

Alguem sabe pq?

 

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na verdade, não é necessário, eu só queria uma solução para enviar a pessoa pra uma outra página, sendo o código compatível com qualquer navegador.

 

Eu tentei usar o Header("Location: ... ");, mas ele sempre diz:

 

Warning: Cannot modify header information - headers already sent by

 

Tem algum comando ou alguma coisa para eu usar sem que dê problema?

 

-------------------------------------------------------------------

Esta página pode ser usada como exemplo:

 

<? session_start();

@$login = $_SESSION['login'];

@$senha = $_SESSION['senha'];

if(!isset($_SESSION['login'])) { echo "Para acessar essa pagina é preciso esta logado!"; }

else{

$Gms = mssql_fetch_row(mssql_query("select painelgm from memb_info where memb___id='".$login."'"));

if($Gms[0] <= 0) { echo "Voce nao faz parte da Administração"; }

else{ ?>

<h1>Gerenciar Administradores/GMs</h1>

<div class="qdestaques">

<form id="form2" name="form2" method="post" action="?go=geradmsite&act=adm">

<table width="293" height="127" border="0" cellpadding="0" cellspacing="0">

<tr>

<td valign="top"><table width="294" height="116" border="0" cellpadding="0" cellspacing="0">

<tr>

<td width="120" height="19">Conta</td>

<td width="174"><select name="acc" id="acc">

<?

$Accs = mssql_query("select Memb___id from MEMB_INFO WHERE vip = '0'");

for($p=0;$p<mssql_num_rows($Accs);$p++) {

$Acc=mssql_fetch_row($Accs);

echo '<option value='.$Acc[0].'>'.$Acc[0].'</option>';

}

?>

</select></td>

</tr>

<tr>

<td height="19"><span class="style3">Cargo no Site</span></td>

<td><select name="cargosite" size="1" id="cargosite">

<option value="ns2" selected="selected">Selecione Um...</option>

<option value="0">Usuário Normal</option>

<option value="1">GM</option>

<option value="2">Admin</option>

</select></td>

</tr>

<tr>

<td height="19"> </td>

<td> </td>

</tr>

<tr>

<td height="19" colspan="2"><input type="submit" name="button2" id="button2" value="Salvar" /></td>

</tr>

<tr>

<td colspan="2"><br />

Consulte também: <a href="?go=geradmjogo"><strong>Ger. Admins</strong></a></td>

</tr>

</table></td>

</tr>

</table>

</form>

</div>

 

 

<?

}

if ($act == 'adm') {

$conta = $_POST['acc'];

$cs = $_POST['cargosite'];

 

$dados_login_vip_q = mssql_query("SELECT * FROM MEMB_INFO WHERE memb___id = '$acc'");

$dados_login_vip = mssql_fetch_array($dados_login_vip_q);

 

if (empty($acc) || $cs == ns2) {

echo "<script>alert('Você esqueceu algum Campo em Branco.')</script>";

} elseif (mssql_num_rows($dados_login_vip_q) <= 0) {

echo "<script>alert('Esta Account não existe.')</script>";

header("Location: index.php ");

} else {

mssql_query("UPDATE MEMB_INFO SET

painelgm='".$cs."'

WHERE memb___id='".$conta."'");

 

echo "<div align='center'>Ok!<br><br></div>";

echo '<br>';

}

}

}

?>

 

Preciso usar um código para redirecionar a pessoa para a página index (no caso). Não tenho problema com o site, somente com essa parte em vermelho, ou seja, só a parte do redirecionamento.

 

O que fazer sem dar o erro de header? Que comando usar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se não me engano, você não pode usar header: location, depois de já ter enviado cabeçalhos HTML..

por isso dá o erro.

e a linha da meta tag, tente assim:

echo '<meta http-equiv="refresh" content="1;URL=página_x.php" />';

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olha... nunca usei sem ^^

E o problema do header location? conseguiu resolver?

 

coloca ele antes, de mandar os <html><head>...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao Igor, eu sempre usei echo ".... content='0; algumapágina.php'>"; e sempre foi normalmente.

 

=/

 

 

Sim William, consegui! Muito Obrigado!

 

 

Dúvida resolvida!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você pode solucionar esse problema usando a função ob_start() no topo de sua página php, assim o header("Location: xx") não irá causar erros...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Amigo header(); é uma função que deve vir antes de qualquer string.

 

Vou tentar ser mais claro, você não pode fazer isso:

<?php
echo "texto";
header("Location: pagina.php");
?>

deve-se fazer assim:

<?php
header("Location: pagina.php");
echo "texto";
?>
-----------------------------------

Não pode fazer assim:

<p>asdasdasdasd</p>
<?php
header("Location: pagina.php");
echo "texto";
?>
assim é o certo:

<?php
header("Location: pagina.php");
echo "texto";
?>
<p>asdasdasdasd</p>
---------------------------------------

 

Header e SESSION são funções que devem ser iniciadas no CABECARIO, o proprio nome diz HEADER=cabeçario.

Strings(ECHO, PRINT, etc) São do CORPO o corpo nunca deve vir antes do cabeçario. Meu sinceramente já falaram bastante disso aqui no forum, usar o buscador as vezes não custa nada né? hehehehehe

 

Leia a documentação PHP antes de usar uma função, vai lhe ajudar bastante amigo:

http://br.php.net/manual/pt_BR/

http://br.php.net/tut.php

 

Sobre a função HEADER: http://br.php.net/header

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.