---
title: "Session problem, inloggning."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/184600-session-problem-inloggning"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "samebame"
published: "2010-09-11T18:55:52.000Z"
updated: "2010-09-12T07:27:54.000Z"
replies: 15
views: 628
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/184600-session-problem-inloggning"
---

# Session problem, inloggning.

## #1 — samebame, 2010-09-11T18:55Z

Har med hjälp från olika källor gjort ett login och registrerings system.
Det funkar att registrera sig och logga in, men sedan när jag har loggat in och ska klicka mig vidare till "medlemssidan" så får jag upp felmeddelandet "Du måste vara inloggad!" som ni kan se i koden nedan. Jag är ingen expert inom detta men antar att det har något med session att göra, eller är jag helt ute och cyklar?

Här kommer bit kod från login.php

```php
if ($username==$dbusername&&$password==$dbpassword)
		 {
			$_SESSION['username']=$username;
			echo "Inloggad som ".$_SESSION['username']." <a href='medlem.php'>Klicka här</a> för att gå vidare till medlemssidan.";
			
		 }
		 else
		 	echo "Fel lösenord eller kontrollera stora och små bokstäver i användarnamnet.";
```

och här från medlem.php

```php
<?php

    session_start();
  
  if ($_SESSION['username'])
  {
      echo "Välkommen ".$_SESSION['username']."!<br><a href='logout.php'>Logga ut</a>";
  }
  else
      echo("Du måste vara inloggad!");

?>
```

Så min fråga är, finns det något fel i den bit kod ni kan se? varför får jag upp 'du måste vara inloggad'? Är jag inte kvar i samma session?

Tack på förhand

Permalänk: https://www.webforum.nu/p/184600

## #2 — Emil W, 2010-09-11T19:00Z

Gör så här istället och kolla om det funkar

```php
 if (!isset($_SESSION['username']))
  {
echo("Du måste vara inloggad!"); 
exit;
}
```

Edit: missade isset

Permalänk: https://www.webforum.nu/p/2251781

## #3 — samebame, 2010-09-11T19:06Z

Tack för det snabba svaret, verkar som att det funkar! :) Var det bara att sätta ut ett ! före $\_SESSION alltså? Varför funkar det då?

Permalänk: https://www.webforum.nu/p/2251782

## #4 — samebame, 2010-09-11T19:09Z

Märkte nu att det blir fel ändå, meningen är att man inte ska kunna gå in på medlem.php utan att vara inloggad. Verkar som jag inte är kvar i samma session ändå.

Permalänk: https://www.webforum.nu/p/2251784

## #5 — Emil W, 2010-09-11T19:20Z

Nu borde det funka missade isset.

```php
 if (!isset($_SESSION['username']))
  {
echo("Du måste vara inloggad!"); 
exit;
}
```

Permalänk: https://www.webforum.nu/p/2251785

## #6 — Gildebrand, 2010-09-11T19:55Z

Man ska inte ha något whitespace innan session_start(), då kan det bli problem =)

Permalänk: https://www.webforum.nu/p/2251786

## #7 — samebame, 2010-09-11T20:27Z

Något som är skumt fortfarande, vissa gånger funkar det och då får jag upp: Välkommen 'username'. Andra gånger får jag upp Du måste vara inloggad.
Verkar som den gör som den vill lite då och då.. Någon som vet vad detta kan bero på?

Permalänk: https://www.webforum.nu/p/2251790

## #8 — Gildebrand, 2010-09-11T20:31Z

Visa hela koden!

Permalänk: https://www.webforum.nu/p/2251791

## #9 — Pedda, 2010-09-11T20:41Z

Det jag skriver nu kanske inte kommer göra någon skillnad för dig, men det är bra att veta ändå.

Om shortags är tillåtna i php.ini så kan det strula att ha två olika typer av variabler med samma namn då PHP kan "blanda ihop" dom.
T.ex som du har i din kod i ditt första inlägg där du har en variabel som heter $username och sen en sessions variabel som heter $\_SESSION\['username'\].
Ta därför för vana att alltid ha olika namn på dina variabler. T.ex brukar jag alltid namnge mina sessions variabler med prefixet sess\_ ($\_SESSION\['sess_username'\])

Som sagt var, det är inte säkert att det kommer göra någon skillnad för dig. Men det är viktigt att veta att det kan påverka.

Permalänk: https://www.webforum.nu/p/2251792

## #10 — samebame, 2010-09-11T20:42Z

Här kommer hela koden

index.php

```php
<html>

  <form method='POST' action='login.php'>
    <p>Anv&auml;ndarnamn :<br>
      <input type='text' name='username'>
      <br>
<br>
      L&ouml;senord :<br>
      <input type='password' name='password'><br>
      <input type='submit' value='Logga in'>
    </p>
</form>

</html>
```

login.php

```php
<?php
  
session_start();
  
  $username = $_POST['username'];
  $password = $_POST['password'];
  
  if ($username&&$password)
 {
     
     $connect = mysql_connect("***", "***", "***") or die("Gick inte att ansluta till databasen.");
     mysql_select_db("***") or die("Hittade inte databasen.");
     
     $query = mysql_query("SELECT * FROM users WHERE username='$username'");
     
     $numrows = mysql_num_rows($query);
     
     if ($numrows!=0)
     {
         
        while ($row = mysql_fetch_assoc($query))
        {
                $dbusername = $row['username'];
                $dbpassword = $row['password'];
        }
         
         
         //kolla så att uppgifterna finns i databasen
         if ($username==$dbusername&&$password==$dbpassword)
         {
            $_SESSION['username']=$username;
            echo "Inloggad! <a href='medlem.php'>Klicka här</a> för att gå vidare.";
            
         }
         else
             echo "Fel lösenord.";
         
     }
     else
         echo("Användaren existerar inte.");
     
 }
 else
     echo("Ange användarnamn och lösenord.");
  
?>
```

medlem.php

```php
<?php

session_start();
  
  if ($_SESSION['username'])
      echo "Välkommen ".$_SESSION['username']."!<br><a href='logout.php'>Logga ut</a>";
  else
      echo("Du måste vara inloggad!");

?>
```

logout.php

```php
<?php  

  session_start();
  session_destroy();
  
  echo "Du har blivit utloggad! <a href='index.php'>Klicka här</a> för att gå till startsidan";

?>
```

Permalänk: https://www.webforum.nu/p/2251793

## #11 — Gildebrand, 2010-09-11T21:13Z

Prova att ändra

```php
<?php 
   
session_start();
```

till

```php
<?php 
session_start();
```

i alla filer

Permalänk: https://www.webforum.nu/p/2251795

## #12 — samebame, 2010-09-11T21:31Z

Verkar som att problemet är löst på sätt och vis, kör jag med firefox så funkar det. När jag testar i IE så blir det: du måste vara inloggad! lustigt..

Permalänk: https://www.webforum.nu/p/2251799

## #13 — Gildebrand, 2010-09-11T22:10Z

Ska inte ha med webbläsare att göra. PHP körs på servern, inte på klienten.

Permalänk: https://www.webforum.nu/p/2251801

## #14 — samebame, 2010-09-11T23:21Z

Ja därför jag tyckte det var lustigt..
Men tack för alla svar jag får nog nöja mig såhär, funkar i firefox så antar att det är något fel med mitt IE(önsketänkande)

Permalänk: https://www.webforum.nu/p/2251802

## #15 — samebame, 2010-09-12T00:15Z

Men nu åter igen märker jag att det bara fungerar ibland, oavsett webbläsare. Någon som har en lösning?

Permalänk: https://www.webforum.nu/p/2251806

## #16 — GunnarD, 2010-09-12T07:27Z

Så här brukar jag göra:

På varje sida som skall vara skyddad har jag denna raden först:

```php
require_once($_SERVER["DOCUMENT_ROOT"]."/checklogin.php");
```

checklogin.php ser ut så här:

```php
<?php
session_start();
if(!isset($_SESSION['username'])) {
        header("location:/login.phtml");
}
?>
```

Vilket gör att om det inte finns någon session så skickas man vidare till en login sida.

login.phtml visar en sida där man skriver in login och lösenord som man sedan kollar om det är en valid konto, om det är det så skapas en session och man skickas till första sidan.

sessionen skapas med följande kod:

```php
session_start();
$_SESSION['username']=$username;
$_SESSION['id']=$row['id'];
echo "<p>Du är inloggad!</p>";
echo "<p>Gå till startsidan för att fortsätta.</p>";
header("location:http://www.example.se");
```

/red: ändrade alla kod taggar till php taggar

Permalänk: https://www.webforum.nu/p/2251810

---

Tråden på webben: https://www.webforum.nu/amne/php/184600-session-problem-inloggning
