JoaoPCarvalho Posted November 26, 2009 at 09:58 AM Report Share #297603 Posted November 26, 2009 at 09:58 AM Boas, Estou a programar em php, mas está a aparecer o seguinte erro: Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\valida\trataLogin.php:1) in C:\xampp\htdocs\valida\trataLogin.php on line 3 Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\valida\trataLogin.php:1) in C:\xampp\htdocs\valida\trataLogin.php on line 24 Codigo: index.php <?php if (!isset($_SESSION)){ session_start(); } ?> <?php require('funcoes.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>Untitled Document</title> </head> <body> <table width="600" border="1" align="center"> <tr> <td><img src="logo.gif" width="600" height="130" /></td> </tr> <tr> <td> <?php if(!isset($_SESSION['MM_Username'])){ ?> <form id="form1" name="form1" method="POST" action="trataLogin.php"> Nome: <input name="nome" type="text" id="nome" size="8" /> Password: <input name="password" type="password" id="password" size="8" /> <input type="submit" name="button" id="button" value="Login" /> </form> <?php } else echo $_SESSION['MM_Username'];?> </td> </tr> <tr> <td height="89"> </td> </tr> <tr> <td> </td> </tr> </table> </body> </html> trataLogin.php <?php if (!isset($_SESSION)){ session_start(); } ?> <?php require_once('Connections/web.php'); ?> <?php require_once('funcoes.php');?> <?php $nome = GetSQLValueString($_POST['nome'],"text","",""); $password = GetSQLValueString($_POST['password'],"text","",""); $query = "SELECT login FROM user WHERE login = $nome AND password = md5($password)"; mysql_select_db ($database_web); $resultado = mysql_query ($query); if(mysql_num_rows ($resultado) == 1) { $_SESSION['MM_Username']=$nome; } else { } ?> <?php header("location:.../valida"); ?> Estes ficheiros no Windows XP não dão o referido erro, mas no vista e no Windows 7 dão. Alguém me pode ajudar. Obrigado Link to comment Share on other sites More sharing options...
yoda Posted November 26, 2009 at 10:54 AM Report Share #297606 Posted November 26, 2009 at 10:54 AM Dreamweaver não é grande ferramenta, deve estar-te a por algum caracter (espaço ou assim) que faz com que o mesmo seja escrito e acabe com a função. session_start deve ser a primeira função a ser chamada. before you post, what have you tried? - http://filipematias.info sense, purpose, direction Link to comment Share on other sites More sharing options...
JoaoPCarvalho Posted November 26, 2009 at 12:15 PM Author Report Share #297613 Posted November 26, 2009 at 12:15 PM Mas a função session_start(), está sempre no início. Espaços não existem, tive esse cuidado. O que eu estou a achar estranho é que este problema aparece apenas com o vista e com o windows 7. Com o XP já não mostra nenhum warning. Obrigado Link to comment Share on other sites More sharing options...
scorch Posted November 26, 2009 at 08:49 PM Report Share #297682 Posted November 26, 2009 at 08:49 PM Cria um novo documento. Escreve lá: <?php if (!isset($_SESSION)){ session_start(); } E depois o resto do código. Sei que pode parecer estúpido, mas a mim já me aconteceu esse erro a passar de WAMP para XAMPP, e foi assim que resolvi o problema. 🙂 PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to comment Share on other sites More sharing options...
JoaoPCarvalho Posted November 26, 2009 at 11:15 PM Author Report Share #297716 Posted November 26, 2009 at 11:15 PM continua sem dar nada. Como elimino o aviso deste tipo de erros no dreamweaver? uma vez que deve estar tudo bem, pois funciona bem no xp. Link to comment Share on other sites More sharing options...
jreis Posted November 27, 2009 at 01:50 AM Report Share #297722 Posted November 27, 2009 at 01:50 AM Verifica se não estás a guardar os ficheiros com a BOM (Byte Order Mark), isso pode gerar esse erro. Se estiveres a usar o Dreamweaver, procura algures nas preferências, na secção respectiva á gravação de ficheiros (não te sei precisar exactamente onde, já não uso o Dreamweaver há algum tempo), a opção respectiva e desactiva-a. Depois, tens de criar um novo ficheiro, copiar/colar o conteúdo do original, guardar por cima do original, e está feito. Este último passo poderá ser desnecessário em versões mais recentes do Dreamweaver, experimenta. Se estiveres a usar outro programa, procura nas preferências por algo similar. Existem também programas que removem automaticamente a BOM quando guardam um ficheiro, daí ser possível abrires o ficheiro noutro programa, voltares a guardar o ficheiro (mesmo sem nenhuma alteração real), e ele já funcionar. Também é possível que a cópia entre computadores/sistemas operativos remova automaticamente a BOM (no entanto não confirmo essa hipótese, nunca experimentei), pode ser a causa de funcionar bem noutro computador/sistema operativo. Nota "histórica": a BOM é constituída por 2 bytes logo no início de um ficheiro de texto guardado em UTF-8 (é opcional), e permite identificar, com o nome indica, a ordem dos bytes que compõem os caracteres. É invisível em editores de texto (excepto talvez em editores/sistemas operativos que não suportem UTF-8 e/ou a BOM), daí surgirem estes erros no PHP, que identifica os bytes e envia-os para o browser, como faria com quaisquer outros caracteres. "Pensa positivo: tudo pode piorar" Link to comment Share on other sites More sharing options...
cyclop Posted November 27, 2009 at 11:29 AM Report Share #297743 Posted November 27, 2009 at 11:29 AM Não tem a ver com o servidor, tem a ver com a forma como deves de estar a guardar o ficheiro e/ou se estás a incluir esse ficheiro noutro onde já tenha sido laçado algum output. como diz o jreis, e a meu ver bem, o problema deve-se ao estares a gravar o teu ficheiro como sendo UTF8, guardando a BOM Signature, que conta como sendo um caracteres no inicio do ficheiro. "Quando eu for grande quero ser como o Celso" Link to comment Share on other sites More sharing options...
JoaoPCarvalho Posted November 27, 2009 at 07:47 PM Author Report Share #297829 Posted November 27, 2009 at 07:47 PM Já fiz essa alteração, o index.ph tinha o BOM desactivado, mas tanto o ficheiro funcoes.php como o ficheiro trataLogin.php tinham o BOM activado. Agora o warning que aparece é o seguinte: "Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\valida\funcoes.php:1) in C:\xampp\htdocs\valida\trataLogin.php on line 24" Deixou de dar o erro na função session_start() para dar este. a linha 24 conté o seguinte código: 22 ?> 23 <?php 24 header("location:.../valida"); 25 ?> Não vejo nada de mais neste código, está tudo bem Link to comment Share on other sites More sharing options...
scorch Posted November 27, 2009 at 08:41 PM Report Share #297839 Posted November 27, 2009 at 08:41 PM http://wiki.portugal-a-programar.pt/dev_web:php:problemas_comuns_em_php#headers_already_sent 🙂 PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to comment Share on other sites More sharing options...
jreis Posted November 27, 2009 at 09:13 PM Report Share #297844 Posted November 27, 2009 at 09:13 PM A execução do script não para quando envias um header, mesmo que seja de redireccionamento. Como está mencionado no manual do PHP (salvo erro), algo deste género deverá funcionar: //... header('Location: http://www.example.com'); exit; //... "Pensa positivo: tudo pode piorar" Link to comment Share on other sites More sharing options...
scorch Posted November 27, 2009 at 09:21 PM Report Share #297848 Posted November 27, 2009 at 09:21 PM @jreis, mas o erro que ele reportou deve-se ao facto de ele já ter feito algum output antes. 🙂 PS: Não respondo a perguntas por mensagem que podem ser respondidas no fórum. Link to comment Share on other sites More sharing options...
JoaoPCarvalho Posted December 1, 2009 at 07:10 PM Author Report Share #298273 Posted December 1, 2009 at 07:10 PM Boa noite, Já está solucionado. O problema era do BOM Voltei a criar novos PHP e o problema já não se verifica. Por mim tópico encerrado Obrigado pela ajuda Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now