Jump to content
Etiqueta

[Resolvido] Login - erro no session_start()

Recommended Posts

Etiqueta

Boa tarde,

desenvolvi um login em que utilizadores podem entrar no site e outros são administradores que tem acesso ao backofice. O que está a acontecer é que está a dar erro na linha session_start();

aqui fica o meu código:

- formulário do login

<form id="fl" action="../admin/autenticar.php" method="post">
			<input type="text" name="Username" id="Username"  placeholder="Username" onfocus="if (this.value == 'Username') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Username;}"/>
			<input type="password" name="Password" id="Password"  placeholder="Password" onfocus="if (this.value == 'Password') {this.value = '';}" onblur="if (this.value == '') {this.value = 'Password';}"/>

- ficheiro de autenticação (neste ficheiro é que está a dar erro)

<body>

<?php
include '../conexao.php';

//verificar se o utilizador tem uma cookie memorizada
if (isset($_COOKIE["ID_Registo_dw"]) && isset($_COOKIE["marca_aleatoria_utilizador_dw"])){
   // Se tem cookies memorizadas
   //verifico se as variáveis não estejam vazias
   if ($_COOKIE["ID_Registo_dw"]!="" || $_COOKIE["marca_aleatoria_utilizador_dw"]!=""){
	  //Veriicar se correspondem com algum utilizador
	  $ssql = "SELECT * FROM registo WHERE ID_Registo=" . $_COOKIE["ID_Registo_dw"] . " AND cookie='" . $_COOKIE["marca_aleatoria_utilizador_dw"] . "' AND cookie<>''";
	  $rs = mysql_query($ssql);
	  if (mysql_num_rows($rs)==1){
		 //echo "<b>Existe um utilizador com cookie</b>";
		 $utilizador_encontrado = mysql_fetch_object($rs);
		// echo "<br>É o utilizador número " . $utilizador_encontrado->ID_Registo . ", com o nome " . $utilizador_encontrado->Nome;
		 header ("Location: index.php");
	  }
   }
}

//Recebe os dados do formulário
$Username = mysql_real_escape_string(strip_tags($_POST["Username"]));
$Password = mysql_real_escape_string($_POST["Password"]);

$sql = "SELECT * FROM registo WHERE Username = '$Username' AND Password = '$Password'";
$rs = mysql_query($sql);

if(mysql_num_rows($rs) == 1) {
	$user = mysql_fetch_array($rs);
	//conferindo o login e senha para segurança
	if($Username == $user['Username']){
		//se entrou, entao o login é igual
		if($Password == $user['Password']){
			//se entrou, então a senha também é igual
			$logado = "1";
			$ID_Registo = $user['ID_Registo'];
			$TpUtilizador = $user['TpUtilizador'];
			$Username = $user['Username'];

			//criando a sessão
			session_start();	
			$_SESSION["ID_Registo"] = $ID_Registo;
			$_SESSION["logado"]  = $logado;
			$_SESSION["TpUtilizador"] = $TpUtilizador;
			$_SESSION["Username"] = $Username;

			//depois de criada a sessão, redirecciona para determinada página privada, verificando os níveis de permissões
			$TpUtilizador = $user['TpUtilizador'];
			if ($TpUtilizador == '1'){				
				header("Location: Administrar.html");
			}elseif ($TpUtilizador == '2'){
				header("Location: ../website/index.php");
			}
		}else {

				echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=../website/index.php'>
					   <script type=\"text/javascript\">
						alert(\"Por favor, digite a Password correcta.\");
					   </script>";

				//echo "Por favor, digite a Password correcta.";
			}
  	   } else {

				 echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=../website/index.php'>
					   <script type=\"text/javascript\">
						alert(\"Por favor, digite o nome de utilizador correcto.\");
					   </script>";

				//echo "Por favor, digite o nome de utilizador correcto.";
	  }
  }else {

	   echo "<META HTTP-EQUIV=REFRESH CONTENT='0; URL=../website/index.php'>
					   <script type=\"text/javascript\">
						alert(\"Nome de utilizador ou Password inválidos. Por favor, tente novamente.\");
					   </script>";

	  //echo "Nome de utilizador ou Password inválidos. Por favor, tente novamente.";
  }
?>
</body>

os erros que aparece:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\NSEmprega\admin\autenticar.php:9) in C:\xampp\htdocs\NSEmprega\admin\autenticar.php on line 49

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\NSEmprega\admin\autenticar.php:9) in C:\xampp\htdocs\NSEmprega\admin\autenticar.php on line 49

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\NSEmprega\admin\autenticar.php:9) in C:\xampp\htdocs\NSEmprega\admin\autenticar.php on line 60

podem ajudar-me sff?

Obrigada

Edited by Rui Carlos

Share this post


Link to post
Share on other sites
HappyHippyHippo

as mensagens de erro são bastante obvias ...

tenta por um die() depois desta linha:

header("Location: index.php");
die();

PS : a bem dizer deverás por um die logo após qualquer tipo de header("Location: ...");

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
HappyHippyHippo

se não deu é porque falta aqui código ... ou seja antes do que fizeste post ou no ficheiro '../conexao.php'.

ou melhor ... agora que vi a primeira linha do teu ficheiro :

<body>

deves ter lido quando aprendeste que a chamada da função session_start deveria ser chamada antes de qualquer tipo de output ...

no entanto tens lá a abertura da tag body ...

Edited by HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
HappyHippyHippo

tiraste mesmo tudo ??? mesmo espaços antes do "<?php" ???

se sim faz post do que tens agora ..


IRC : sim, é algo que ainda existe >> #p@p

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.