---
title: "Fel vid inloggning"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/130871-fel-vid-inloggning"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "streetrobban"
published: "2005-07-01T20:13:46.000Z"
updated: "2005-07-03T13:06:22.000Z"
replies: 7
views: 315
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/130871-fel-vid-inloggning"
---

# Fel vid inloggning

## #1 — streetrobban, 2005-07-01T20:13Z

Tjenare,

Jag har skapat ett inloggningsscript som inte funkar på min localhost. Jag får följande felmeddelande.

```
Warning: Unknown: Your script possibly relies on a session side-effect which existed until PHP 4.2.3. Please be advised that the session extension does not consider global variables as a source of data, unless register_globals is enabled. You can disable this functionality and this warning by setting session.bug_compat_42 or session.bug_compat_warn to off, respectively. in Unknown on line 0
```

Men när jag kör samma script på webbhotellet jag använder på nätet så funkar det.

Hur kan jag åtgärda detta?

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

## #2 — Matte, 2005-07-02T09:28Z

Det låter som om du har ett index i din sessionsarray som är samma som namnet på en variabel.
Typ om du i ditt skript har både $\_SESSION\['id'\] och $id. När register_globals är satt så kommer även $\_SESSION\['id'\] att finnas som $id, och du har en varibelkrock.

Försök att sätta unika index för dina sessionsvariabler, t.ex genom att använda ett prefix typ $\_SESSION\['sess_var'\] eller $\_SESSION\['sVar'\].

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

## #3 — streetrobban, 2005-07-02T12:52Z

Tja Matte. Jag postar koden jag använder nedan så du får se.

logga_in.php

```php
<?php
// Skapa en session med viktig information
session_start(); 
$active = "1";
$epost = $epost;
$lösenord = $lösenord;
session_register("active");
session_register("epost");
session_register("lösenord");

require '../inkludera/databas.php';
	
// Kolla om användaren finns
mysql_select_db("databasen");
$get = mysql_query("SELECT * FROM användare WHERE epost = '$epost'");
$userRow = mysql_fetch_array($get);

if($epost == $userRow["epost"] && $lösenord == $userRow["lösenord"] && $userRow['status'] == '1') 
{
        // Gå till admin.php
	echo "ADMIN";
} 
else 
{
        // Gå till logga_ut.php
	echo "NEJ";
}

// Stäng databasen
mysql_close($open);
?>
```

logga_ut.php

```php
<?php
header("Location: index.php");

session_start(); 
$active = "0"; 
session_unregister("active");
session_unregister("epost");
session_unregister("lösenord");
session_destroy();
?>
```

admin.php

```php
<?php
session_start();

if ( $HTTP_SESSION_VARS[ 'active' ] == "1" ) 
{

$datum = date("Y-m-d");
$tid = date("H:i");
?>

INNEHÅLL

<?php
} 
else
{
?>
<script language=JavaScript>
self.location.replace('logga_ut.php')
</script>
<?php
}
?>
```

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

## #4 — Matte, 2005-07-02T16:30Z

Förstår ärligt talat inte vad du försöker göra i skriptet.

Vad är t.ex.

```php
$epost = $epost;
$lösenord = $lösenord;
```

Tag en koll på vilka variabler du sätter med session_register() och vilka variabler du sedan använder.

Använd inte session_register/session_unregister överhuvudtaget, utan använd dig av sessionsarrayen $\_SESSION för att sätta och hämta dina sessionsvariabler.
Använd där index som du inte använder som variabelnamn.

I logga ut, lägg din header efter du kört session_destroy().

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

## #5 — K@llen, 2005-07-02T17:38Z

Sätt även register_globals off så inte exempelvis $\_GET\['id'\] kan hämtas som enbart $id.

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

## #6 — streetrobban, 2005-07-03T12:32Z

Matte: Jag hämtar $epost och $lösenord från ett formulär och ger dom samma namn.

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

## #7 — Matte, 2005-07-03T13:03Z

Testa något på det här hållet:

```php
<?php
// Skapa en session med viktig information
session_start(); 

require '../inkludera/databas.php';
    
// Kolla om användaren finns
mysql_select_db("databasen");

$sql = "
  SELECT id FROM användare 
  WHERE epost = '{$_POST['epost']}' 
        AND lösenord = '{$_POST['lösenord']}' 
        AND status = '1'
";
$get = mysql_query($sql);

if(mysql_num_rows($get) > 0)
{
    $_SESSION['sess_id'] = mysql_result($get, 0, 'id');
    $_SESSION['sess_passwd'] = $_POST['lösenord'];
    $_SESSION['sess_epost'] = $_POST['epost'];
    $_SESSION['sess_active'] = 1;
        // Gå till admin.php
    echo "ADMIN";
} 
else 
{
        // Gå till logga_ut.php
    echo "NEJ";
}

// Stäng databasen
mysql_close($open);
?>
```

 
Jag la till att hämta och spara \`id\` som sessionsvariabel, då detta oftast är det snabbast sättet att identifiera användaren när man hämtar från databasen.
För du har väl en id-kolumn ?

När du loggar ut:

```php
<?php
session_start();

$_SESSION = array();
session_destroy();

header("Location: index.php");
exit;
 
?>
```

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

## #8 — streetrobban, 2005-07-03T13:06Z

Matte: Tack för din hjälp! Jag har en id kolumn för varje användare ja. Jag ska testa scriptet snart. Måste bara sola lite först! Solen steker på bra här! :)

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

---

Tråden på webben: https://www.webforum.nu/amne/php/130871-fel-vid-inloggning
