Jump to content

[Resolvido] Erro Session


PF2G
 Share

Recommended Posts

Boa noite, P@P

Eu estou a fazer um website onde o utilizador faz login e aparece um 'Bem-Vindo, Nome_User', mas dá-me erro no $_SESSION['login'].

index.php:

<h2>Login</h2>
 <form method="POST" action="login.php">
  <table>
   <tr>
	<td align="right">
	 Username:
	</td>

	<td width="10px"></td>

	<td>
	 <input type="text" name="username">
	</td>
   </tr>

   <tr height="10px"></tr>

   <tr>
	<td align="right">
	 Password:
	</td>

	<td width="10px"></td>

	<td>
	 <input type="password" name="password">
	</td>
   </tr>

   <tr>
	<td>
	 <input type="submit" name="login" class="login" value="Login">
	</td>
   </tr>
  </table>
 </form>

login.php

<?php
if ($_POST['login'])
{
 $username=$_POST['username'];
 $password=$_POST['password'];

 $query_user=mysql_query("SELECT * FROM metal_users WHERE username='"$username"'");
 $user=mysql_fetch_assoc($query_user);

 if ($user['username']==$username && $user['password']==$password)
 {
  session_start();
  $_SESSION["login"] = "YES";
 }
 else
 {
  session_start();
  $_SESSION["login"] = "NO";
  header('Location: login_form.php');
 }
}
?>

topo.php:

<?php
session_start();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd%22>
<html xmlns="http://www.w3.org/1999/xhtml%22>
<head>
<title>Rock & Metal Worshipers</title>
<meta http-equiv="X-UA-Compatible" content="IE=5, IE=8, IE=9, IE=10" >
<meta name="keywords" content="" />
<meta name="description" content="" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

<link rel="SHORTCUT ICON" href="images/icon.jpg"/>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="page">
	<div id="logo">
  <center><img src="images/header.jpg"></center>
	</div>
<!---------------------------Menu--------------------------->
 <div id="menu">
  <ul>
<li><a href="index.php">Home</a></li>
<li><a href="#">Quem Somos</a></li>

  <?php
if ($_SESSION["login"] != "YES")
{
  ?>
 <li><a href="register.php">Registar</a></li>
  <?php
}
else
{
  ?>
 <li class="has-sub"><a href="#">Perfil</a>
  <ul>
   <li><a href="#">Resumo Perfil</a></li>
   <li><a href="#">Editar Perfil</a></li>
   <li><a href="#">Mensagens</a></li>
  </ul>
 </li>
  <?php
}
  ?>
(...)

Aqui no topo, estou a tentar restringir algumas opções do menu, pois ha opções que so o utilizador logado pode aceder.

Alguem me pode ajudar, sff?

Obrigado,

PF2G

Edited by PF2G
Link to comment
Share on other sites

Estás à espera que adivinhemos em qual dos 3 ficheiros está a dar o erro?


 if ($user['username']==$username && $user['password']==$password)
 {
  session_start();
  $_SESSION["login"] = "YES";
 }
 else
 {
  session_start();
  $_SESSION["login"] = "NO";
  header('Location: login_form.php');
 }
}
?>

Tu aqui devias utilizar apenas:

If($user['username'] == $username && $user['password'] == $password)
{
session_start();
$_SESSION['login'] = "yes";
}
else
{
header('Location: login_form.php');
}
// Não há necessidade de estares a criar uma sessão para dizer que ele não está logado... isso já se sabe se a $_SESSION['login'] estiver definida.

Depois quando fazes a restrição no menu faz, ao invés do que tens:

if(isset($_SESSION['login']) && $_SESSION['login'] == 'yes')
{
// Menú para quem está logado.
}
else
{
// Menú para quem não está logado.
}

Tenta mudar essas coisas que eu disse e vê se dá em alguma coisa, se continuar a dar erro diz que erro é e onde é...

Abraço

Link to comment
Share on other sites

e na pagina login.php tens isto:

<?php
if ($_POST['login'])
{
$username=$_POST['username'];
$password=$_POST['password'];
$query_user=mysql_query("SELECT * FROM metal_users WHERE username='"$username"'");
$user=mysql_fetch_assoc($query_user);
if ($user['username']==$username && $user['password']==$password)
{
session_start();
$_SESSION["login"] = "YES";
}
else
{
session_start();
$_SESSION["login"] = "NO";
header('Location: login_form.php');
}
}
?>

e devias ter isto:

<?php
if ($_POST['login'])
{
$username=$_POST['username'];
$password=$_POST['password'];
$query_user=mysql_query("SELECT * FROM metal_users WHERE username='".$username."'");
$user=mysql_fetch_assoc($query_user);
if ($user['username']==$username && $user['password']==$password)
{
session_start();
$_SESSION["login"] = "YES";
}
else
{
session_start();
$_SESSION["login"] = "NO";
header('Location: login_form.php');
}
}
?>

acho que é isto e o que o Volans te disse, pois se não puseres os pontos a dizer que aquilo é uma string(acho que é isto), dá-te este erro: Parse error: syntax error, unexpected '$username' (T_VARIABLE) in

Edited by joaocasta
Link to comment
Share on other sites

tens k ter algo do genero no topo das páginas para veres se tem a sessão inicializada ou não.

<?php
   session_start();
   if(count($_GET)==0){
			unset($_SESSION['pesq']);// entrada na pagina pela 1 vez;
			unset( $_SESSION['nreg']);
   }
?>

Não estou bem a ver a cena... o $_GET só te vai dar alguma cena se tiveres alguma variável no url certo?

Link to comment
Share on other sites

porque raio todos os teus post são como o texto seguinte:

Quero ajuda porque tenho um carro que não arranca.

aqui está o carro:

- é vermelho

- tem 5 portas

- um motor

- um volante

- etc,

- etc,

- etc,

- etc,

- etc,

- etc,

(até ao infinito) !!!!

se dá um erro por amor de deus diz qual é !!!!!

Edited by HappyHippyHippo
  • Vote 2
IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

O erro dá-me no topo.php (onde está o menu) e no index.php () onde está o form de login.

PS:Ainda não experimentei nada do que disseram, pq não tenho possibilidade neste momento. Mas quando o fizer deixo o feedback...

Edited by PF2G
Link to comment
Share on other sites

O erro dá-me no topo.php (onde está o menu) e no index.php () onde está o form de login.

PS:Ainda não experimentei nada do que disseram, pq não tenho possibilidade neste momento. Mas quando o fizer deixo o feedback...

EM QUE SCRIPT DÁ O ERRO JÁ TU O DISSESTE .... O QUE É NECESSÁRIO DIZER É EM QUE LINHA E QUAL O ERRO !!!!

IRC : sim, é algo que ainda existe >> #p@p
Link to comment
Share on other sites

Então, em vez de nos teres feito a todos perder tempo a procurar uma solução para um erro que nem conhecíamos podias esperar que tivesses o projeto contigo e depois sim, criavas o tópico com a informação exata sobre o erro.

Cumprimentos.

Link to comment
Share on other sites

Boa noite, já tenho o codigo +/- direito...

login.php

<?php
// Check if username and password are correct
if ($_POST['login'])
{
 $username=$_POST['username'];
 $password=$_POST['password'];

 $query_user=mysql_query("SELECT * FROM metal_users WHERE username='".$username."'");
 $user=mysql_fetch_assoc($query_user);

 if($user['username'] == $username && $user['password'] == $password)
 {
  session_start();
  $_SESSION['login'] = "yes";
 }
 else
 {
  header('Location: login_form.php');
 }
}
?>

index.php

<?php
 if(isset($_SESSION['login']) && $_SESSION['login'] == 'yes')
 {
  $query_username=mysql_query("SELECT * FROM metal_users WHERE id_user='".$_SESSIO['login']."'");
  $username=mysql_fetch_assoc($query_username);
?>
 <h2>Utilizador</h2>
  <table>
   <tr>
	<td align="right">
	 Bem-Vindo, <?php echo $username['username']; ?>
	</td>
   </tr>

   <tr height="10px"></tr>

   <tr>
	<img src="<?php echo $username['avatar']; ?>">
   </tr>
  </table>
<?php
 }
 else
 {
?>
 <h2>Login</h2>
  <form method="POST" action="login.php">
   <table>
	<tr>
	 <td align="right">
	  Username:
	 </td>

	 <td width="10px"></td>

	 <td>
	  <input type="text" name="username">
	 </td>
	</tr>

	<tr height="10px"></tr>

	<tr>
	 <td align="right">
	  Password:
	 </td>

	 <td width="10px"></td>

	 <td>
	  <input type="password" name="password">
	 </td>
	</tr>

	<tr>
	 <td>
	  <input type="submit" name="login" class="login" value="Login">
	 </td>
	</tr>
   </table>
  </form>
<?php
 ;}
?>

O que me está a acontecer é sempre que faço login ele vai-me para o login_form.php, ou seja assume que o utilizador não existe...

Alguem me pode ajudar?

Obrigado,

PF2G

Edited by PF2G
Link to comment
Share on other sites

tens aqui um erro:

<?php
	 if(isset($_SESSION['login']) && $_SESSION['login'] == 'yes')
	 {
	  $query_username=mysql_query("SELECT * FROM metal_users WHERE id_user='".$_SESSIO['login']."'");
	  $username=mysql_fetch_assoc($query_username);

$_SESSIO['login'] ??? nao será $_SESSION?

Link to comment
Share on other sites

tens aqui um erro:

<?php
	 if(isset($_SESSION['login']) && $_SESSION['login'] == 'yes')
	 {
	 $query_username=mysql_query("SELECT * FROM metal_users WHERE id_user='".$_SESSIO['login']."'");
	 $username=mysql_fetch_assoc($query_username);

$_SESSIO['login'] ??? nao será $_SESSION?

LOL enganei-me.

Mas não resolve o problema xP

Link to comment
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
 Share

×
×
  • 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.