Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Olá bom dia!!
Pessoas do fórum.
Finalizei a programação de uma pagina da internet, quando ela estava na minha maquina rodando com o xampp, estava tudo ok funcionava tudo bem. porem agora upei a mesma para um servidos online para colocá-lo online, porem agora sempre que vou usar o lugar onde efetuo o login no site para publicar noticias ele da o seguinte erro.
Warning: Cannot modify header information - headers already sent by (output started at /home/aprsoluc/public_html/bd/funcoes_usuario.php:32) in /home/aprsoluc/public_html/valida.php on line 16
Vi na net por ai que ocorre porque o session_start(), e os cokies e os header("Location: ...") devem vir em primeiro lugar no código, porem no meu caso é praticamente impossível o header vir em primeiro lugar , visto que o mesmo esta dentro de um if e else, tentei criar uma função e colocá-la em primeiro lugar e depois apenas chamar dentro do if e else, porem continua igual.
E ai como vocês contornam este erro maldito.??????
Aqui o codigo onde esta dando o erro!!
<?php
require_once("bd/funcoes_usuario.php");
require_once("bd/conexao.php");
$email = $_POST["email"];
$senha = $_POST["senha"];
$usuario = buscausuario($conexao, $email, $senha);
if($usuario != NULL){
logausuario($email);
header("Location:restrito.php");
}
else{
$_SESSION["danger"] = "Senha ou login incorretos.";
header("Location:login.php");
}
die();
?>Em conexão.php e funcoes_usuario.php deve ter algum código HTML sendo renderizado. Tire ele e tente novamente.
olá na real eu criei este script onde coloqueui apenas as funçoes de validação e contato com o banco de dados do usuario, portanto so tem codigo php, mas eu do include nele em outros codigos html, tomei o cuidado de colocalos sempre no inicio da pagina antes de qualquer codigo html, mas acho que o problema possa estar aqui.
Dei o include antes, porem cheia funçãodepois de um codido html sera??
<?php
require_once("bd/funcoes_usuario.php");
require_once("bd/conexao.php");
$email = $_POST["email"];
$senha = $_POST["senha"];
$usuario = buscausuario($conexao, $email, $senha);
if($usuario != NULL){
logausuario($email);
header("Location:restrito.php");
}
else{
$_SESSION["danger"] = "Senha ou login incorretos.";
header("Location:login.php");
}
die();
?>Veja se não tem nenhum HTML, um espaço vazio antes desse PHP, algo tem.
Aí não tem nada, seu código aparentemente está certo.
output started at /home/aprsoluc/public_html/bd/funcoes_usuario.php:32
Ele te diz até onde está a saída que está causando o erro... como dito um simple espaço em branco causa isto.
Olá vou largar o codigo que vocês sugerem que tenha algum html porque ja revisei ele todinho o unico lugar que tem e bem no meio mas nao iria interferir pois ate deletei lee e nao resolveu o meu problema ohem o codigo se encontrarem agradeço pois estou o dia inteiro procurando este erro. kkk
<?php
session_start();
function usuarioestalogado(){
return isset($_SESSION['usuario_logado']);
}
function verificausuario(){
if(!usuarioestalogado()){
$_SESSION['danger'] = "Você nao tem acesso a esta funcionalidade.";
header("Location:login.php");
die();
}
}
function usuariologado(){
return $_SESSION['usuario_logado'];
}
function buscausuario($conexao, $email, $senha){
$senhaMd5=md5($senha);
$email = mysqli_real_escape_string($conexao, $email);
$query = "select * from usuarios where nome='{$email}' and senha='{$senhaMd5}'";
$resultado=mysqli_query($conexao, $query);
$usuario=mysqli_fetch_assoc($resultado);
return $usuario;
}
function logausuario($email){
return $_SESSION['usuario_logado']=$email;
}
function logout(){
return session_destroy();
}
?>
<?php
function mostraalerta($tipo){
if(isset($_SESSION[$tipo])){
?>
<p class="alert-<?=$tipo?>"><?=$_SESSION[$tipo]?></p>
<?php
unset($_SESSION[$tipo]);
}
}
?>A linha 32 é exatamente a seguinte:
?> -31
<?php -32
Primeiro que isso é inútil, fechar a tag e depois abrir não faz sentido, segundo que copiando/colando o que você postou o editor mostra que existem espaços em branco. Retire isso dai e remova a identação de todas as tags de abertura.
Olla Blz
Obrigado funcionou o problema estava so no fechar e abrir novamneten a tag php daquela forma valeu.
Pnsei que nao tivesse problema.
Eduardo,
geralmente não tem problema. O problema é que tinha HTML entre esse fecha e abre.
mas so que tipo eu mantive o html, ate porque preciso dele para exibir uma informaçao quando efetuo o header ficou assim e funcionou normalmente.
?>
<p class="alert-<?=$tipo?>"><?=$_SESSION[$tipo]?></p>
<?php
unset($_SESSION[$tipo]);
}
}
?>
So evitei de fechar a tag php e abrir novamente, fis isos um unica vez.
Tem algum HTML antes deste código?