Jump to content
Ak_Ray

Warning : session_start(): Cannot start session when headers already sent

Recommended Posts

Olá, estou com problemas para fazer conexão com a minha conta adm e acessar a página que desejo. Testei o código em um servidor local criado pelo xampp e funciona normalmente, mas foi só fazer um upload para a web e parou de funcionar. Erro: 

 

Warning: session_start(): Cannot start session when headers already sent in [...] on line28

 

Código (página de acesso) -------------------------------------------------------------------------------------

<?php
require_once '../../Controller/adm-login/checarexistencia.php';
$u = new Usuario;?>
<html lang="pt-br">
<head>
<link rel="shortcut icon" href="../../Model/img/cadeado.png">
<meta charset="utf-8">
<link rel="stylesheet" href="../../Model/estilo/estilodado.css" type="text/css" media="screen">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.2/css/all.css"
        integrity="sha384-oS3vJWv+0UjzBfQzYUhtDYW+Pj2yciDJxpsK1OYPAYjqT085Qq/1cq5FLXAZQ7Ay" crossorigin="anonymous">
<title> Dados Restritos </title>
</head> <body>
  <div class="container">
    <div class="content first-content">           
           <div class="second-column">
            <p class="title1"> Usuário </p>
            <form class="form" method="POST">
              <label for="" class="label-input">
                <i class="far fa-user"></i>
              <input class="form-input" type="text" name="nome" required  placeholder="Usuario" maxlength="50"></label> 
              <label for="" class="label-input">
                <i class="fas fa-key"></i>
              <input class="form-input" type="password" name="senha" required placeholder="Senha" maxlength="45"></label> 
              <input class="btn" type="submit" value="Login">

<?php
if(isset($_POST['nome']))
 {
  $nome = addslashes($_POST['nome']);
  $senha = addslashes($_POST['senha']);
  //verificar se não está vázio
  if(!empty($nome) && !empty($senha))
  {

     //obs: deixei sem as informações de conexão com o banco, mas está conectando corretamente
     $u->conectar("#,"#","#,"#");
      if($u->msgErro == "")//se esta tudo ok
         {
      
         if($u->logar($nome,$senha)){
         header('Location: ../../View/dadosfiltrados.php');
    }
    else{
      ?>
        <div class="msg-erro">
        Usuario ou senha estão incorretos!
        </div>
      <?php
      }
     }
     else{
      ?> 
        <div class="msg-erro">
        <?php echo "Erro ".$u->msgERRO; ?>  
        </div>  
      <?php
     }

    }
    else{
      ?>
      <div class="msg-erro">
       Preencha todos os campos!
        </div>
    <?php
    }
}
 ?></form></div></div>
<a class="home animacao" href="../View/index.php"><img src="../../Model/img/home.png"></a>

</body>
</html>

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

 

Código (checar existência de usuário) -----------------------------------------------------------------------

<?php
$mysqli = new PDO("mysql:dbname=#;host=#","#","#"); 
 class Usuario
{
    private $pdo;
    public $msgErro = "";
    public function conectar($nome, $host, $usuario, $senha)
    {
        global $pdo;
        global $msgErro;
        try {
        $pdo = new PDO("mysql:dbname=".$nome.";host=".$host,$usuario,$senha);    
        } catch (PDOException $e) {
            $msgErro = $e->getMessage(); 
        }
        
    }  
    public function logar($nome, $senha)
    {
        global $pdo;
       
        $sql = $pdo->prepare("SELECT * from admin where nome = :n and senha = :s");
        $sql->bindValue(":n",$nome);
        $sql->bindValue(":s",md5($senha));
        $sql->execute();
        if($sql->rowCount() > 0)
        {
           $dado = $sql->fetch();
           session_start();
           $_SESSION['idadmin'] = $dado['idadmin'];
           return true; 
        }
        else
        {
           return false;
        }
    }
}?>

Share this post


Link to post
Share on other sites

Olá!

Essa mensagem aparece quando alguma coisa já foi entregue para o browser.
Lembre-se:
php é server side
html é client side
Separar a lógica da apresentação já vai te ajudar bastante.
Se preferir, use o padrão MVC

Share this post


Link to post
Share on other sites
Em 19/11/2019 at 18:44, tetsuo disse:

Olá!

Essa mensagem aparece quando alguma coisa já foi entregue para o browser.
Lembre-se:
php é server side
html é client side
Separar a lógica da apresentação já vai te ajudar bastante.
Se preferir, use o padrão MVC

Certo Obrigado :)  Consegui resolver logo após mandar a mensagem no forum, se alguém estiver passando pelo mesmo problema tenta colocar o "session_start()" antes de tudo mesmo (mesmo que só tenha php). Caso não for tente retirar o espaço ao final e antes abrir <?php 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By david2007
      Endpointer Framework é um Framework PHP para construção de APIs REST com Programação Procedural.
       
      http://endpointer.com
       
      Endpointer Framework é Código Aberto sob a licença MIT

    • By Web.Developer
      { "message":"encontrado.", "resultados":[ { "transacao":"23424324324", }, { "transacao":"2342342432424", } ] } preciso montar um API assim na onde está transacao tem que vim do banco de dados, depois retorna para as pessoas a array dessa formula
    • By david2007
      Endpointer Framework é um Framework PHP para construção de APIs REST com Programação Procedural.
       
      Todas as regras de negócio são implementadas como Stored Procedures.
       
      http://endpointer.com
       
      Endpointer Framework é Código Aberto sob a licença MIT

    • By david2007
      Endpointer Framework é um Framework PHP para construção de APIs REST com Programação Procedural.
       
      http://endpointer.com
       
      Endpointer Framework é Código Aberto sob a licença MIT

    • By david2007
      Endpointer Framework é um Framework PHP para construção de APIs REST com Programação Procedural.
       
      http://endpointer.com
       
      Endpointer Framework é Código Aberto sob a licença MIT
       

×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.