Jump to content
xico127

Ajuda session_start()

Recommended Posts

xico127

Eu uso este codigo para verificar se o utilizador esta com sessao iniciada

mas da-me este erro:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\agrup268\Adm\galeria.php:1) in C:\xampp\htdocs\agrup268\Adm\verifica.php on line 5



<?php 
include "config.php";


session_start();

if(isset($_SESSION['login_utilizador']) and isset($_SESSION['pass_utilizador'])){
$login_utilizador=$_SESSION['login_utilizador'];
$pass_utilizador=$_SESSION['pass_utilizador'];

$sql=mysql_query("select * from login where login='$login_utilizador' ");

$cont=mysql_num_rows($sql);

while($linha=mysql_fetch_array($sql)){
$nome=$linha['nome'];
$pass_db=$linha['pass'];
}
if($cont==0){

unset($_SESSION["login_utilizador"]);
unset($_SESSION["pass_utilizador"]);

echo "<meta http-equiv=refresh content='0; url=../index.php'>
<script type=\"text/javascript\">
alert (\"O nome de utilizador não existe ;( \");
</script>";
}
if ($pass_db != $pass_utilizador){

unset($_SESSION["login_utilizador"]);
unset($_SESSION["pass_utilizador"]);

echo "<meta http-equiv=refresh content='0; url=../index.php'>
<script type=\"text/javascript\">
alert (\"A pass do  utilizador não existe ;( \");
</script>";
}

}else{
unset($_SESSION["login_utilizador"]);
unset($_SESSION["pass_utilizador"]);

echo "<meta http-equiv=refresh content='0; url=../index.php'>
<script type=\"text/javascript\">
alert (\"O utilizador e a password não existem ;( \");
</script>";
}
?>

alguem me pode ajudar novamente??

Share this post


Link to post
Share on other sites
ruimcosta

Biba,

o session_start() "tem" de ser a 1ª linha do ficheiro, isto em situações normais. No teu caso basta solocar o session_start() antes do include "config.php"


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
brunoais

Biba,

o session_start() "tem" de ser a 1ª linha do ficheiro

Não tanto Muitas vezes dá mais jeito estar algumas linhas depois

Mostra o verifica.php, o config.php e o \Adm\galeria.php sff

Edit: Um exemplo de estar linhas depois é um programa em PHP chamado travsync em que eu estou a participar.


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
ruimcosta

Para resolver esta situação, vejam o pequeno exemplo abaixo e adaptem.

<?php
ob_start();

echo 'olá ';

session_start();

$_SESSION['user'] = 'Rui';

echo $_SESSION['user'];

?>


Abraços e beijinhos,Rui Costa

Share this post


Link to post
Share on other sites
xico127

verifica.php:

<?php 
session_start();

$db=mysql_connect("localhost", "root", "");
$dados=mysql_select_db("agrup268_bd", $db);


if(isset($_SESSION['login_utilizador']) and isset($_SESSION['pass_utilizador'])){
$login_utilizador=$_SESSION['login_utilizador'];
$pass_utilizador=$_SESSION['pass_utilizador'];

$sql=mysql_query("select * from login where login='$login_utilizador' ");

$cont=mysql_num_rows($sql);

while($linha=mysql_fetch_array($sql)){
$nome=$linha['nome'];
$pass_db=$linha['pass'];
}
if($cont==0){
/*destruição das variáveis de sessão atraves de unset*/
unset($_SESSION["login_utilizador"]);
unset($_SESSION["pass_utilizador"]);

echo "<meta http-equiv=refresh content='0; url=../index.php'>
<script type=\"text/javascript\">
alert (\"O nome de utilizador não existe ;( \");
</script>";
}
if ($pass_db != $pass_utilizador){

unset($_SESSION["login_utilizador"]);
unset($_SESSION["pass_utilizador"]);

echo "<meta http-equiv=refresh content='0; url=../index.php'>
<script type=\"text/javascript\">
alert (\"A pass do  utilizador não existe ;( \");
</script>";
}

}else{
unset($_SESSION["login_utilizador"]);
unset($_SESSION["pass_utilizador"]);

echo "<meta http-equiv=refresh content='0; url=../index.php'>
<script type=\"text/javascript\">
alert (\"O utilizador e a password não existem ;( \");
</script>";
}
?>

galeria.php:

<?
include "verifica.php";
?>
<!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=utf-8" />
<title>Galeria</title>
<?
include "css.php";
?>
</head>
<body id="body">
<?
include "config.php";
?>
<div id="geral">
    <div id="topo">
   </div><!--Fim da Div Topo-->
      <div id="menu"><ul><? include "menu.php"; ?></ul>
      </div><!--Fim da Div menu-->
             <div id="logins">
<center><b><font size="4px" color="#FFFFFF">Acesso</font></b></center>
<p style="padding-left:15px; padding-bottom:5px;"><? echo "Olá $nome" ?><br />
<a href="logout.php" style="color:#000"> Sair </a></p>

</div><!--Fim da div login-->
<div id="conteudo">
            <?
if ($_GET['funcao']!='alterar')
{
?>
<form id="form1" name="form1" method="post" action="funcao_galeria.php?funcao=gravar" enctype="multipart/form-data">
<label></label>
<table width="90%" border="0" cellpadding="3" cellspacing="3">
<tr>
<td width="24%"><strong>Imagem:</strong></td>
<td width="76%">
<input type="file" name="arquivo" id="arquivo" size="50"/></label>
</td>
</tr>
<tr><td><strong>Descrição: </strong></td><td>
<textarea name="texto" id="texto" cols="50" rows="8" ></textarea>
</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="button" value="Inserir" /></td>
</tr>
</table>
</form>
<hr />
<?
$sql=mysql_query("select * from galeria");
while ($linha=mysql_fetch_array($sql)) {
$foto=$linha['foto'];
$texto=$linha['texto'];
$id=$linha['id'];
?>
<table width="160px"><tr><td colspan="2">
<img src="fotos/<? echo $foto ?>" width="160px" /></td></tr>
<tr><td colspan="2" align="center"><? echo $texto ?></td></tr>
<tr><td>
<a href="galeria.php?funcao=alterar&id=<? echo $id ?>" style="color:#000"><strong>Alterar</strong></a></td><td> <a href="funcao_galeria.php?funcao=excluir&id=<? echo $id ?>" style="color:#000"><strong>Excluir</strong></a></td></tr></table>
<?
}
}
else {
?>
<?
$id=$_GET['id'];
$sql=mysql_query("select * from galeria where id=$id");
while ($linha=mysql_fetch_array($sql)) {
$texto=$linha['texto'];

$id=$linha['id'];
}
?>
<form id="form1" name="form1" method="post" action="funcao_galeria.php?funcao=alterar&id=<? echo $id ?>" enctype="multipart/form-data">
<label></label>
<table width="90%" border="0" cellpadding="3" cellspacing="3">
<tr>
<td width="24%"><strong>Imagem:</strong></td>
<td width="76%">
<input type="hidden" name="enviar_mensagem" id="enviar_mensagem" onclick="document.form1.arquivo.disabled=false" value="sim" checked="checked"/>
<label><br />
<input type="file" name="arquivo" id="arquivo" size="50"  /></label>
</td>
</tr>
<tr><td><strong>Descrição: </strong></td><td>
<textarea name="texto" id="texto" cols="50" rows="8" ><? echo $texto ?></textarea>
</td>
</tr>
<tr>
<td> </td>
<td><input type="submit" name="button" value="Alterar" /></td>
</tr>
</table>
</form>
<br /><br />
<a href="javascript:history.back();" style="color:#000000">Voltar</a>
<?
}
?>
</div><!--Fim da div conteudo-->
    <div id="rodape">
    </div><!--Fim da div rodape-->
</div><!--Fim da Div Geral-->
</body>
</html>

Share this post


Link to post
Share on other sites
mjamado

xico127, quase de certeza tens um espaço, ou uma linha em branco, logo no início do ficheiro galeria.php. Verifica.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
brunoais

verifica.php:

...

</body>

</html>

Por favor!!! usa as tags code!!!


ADD:

xico127, quase de certeza tens um espaço, ou uma linha em branco, logo no início do ficheiro galeria.php. Verifica.

Concordo mas queria confirmar antes de dizer algo.

Pode tb ser só o BOM de ser UTF-8


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
anolsi

Aquele código que apresentas-te no primeiro post é de que ficheiro?


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites
xico127

Tipo aquele codigo é o que faz a verificacao em todas as paginas! para ver se o utilozador fez o login ou nao!

Share this post


Link to post
Share on other sites
mjamado

não o problema não é dos espaços em branco!

:)

Não tens absolutamente nada antes de <? no galeria.php? De certeza? Já verificaste? E o servidor, suporta short-tags? Já experimentaste trocar os <? para <?php?


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
mjamado

Nunca usei o XAMPP, mas penso que as short-tags vêm desactivadas por defeito (e ainda bem - short-tags é má prática e vão ser descontinuadas no PHP6).

Como tal, tens que mudar todas as tuas <? para <?php, por exemplo:

<? // ERRADO
include "verifica.php";
?>

<?php // CORRECTO
include "verifica.php";
?>

Testa, e diz coisas.

P.S.: por acaso, isto está-me a moer a cabeça - se as short-tags estão desactivadas, o PHP não deveria reconhecer aquele bloco como código PHP e fazer o include, coisa que está a fazer correctamente, visto que o erro é disparado no ficheiro incluído... Como nunca usei nem o XAMPP, nem desenvolvimento em máquinas Windows, para todos os efeitos, é possível que seja alguma particularidade destes sistemas. Testa, de qualquer maneira...


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
anolsi

como assim <php? eu estou a usar o xampp é localhost!

É <?php e não <php?

Mas então aquele código que colocaste primeiro está em todas as tuas páginas embutido? E já experimentas-te passar o session_start() para a primeira linha, no caso de não te fazer diferenças (porque tal como o brunoais disse, muitas vezes é necessário ser feito só depois)? E deu o mesmo erro...


"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Share this post


Link to post
Share on other sites
mjamado

Eh, gente, deixem lá o session_start() sossegado! Leiam o erro correctamente:

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\agrup268\Adm\galeria.php:1) in C:\xampp\htdocs\agrup268\Adm\verifica.php on line 5

O erro é dali, na linha 1.


"Para desenhar um website, não tenho que saber distinguir server-side de client-side" - um membro do fórum que se auto-intitula webdesigner. Temo pelo futuro da web.

Share this post


Link to post
Share on other sites
brunoais

Será que é o BOM (o ficheiro está em utf-8 com BOM) no ficheiro galeria.php?


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
xico127

o xampp aceita short-tags mas este erro é realmente manhoso!

e nao sei porque me da Cannot send session cache limiter

e já estou a bater um bocado mal! e ja tentei todas as solucoes aqui propostaas mas nao esta facil o erro nao desaparece!

:)

Share this post


Link to post
Share on other sites
brunoais

Mostra as 1as 3 linhas do galeria.php

dentro das tags code sff

E, já agora, qual é que é q codificação do galeria.php?

ANSI? UTF-8?...


"[Os jovens da actual geração]não lêem porque não envolve um telecomando que dê para mirar e atirar, não falam porque a trapalhice é rainha e o calão é rei" autor: thoga31

Life is a genetically transmitted disease, induced by sex, with death rate of 100%.

Share this post


Link to post
Share on other sites
xico127

<?php
include "validacao.php";
?>

estas sao as 3 primeiras linhas do galeria.php e esta em utf-8

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

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.