---
title: "Problem med inloggning"
type: "forum-thread"
url: "https://www.webforum.nu/amne/databaser-sql/168110-problem-med-inloggning"
topic: "Databaser & SQL"
topic_url: "https://www.webforum.nu/amne/databaser-sql"
author: "Guldstrand"
published: "2008-01-15T01:47:13.000Z"
updated: "2008-01-15T19:28:57.000Z"
replies: 15
views: 763
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/databaser-sql/168110-problem-med-inloggning"
---

# Problem med inloggning

## #1 — Guldstrand, 2008-01-15T01:47Z

Försöker använda följande kod till en inloggning, (med aktiveringsmail).
Verkar dock inte få det att fungera, får bara "fel användarnamn eller lösenord".

Tacksam för all hjälp.

```php
<?php
session_start(); // Alltid överst på sidan 
 
error_reporting(E_ALL); 
ini_set("display_errors", "1");
 
include "includes/mysql.php"; // Databasanslutningen
 
// Inloggning
if (isset($_POST['submit'])){ 
  $password = md5($_POST['losenord']);
  $epost = db_escape($_POST['epost']);
  $sql = "SELECT id, aktiv, losenord, epost FROM annonsorer
         WHERE epost='$epost'
         AND losenord='{$password}' AND aktiv = '1'";
  $result = mysql_query($sql) or die("SQL: $sql<br />" . mysql_error());
  //$aktiv = mysql_result($result, 0, 'aktiv'); 

  
  // Hittades inte användarnamn och lösenord
  // skicka till formulär med felmeddelande
  if (mysql_num_rows($result) == 0){
    header("Location: logga_in.php?badlogin=");
    exit;
  } 
 
// Är kontot inte aktiverat skicka personen till sida med info om att kontot inte är aktiverat  
  if ($result['aktiv'] == '0') {
    header("Location: ejaktiverat.php");
    exit;
  }
  
  // Sätt sessionen med unikt index
  $_SESSION['sess_id'] = mysql_result($result, 0, 'id');
  $_SESSION['sess_user'] = db_escape($_POST['epost']);
  header("Location: mitt_konto.php");
  exit; 
}
 
// Utloggning
if (isset($_GET['logout'])){
  session_unset();
  session_destroy();
  header("Location: index.php");
  exit;
}
?>
```

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

## #2 — @nders, 2008-01-15T04:42Z

Och när du kör sql-frågan för sig själv händer vad?

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

## #3 — colione, 2008-01-15T07:19Z

Varför har du måsvingar runt password?

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

## #4 — Guldstrand, 2008-01-15T12:55Z

> **@nders skrev:**
>
> Och när du kör sql-frågan för sig själv händer vad?

Jag körde frågan ...

```php
// Inloggning 
if (isset($_POST['submit'])){ 
  $password = md5($_POST['losenord']); 
  $epost = db_escape($_POST['epost']); 
  $sql = "SELECT id, aktiv, losenord, epost FROM annonsorer 
         WHERE epost='$epost' 
         AND losenord='{$password}' AND aktiv = '1'"; 
  $result = mysql_query($sql) or die("SQL: $sql<br />" . mysql_error()); 
  //$aktiv = mysql_result($result, 0, 'aktiv');
```

i en "echo", och fick:

```php
SELECT id, aktiv, losenord, epost FROM annonsorer WHERE epost='test@test.se' AND losenord='827ccb0eea8a706c4c34a16891f84e7b' = 'SELECT id, aktiv FROM annonsorer WHERE epost='test@test.se' AND losenord='827ccb0eea8a706c4c34a16891f84e7b''; Resource id #4 = mysql_query(SELECT id, aktiv, losenord, epost FROM annonsorer WHERE epost='test@test.se' AND losenord='827ccb0eea8a706c4c34a16891f84e7b') or die('SQL: SELECT id, aktiv, losenord, epost FROM annonsorer WHERE epost='test@test.se' AND losenord='827ccb0eea8a706c4c34a16891f84e7b'
' . mysql_error()); = mysql_result(Resource id #4, 0, 'aktiv);
```

> **colione skrev:**
>
> Varför har du måsvingar runt password?

Bra fråga...   :r

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

## #5 — @nders, 2008-01-15T12:57Z

Snälla, skriv ut bara $sql, och exekvera den i något vettigt verktyg. Det är bara en massa php-kladd i dina inlägg... :(

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

## #6 — Guldstrand, 2008-01-15T13:04Z

> **@nders skrev:**
>
> Snälla, skriv ut bara $sql, och exekvera den i något vettigt verktyg. Det är bara en massa php-kladd i dina inlägg... :(

Vadå "kladd"..?

Körde frågan direkt i phpmyadmin, och fick.

> MySQL returnerade ett tomt resultat (dvs inga rader). (Frågan tog 0.0003 sek)

```php
SELECT id, aktiv, losenord, epost
FROM annonsorer
WHERE epost = '$epost'
AND losenord = '$password'
AND aktiv = '1'
LIMIT 0 , 30
```

(Är fortfarande novis när det gäller php samt mysql.)   :r

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

## #7 — @nders, 2008-01-15T13:25Z

skrev du verkligen ut frågan med echo? du har ju fortfarande php-variablerna i det du postar nu?

edit: php är kladd. våra ögon och hjärnor kan inte automatiskt parsa php-kod. punkt 3 i [denna lista](http://www.webforum.nu/showthread.php?t=135903) har gått dina ögon förbi - läs gärna resten också.

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

## #8 — Guldstrand, 2008-01-15T13:53Z

Kan fortfarande inte logga in.  :(

> Användarnamn: <test@test.nu>
> Lösenord: 12345
> MD5: 06a2fcaaabeb16e45411d80f68f2df78

```php
CREATE TABLE `annonsorer` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `admin` enum('ja','nej') NOT NULL default 'nej',
  `losenord` varchar(32) NOT NULL default '',
  `namn` varchar(50) NOT NULL default '',
  `gatuadress` varchar(50) NOT NULL default '',
  `postnummer` varbinary(10) NOT NULL default '',
  `ort` varchar(50) NOT NULL default '',
  `telefon` varchar(20) NOT NULL default '',
  `epost` varchar(50) NOT NULL default '',
  `ipadress` varchar(20) NOT NULL default '',
  `tillagd` datetime NOT NULL default '0000-00-00 00:00:00',
  `status` enum('väntar','godkänd') NOT NULL default 'väntar',
  `aktiv` int(11) NOT NULL default '0',
  `md5` varchar(32) NOT NULL default '',
  `link` int(11) NOT NULL default '0',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=13 ;

-- 
-- Data i tabell `annonsorer`
-- 

INSERT INTO `annonsorer` VALUES (12, 'nej', '12345', 'test', 'test', 0x3132333435, 'test', '12345', 'test@test.nu', 'min ipadress', '2008-01-15 14:12:30', 'godkänd', 1, '06a2fcaaabeb16e45411d80f68f2df78', 0);
```

Förstår inte varför.  :(

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

## #9 — colione, 2008-01-15T14:36Z

För att du kollar av din md5 mot lösenordsfältet i databasen och inte md5-fältet...sen kan man ju fundera på varför du ska hasha lösenordet men ändå spara det i klartext....

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

## #10 — Guldstrand, 2008-01-15T14:53Z

> **colione skrev:**
>
> För att du kollar av din md5 mot lösenordsfältet i databasen och inte md5-fältet...sen kan man ju fundera på varför du ska hasha lösenordet men ändå spara det i klartext....

Som nämnt ovan, så är jag fortfarande rätt novis inom php och mysql, men jag **försöker**.

Är tacksam för hjälp med hur jag löser detta.

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

## #11 — colione, 2008-01-15T14:55Z

du ändrar din sql-fråga så att frågan ställs mot md5-fältet.

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

## #12 — Guldstrand, 2008-01-15T15:00Z

> **colione skrev:**
>
> du ändrar din sql-fråga så att frågan ställs mot md5-fältet.

Förstår det, men hur?   :r 
Det snurrar riktigt ordentligt i skallen just nu.

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

## #13 — visslaren, 2008-01-15T15:15Z

Istället för 

```
losenord = '$password'
```

skriver du 

```
md5 = '$password'
```

i sql-satsen dvs. Eftersom du kör md5() på indatan från formuläret så kommer du per automatik inte få någon träff vid jämförelse. 
När du kollar upp $password mot losenord gör det detsamma som att jämföra 06a2fcaaabeb16e45411d80f68f2df78 med 12345

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

## #14 — Guldstrand, 2008-01-15T15:21Z

Ok! Nu har jag detta:

```php
// Inloggning
if (isset($_POST['submit'])){ 

  $password = md5($_POST['losenord']);
  $epost = db_escape($_POST['epost']);

  $sql = "SELECT id, aktiv, md5, epost FROM annonsorer
         WHERE epost='$epost'
         AND md5='$password' 
         AND aktiv = '1'";
  $result = mysql_query($sql) or die("SQL: $sql<br />" . mysql_error());
```

Får dock fortfarande "fel användarnamn eller lösenord".

*Guldstrand sliter sig i håret...*

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

## #15 — colione, 2008-01-15T15:56Z

```
  $sql = "SELECT id, aktiv, md5, epost FROM annonsorer 
         WHERE epost='$epost' 
         AND md5='$password' 
         AND aktiv = '1'"; 
  echo $sql;
```

Som vi bad dig om för ett tag sen.

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

## #16 — aasah, 2008-01-15T19:28Z

Guldstrand, det verkar som om du inte riktigt förstått det här med md5 och vitsen med att använda det. Det *kan* nog vara en del av ditt problem. Det du **BÖR** lagra i databasen är det krypterade lösenordet, **INTE** lösenordet. Dvs, man registrerar sig genom att fylla i någon form, tex:

Namn: ................... \<-- Textfield name="user"
Losen: ................... \<-- Textfield name="pass"
Epost: ................... \<-- Textfield name="email"
//Och diverse annat

I din PHP-kod, när du tar hand om datat från formen så gör du bland annat:

```php
$cryptPass = md5($_POST['pass']);  //Vilket du gör
//...
$sql = "INSERT INTO Users(Name, pass, email, ....) 
          VALUES ('".$_POST['user']."', '".$cryptPass."', '".$_POST['email']."', ...)"
//...
```

Dvs du måste lagra det **krypterade** lösenordet.

När du sedan vill logga in, har du en motsvarande form:
Namn: ................... \<-- Textfield name="user"
Losen: ................... \<-- Textfield name="pass"

När du ska se om lösenordet är rätt jämför du det (krypterade) lösenord du hämtar från databasen med $cryptPass som räknas ut likadant som i registreringssidan, nämligen:

```php
$cryptPass = md5($_POST['pass']);
```

Jag gissar att ditt problem kan bero på att du antingen jämför ett krypterat lösenord mot ett okrypterat, eller ett krypterat med ett två gånger krypterat pga att du inte fattat HUR du ska använda md5. :)

Edit: La till ett gäng borttappade '.

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

---

Tråden på webben: https://www.webforum.nu/amne/databaser-sql/168110-problem-med-inloggning
