Autor Tópico: [PHP] Nao regista a sessao  (Lida 992 vezes)

XsTeAl

  • Membro Pro
  • Heroi da Nação
  • ****
  • Mensagens: 653
  • Karma: 0
    • Ver Perfil
    • http://www.gud.us/en/?xsteal
[PHP] Nao regista a sessao
« em: Janeiro 26, 2009, 04:31:30 »
boas tenho este codigo, mas nao me regista a sessao nao sei porque...


Código: [Seleccione]
$username = mysql_real_escape_string($_POST['username']);  
$password = md5(mysql_real_escape_string($_POST['password']));  
    
$checklogin = mysql_query("SELECT * FROM users WHERE username = '".$username."' AND password = '".$password."'");  
      
if(mysql_num_rows($checklogin) != 0)  
{  
ob_start();      
 $_SESSION['Username'] = $username;            
header("location: main.php");
 ob_end_flush();
  }  
  else  
 {  
    echo "Erro";  
 }


XsTeAl

  • Membro Pro
  • Heroi da Nação
  • ****
  • Mensagens: 653
  • Karma: 0
    • Ver Perfil
    • http://www.gud.us/en/?xsteal
[PHP] Nao regista a sessao
« Responder #1 em: Janeiro 26, 2009, 08:45:03 »
ja consegui resolver mas agora quando faco redirect

da-me erro, ou seja quando uso

Código: [Seleccione]
header("location: index.php");
da-me este erro

Código: [Seleccione]
Warning: Cannot modify header information - headers already sent by (output started at /home/outside/public_html/xsteal/jogo/entrar.php:7) in /home/outside/public_html/xsteal/jogo/entrar.php on line 11
uma vez consegui resolver este problema, mas agora nao consigo se alguem tiver uma dica... obrigado

------------------
como nao da para eliminar o post, digo como resolvi, meti no inicio do codigo no ficheiro index.php o seguinte: ob_start(); e no final: ob_end_flush();

isto claro dentro das tags do php
« Última modificação: Janeiro 26, 2009, 08:47:03 por XsTeAl »

crazii

  • Membro Pro
  • Uber Geek
  • ****
  • Mensagens: 336
  • Karma: 0
    • Ver Perfil
[PHP] Nao regista a sessao
« Responder #2 em: Janeiro 27, 2009, 02:40:05 »
Tens duas opções para resolver o problema dos header, ou alteras o php.ini o parametro "output buffer" para verdadeiro ou
No ínicio do documento antes de qualquer código chamas a função"ob_start();"      
e no final do documento chamas a função "ob_end_flush();"

espero ter ajudado!

Nothing thrills me anymore
Boring

ilovehentai

  • Membro Pro
  • Junior
  • ****
  • Mensagens: 83
  • Karma: 0
    • Ver Perfil
    • http://
[PHP] Nao regista a sessao
« Responder #3 em: Fevereiro 02, 2009, 10:57:22 »
1º Para registar correctamente uma sessão confirma que tens o session_start() para inicializares a sessão
2º Não vejo porque necessitas do buffer para validares o teu login
3º Os headers provalemente nao podem ser enviados porque já foram enviados, para isso coloca o PHP antes de qualquer html que possas ter no teu ficheiro, se não tiveres html no ficheiro e estiveres a fazer include desse código verifica que o include é feito antes da tag html ou alias doctype
4º Meu deus.. esquece esses mysql_real_escapes etc... e passa a usar Mysqli é importante!
5º vejo que nao fazes quaisquer validação as strings que recebes ...
6º Sugiro que em vezes de validares que o numero de linhas seja diferente de 0 faças seja igual a 1 pois apenas pode haver 1 resultado possivel.