Ir para conteúdo

POWERED BY:

Arquivado

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

Paulo Rodrigues

Site com includes, não da pra usar header location?

Recommended Posts

Bem, eh o problema que esta acontecendo comigo..

tenho um form de cadastro e tal, assim que eu registro as coisas tudo

o code da um header location e manda para outra tela.

mas nao consigo mandar para esta outra tela... o cadastro é realizado! direitinho.. da pra conferir no banco, mas ele nao troca de pagina, fica na mesma e manda a mensagem no topo:

 

Warning: Cannot modify header information - headers already sent by (output started at d:\sites\adv\web\admin.php:4) in d:\sites\adv\web\add_tipoloja.php on line 45

 

Eu li alguns topicos, falando de espaços em branco no codigo e tal, mas esses nao existem, procurei no Google algo sobre tambem, e num forum do mambo, havia um cara falando que include x headers nao dava certo..

Ele disse o seguinte:

if you use include or require in your page. don't use similar header in current page and included page. This is important header must be top of the codes. Don't use headers bottom of html codes.

como devo proceder entao? o code foi elaborado pelo dreamweaver, ta mais ou menos assim:

 

$insertGoTo = "ver_tipoloja.php";

if (isset($_SERVER['QUERY_STRING'])) {

$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";

$insertGoTo .= $_SERVER['QUERY_STRING'];

}

header(sprintf("Location: %s", $insertGoTo));

}

 

Essa linha em negrito, é a linha 45 que o Warning diz.

 

Vlw ae galera, conto com ajuda de vcs =) :natalw00t:

Compartilhar este post


Link para o post
Compartilhar em outros sites

O comando Header nao pode vir depois de nenhuma saida de texto/html...

Caso não de para para mudar utilize ob_start()

 

 

http://br.php.net/manual/pt_BR/function.ob-start.php

Uhm.. coloquei o ob_start, ele nao mostra mais o warning, Faz a inserção do registro, mas continua na mesma tela.

Tipo, eu aperto o botao ele grava, e volta para a mesma.. Não sei ao certo se coloquei a sintax do comando ob_start corretamente, alias, eu apenas tirei o header e coloquei o ob_start, o que tinha antes, na sintax do header eu deixei, nao deu erro, mas parece que nao funcionou neh =P

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ainda nao deu certo, não sei se entendi direito. eu retiro o header, coloquei o ob_Start no inicio de tudo, ou mantenho o header ? porque mantendo ele, nao funciona e retorna a mesma mensagem..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui segue ele, original, sem ob_start()

 

<?php require_once('Connections/conecta.php'); ?><?phpfunction GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "") {  $theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;  switch ($theType) {	case "text":	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";	  break;		case "long":	case "int":	  $theValue = ($theValue != "") ? intval($theValue) : "NULL";	  break;	case "double":	  $theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";	  break;	case "date":	  $theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";	  break;	case "defined":	  $theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;	  break;  }  return $theValue;}$editFormAction = $_SERVER['PHP_SELF'];if (isset($_SERVER['QUERY_STRING'])) {  $editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);}if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {  $insertSQL = sprintf("INSERT INTO tipo_loja (tipo_loja) VALUES (%s)",					   GetSQLValueString($_POST['tipo_loja'], "text"));  mysql_select_db($database_conecta, $conecta);  $Result1 = mysql_query($insertSQL, $conecta) or die(mysql_error());  $insertGoTo = "ver_tipoloja.php";  if (isset($_SERVER['QUERY_STRING'])) {	$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";	$insertGoTo .= $_SERVER['QUERY_STRING'];  }  header(sprintf("Location: %s", $insertGoTo)); }mysql_select_db($database_conecta, $conecta);$query_rstipo = "SELECT * FROM tipo_loja";$rstipo = mysql_query($query_rstipo, $conecta) or die(mysql_error());$row_rstipo = mysql_fetch_assoc($rstipo);$totalRows_rstipo = mysql_num_rows($rstipo); ?><!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=iso-8859-1" /><title>Add Tipo de Lojas</title><link href="includes/style.css" rel="stylesheet" type="text/css"></head><body><p><b>Lojas</b> - Adicionar tipos de Loja</p><form id="form1" name="form1" method="POST" action="<?php echo $editFormAction; ?>">  <p>Digite o nome da categoria para novo Tipo de Loja:<br />	  <br />	  <input name="tipo_loja" type="text" class="form" id="tipo_loja" size="32" />	  <br />	  <br />	  <input name="Submit" type="submit" class="form" value="Inserir" />  </p>  <input type="hidden" name="MM_insert" value="form1"></form><p> </p></body></html><?phpmysql_free_result($rstipo);?>

Essa é o arquivo add_tipoloja.php ele é incluso dentro da main.php

quando eu inserir o novo tipo, ele tem que ir para a pagina "ver_tipolojas.php" que lista todas que existem, inclusive a recem inserida ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troquei, fiz esse código que me mandou, e caiu na pergunta que deixei aquela hora, o retorno foi o seguinte:Warning: Cannot modify header information - headers already sent by (output started at d:\sites\adv\web\admin.php:4) in d:\sites\adv\web\add_tipoloja.php on line 47=S

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.