Srs, bom dia!
Após a publicação da aplicação em www.000webhost.com eu tive problemas com as sessions.
Eu tenho três arquivos, Index, Hader e Erros. O index é minha página inicial o header o cabeçalho HTML e Erros onde eu faço a impressão das mensagens de erros.
Dentro do meu index eu faço um require_once para o Header e depois para o Erro. Eu começo a trabalhar efetivamento com PHP e sessions apenas no arquivo de Erros, antes disso só tenho html.
Eu me deparei com o seguinte erro: "Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at"
A minha session_start() estava no arquivo de Erros. Eu consegui resolver mudando a session para o inicio do arquivo index. Mas estou sem compreender a solução. A session_start() deve vir antes de qualquer código HTML, CSS, PHP etc...?
Este erro só aconteceu quando eu publiquei o site, no meu ambiente local eu não tive essa dificuldade.
Index
<?php
session_start();
require_once('header.php');
?>
<body>
<table class="alert">
<tbody>
<?php require_once('erros-handling.php'); ?>
</tbody>
</table>
<form action="../../controllers/home/login.php" method="post">
<div class="login-box">
<div class="login-box-inside">
<div class="login-box-label">Login de acesso</div>
<div class="input-email" id="input-email">
<input type="email" name="email" value="<?=$field['email']?>" placeholder="Digite o seu email">
</div>
<div class="input-password" id="input-password">
<input type="password" name="password" value="<?=$field['password']?>" placeholder="Informe a sua senha ">
</div>
<div class="buttons">
<div class="chbx-password">
<input type="checkbox" name="forgetfulPassword">Esqueci a senha
<button type="submit" class="btn-login">Login</button>
</div>
</div>
<div class="new-user">
<a href="../user/new.php">Cadastro</a>
</div>
</div>
</div>
</form>
</body>
</html>
Header
<!DOCTYPE html>
<html>
<head>
<title>Index</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="../css/style/reset.css">
<link rel="stylesheet" type="text/css" href="../css/main.css">
<link rel="stylesheet" type="text/css" href="../css/style/home/index.css">
<link rel="stylesheet" type="text/css" href="../css/style/user/message.css">
</head>
Erros
<?php
require_once('../../controllers/global/validation.php');
require_once('../../controllers/global/session.php');
$field = array('email' =>"", 'password' => "");
array_key_exists('email', $_SESSION) ?
$field['email'] = $_SESSION['email'] : "";
global_kill_session('email');
array_key_exists('password', $_SESSION) ?
$field['password'] = $_SESSION['password'] : "";
global_kill_session('password');
if(array_key_exists('emptyField', $_SESSION)){
global_kill_session('emptyField');
$erros = global_session_set_erro();
foreach($erros as $erro): ?>
<tr>
<td><?=$erro?></td>
</tr>
<?php global_kill_session($erro);
endforeach;
}else if(array_key_exists('insertSuccess', $_SESSION)){
$msg = global_session_show_msg('insertSuccess'); ?>
<tr>
<td><?=$msg?></td>
</tr>
<?php global_kill_session('insertSuccess');
}else if(array_key_exists('noRecord', $_SESSION)){
$msg = global_session_show_msg('noRecord'); ?>
<tr>
<td><?=$msg?></td>
</tr>
<?php global_kill_session('noRecord');
}elseif(array_key_exists('accessFails', $_SESSION)) {
$msg = global_session_show_msg('accessFails'); ?>
<tr>
<td><?=$msg?></td>
</tr>
<?php global_kill_session('updateSuccess');
}elseif(array_key_exists('updateSuccess', $_SESSION)) {
$msg = global_session_show_msg('updateSuccess'); ?>
<tr>
<td><?=$msg?></td>
</tr>
<?php global_kill_session('updateSuccess'); } ?>
```