---
title: "Modifierat system"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/15708-modifierat-system"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "oelbal"
published: "2001-06-01T19:31:00.000Z"
updated: "2001-06-03T19:28:00.000Z"
replies: 23
views: 289
page: 1
pages: 2
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/15708-modifierat-system"
---

# Modifierat system

_Sida 1 av 2._

## #1 — oelbal, 2001-06-01T19:31Z

Jag försöker göra ett loginsystem med hjälp av en MySQL databas och sessions.
Delar av koden är modifierad från sgtpeppers **psphplogin**, så han kanske är rätt person att svara på detta?

Här är min loginsida, **login.php**:

```
<?
$database = @mysql_connect("XXXXX","XXXXX","XXXXXX");
if (!$database) {
        echo("An error occured. Please contact the administrator.");
        exit();
}
if (!@mysql_select_db("XXXXX")) {
        echo("An error occured. Please contact the administrator.");
        exit();
}

if (isset($loginuser) && isset($loginpass)) {
    $query = "SELECT id, name FROM user WHERE name='$loginuser' AND pass=PASSWORD('$loginpass')";
    $res = mysql_query($query);
    $row = mysql_fetch_array($res);
    if (isset($row['id'])) {
        session_start();
        $uid = $row['id'];
        $uname = $row['name'];
        session_register("uid","uname");
        Header("Location: xxxxx.php");
    }
}
?>
<html>
<head>
<title>Users and Administrators Login</title>
</head>

<body>

<form action="login.php" method="post">
Username:<br>
<input type="text" size="20" name="loginuser"><p>

Password:<br>
<input type="password" size="20" name="loginpass"><p>

<input type="submit" value="&nbsp;Login&nbsp;">
</form>

</body>
</html>
```

Här är databasen XXXXX med tabellen **user**s struktur och data:

```
#
# Table structure for table 'user'
#

CREATE TABLE user (
   id int(11) NOT NULL auto_increment,
   name varchar(50) NOT NULL,
   pass varchar(50) NOT NULL,
   PRIMARY KEY (id),
   UNIQUE id_2 (id),
   KEY id (id)
);

#
# Dumping data for table 'user'
#

INSERT INTO user VALUES ( '1', 'joel', 'xxxx');
INSERT INTO user VALUES ( '2', 'per', 'xxxxx');
```

Detta är **XXXXX.php**, som man kommer till när man loggats in:

```
<?
session_start();
if (!isset($uid) &#0124;&#0124; !isset($uname)) {
     Header("Location: login.php");
}
?>
<html>
<head>
<title>blaha</title>
</head>

<body>

blaha blaha

</body>
</html>
```

Felet:
När användarens namn är kollat i databasen är det alltså meningen att han skall skickas vidare till xxxxx.php (om rätt anv. & lösen skrivs in), men så blir inte fallet, för när jag testar så skickas jag alltid tillbaka till login.php, även om jag skriver in rätt?
Är det något fel i koden? Är det något jag har glömt? Är det totalt fel? :(

Någon som orkar avsätta några minuter för att analysera mitt problem?

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

## #2 — patrickpolly, 2001-06-01T20:05Z

Ändra följande kod i login.php så borde det fungera.

```
if (isset($row['id'])) {
        session_start();
        $uid = $row['id'];
        $uname = $row['name'];
        session_register("uid","uname");
        Header("Location: xxxxx.php");
    }
```

Till:

```
if (isset($row['id'])) {
        session_start();

// den här har bytt plats
  session_register("uid","uname");

        $uid = $row['id'];
        $uname = $row['name'];
                Header("Location: xxxxx.php");
    }
```

För övrigt bör du köra en bättre koll på sidan där du är inloggad. Det räcker med att jag en get-request med de variablerna satta till TRUE så är jag inloggad.

//Patrik

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

## #3 — sgtpepper, 2001-06-01T21:00Z

När man rådfrågar PHP-manualen så sägs det ingenting om att man måste registrera variabeln innan man sätter den och det funkar utmärkt att göra det tvärtom på mitt system så det kan ju vara något annat problem.

> För övrigt bör du köra en bättre koll på sidan där du är inloggad. Det räcker med att jag en get-request med de variablerna satta till TRUE så är jag inloggad.

Ahh.. Pinsamt :) Jag får skylla på att jag slängde ihop koden rätt snabbt... 

Ändra till detta istället (kollar så att variablerna är registrerade i sessionen) så bör säkerhetsnivån höjas lite högre än den tidigare sandlådenivån på mitt script :e

```
 /********************************************
	* Check to see that the user is logged in  *
	********************************************/
	session_start();
	if (!session_is_registered("uid") &#0124;&#0124; !session_is_registered("uid") &#0124;&#0124; !isset($uid) &#0124;&#0124; !isset($uname))
	{
		Header("Location: login.php");
	}
```

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

## #4 — oelbal, 2001-06-01T21:09Z

Tack pepparn & patrickpolly!

Nu kan jag sova lugnt inatt....

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

## #5 — oelbal, 2001-06-01T21:28Z

.......inte....

För det luktar fisk.....jag får det ändå inte att fungera......ARGH!

Nu har jag skummat igenom koden så många gånger att jag blir galen.....

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

## #6 — sgtpepper, 2001-06-01T21:33Z

Hur har du lagt in användarna i databasen? Lösenorden skall sparas krypterade med mySQLs PASSWORD()-funktion. Det kan vara så att du sparat dom i klartext och då överenstämmer dom inte.

Felet kan även uppstå om du har cookies avslagna i din webbläsare.

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

## #7 — oelbal, 2001-06-01T21:36Z

ojoj.....ibland så undrar man ju hur det står till uppe i barken....

Visst fan har jag lagt in det som klartext.......börjar väl bli trött....

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

## #8 — sgtpepper, 2001-06-01T21:38Z

Sånt händer även den bäste :)

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

## #9 — oelbal, 2001-06-02T08:16Z

ARGH! Tro fan att det blev fel iaf....

Jag krypterade lösenordet, men något går snett iaf.......

När jag loggar in, och skriver mitt användarnamn och lösenord, så kommer jag tillbaka till login.php iaf.......fast den enda skillnaden är att jag nu också får 2 warnings!

**Warning: open(/tmp/sessions/sess_4ad9b169f54c5c62b91fcef4426b73b4, O_RDWR) failed: m (2) in /minsida/login.php on line 17**

**Warning: Cannot add header information - headers already sent by (output started at /minsida/login.php:17) in /minsida/login.php on line 21**

och om jag sedan knappar in XXXXX.php så får jag dessa fel:

**Warning: open(/tmp/sessions/sess_4ad9b169f54c5c62b91fcef4426b73b4, O_RDWR) failed: m (2) in /minsida/xxxxx.php on line 2**

**Warning: Cannot add header information - headers already sent by (output started at /minsida/xxxxx.php:2) in /minsida/xxxxx.php on line 4**

Samma fel på både login.php & xxxxx.php alltså......humm....

Finns det någon som känner för att provköra systemet?

\[Redigerat av oelbal den 02 jun 2001\]

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

## #10 — oelbal, 2001-06-02T08:30Z

Något är skumt med sessionerna....

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

## #11 — P, 2001-06-02T09:18Z

kanske det gamla vanliga att man inte angett rätt sökväg till tmp mappen??!?!?

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

## #12 — oelbal, 2001-06-02T09:29Z

Jag får nog ta och testa sgtpeppers grej direkt utan att modifiera den, och kolla om det fungerar, som att jag vet att det fungerar från början....

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

## #13 — oelbal, 2001-06-02T09:56Z

**sgtpepper**

Humm, jag testkörde psphplogin, utan att göra några andra förändringar i config'en (förutom de nödvändiga).......det fungerar ej.....

Först så registerar man sig, det går hur bra som hellst, ända tills man ombeds att logga in för första gången, då skiter det sig, för man kommer tillbaka till login.php igen.....och igen......och igen.......

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

## #14 — oelbal, 2001-06-02T13:27Z

ARGH!

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

## #15 — sgtpepper, 2001-06-02T14:34Z

Mysko, det funkar bra på min burk.

Lägg in lite spårutskrifter i koden för att underlätta felsökning. 

Du kan även lägga till följande kod i login.php:

```
<?
	if(isset($email) && isset($pass))
	{
?>
		<font color="red">Felaktigt namn och/eller lösenord!</font>
<?
	}
?>
```

Lägg koden precis ovanför \<form action="login.php" method="post"\> i login.php. Om du efter ändringen får ett rött felmeddelande när du försöker logga in som säger "Felaktigt lösen osv." så är det något fel med användarnamn- och lösenordsmatchningen mot databasen. Om du inte får något sånt meddelande så betyder det att inloggningen funkat och att du skickats iväg till den låsta sidan, men att något skitit sig där och att du kastats tillbaka till login.php.

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

## #16 — oelbal, 2001-06-02T15:04Z

Jupp, jag fick upp den röda texten....

Plus 2 varningar, om sessions och headers....

Skall testa några saker med ditt script, och se om det fungerar....

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

## #17 — oelbal, 2001-06-02T15:17Z

Nu fick jag det att fungera!

Först började jag med att ta bort krypteringen, sedan tog jag bort sessionerna.....då fungerade det.....

När jag använder kryperingen blir inte lösenordet rätt, (ja, lösenorden är krypterade i databasen också), och sessionerna skapar en massa varningssignaler........

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

## #18 — Batboy, 2001-06-02T17:01Z

> och sessionerna skapar en massa varningssignaler.......

Kontrollera php.ini så din session.save_path är korrekt. Med tanke på ovanstående felmeddelanden är den inte det. Kör du i windows bör det vara nåt liknande: c:/php/tmp

Att du fick "Cannot add header information" beror kanske på att PHP redan skrivit ut saker (felmeddelande session) och kan därför inte fortsätta med header().

/j

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

## #19 — oelbal, 2001-06-02T18:08Z

Hemma får jag sessionerna att fungera, men inte på servern där jag har sidan...

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

## #20 — oelbal, 2001-06-02T19:34Z

Ska kolla med de som har servern angående deras inställningar....

Problemet med krypteringen av lösenordet kvarstår dock.....konstigt...

\[r\] stavfel

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

---

Tråden på webben: https://www.webforum.nu/amne/php/15708-modifierat-system  
Nästa sida: https://www.webforum.nu/amne/php/15708-modifierat-system/page2.md
