---
title: "Lite assistans med sessions..."
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/169074-lite-assistans-med-sessions"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "niNe"
published: "2008-02-15T12:49:22.000Z"
updated: "2008-02-15T23:52:02.000Z"
replies: 17
views: 880
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/169074-lite-assistans-med-sessions"
---

# Lite assistans med sessions...

## #1 — niNe, 2008-02-15T12:49Z

Tjopp!

Ny på detta med PHP, och skulle behöva lite assistans. 

Har en inloggning som processas vidare till en sida som kollar av mot MySQL och sedan skickar vidare till en annan sida... Precis som en normal inloggning med andra ord... Skulle dock vilja lägga med några andra variabler till sessionen. 

Har följande kod i min validering innan den skickar vidare: 

```php
session_start();
$uname = $row['name'];
$email = $row['email'];
$_SESSION['authenticated'] = true;
$_SESSION['uname'] = $uname;
$_SESSION['email'] = $email;
header("location:adm.php");
```

 

Problemet är att användarens fulla namn ($row\['name'\]) inte skickas med till nästa sida. Skriver jag däremot:

```php
$_SESSION['uname'] = "test";
```

 så kommer "test" med till nästa sida.

Förmodar att jag gör något fel, precis som vanligt... Kan dock inte identifiera vad det är... Förslag?

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

## #2 — Pedda, 2008-02-15T13:12Z

Beroende på vilka inställningar du har av php så kan det ställa till det att ha samma namn på en vanlig variabel och på en sessionvariabel.

testa:

```php
 session_start();
$_SESSION['sess_authenticated'] = true;
$_SESSION['sess_uname'] = $row['name'];
$_SESSION['sess_email'] = $row['email'];
header("location:adm.php");
```

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

## #3 — niNe, 2008-02-15T13:32Z

Tack för ditt svar. Tyvärr hjälpte det inte.... 
Variabeln skrivs fortfarande inte ut på nästkommande sida... 

Följande kod på adm.php:

```php
echo "Du är inloggad som: ".$_SESSION['sess_uname']
```

"Du är inloggad som" skrivs ut, men inte namnet. Ändrar jag till $\_SESSION\['sess_uname'\] = "test" så kommer ju "Du är inloggad som: test" på sidan.

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

## #4 — Pedda, 2008-02-15T13:35Z

Ok, koden som du skrev är väl inte exakt den du använder?
Antar att du har sql satsen mm mellan session_start() och dina sessions deklarationer?
Annars så är det ju klart att variabeln är tom.

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

## #5 — niNe, 2008-02-15T14:11Z

> **Pedda skrev:**
>
> Ok, koden som du skrev är väl inte exakt den du använder?
> Antar att du har sql satsen mm mellan session_start() och dina sessions deklarationer?
> Annars så är det ju klart att variabeln är tom.

Jag har en sqlsats i min verifieringsfilen, men inte i adm.php. Måste jag ha den där också menar du?

Jag förutsatte ju att min verifiering skapade en session med mitt namn (från databasen) som jag sedan kunde skriva ut varsom, utan att blanda in sqlsatser...

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

## #6 — aasah, 2008-02-15T14:15Z

Varför mellanlagra i $user? Ändra till:

```php
session_start();
$_SESSION['authenticated'] = true;
$_SESSION['uname'] = $row['name'];
$_SESSION['email'] = $row['email'];;
header("location:adm.php");
```

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

## #7 — Pedda, 2008-02-15T14:19Z

> **niNe skrev:**
>
> Jag har en sqlsats i min verifieringsfilen, men inte i adm.php. Måste jag ha den där också menar du?
> 
> Jag förutsatte ju att min verifiering skapade en session med mitt namn (från databasen) som jag sedan kunde skriva ut varsom, utan att blanda in sqlsatser...

Nej jag menade i verifieringsfilen. I adm.php behöver du det inte.
Posta hela koden till verifieringsfilen så ska vi nog kunna hitta felet.

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

## #8 — aasah, 2008-02-15T14:20Z

.... Grrr trodde jag körde quote....

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

## #9 — niNe, 2008-02-15T14:38Z

Mja, det gör jag ju... 

Fullständig kod nedan (medveten om säkerhetsbristerna)

```php
include "config.php";
$tbl="login";
mysql_connect("$host", "$username", "$password")or die("Kan inte ansluta till server"); 
mysql_select_db("$db_name")or die("Kan inte ansluta till databasen");

$usrname=$_POST['usrname']; 
$passw=$_POST['passw']; 

$sql="SELECT * FROM $tbl WHERE username='$usrname' and password='$passw'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){
session_cache_expire(30);
session_start();
$uname = $row['name'];
$email = $row['email'];
$access = $row['access'];
$_SESSION['sess_authenticated'] = true;
$_SESSION['sess_uname'] = $uname;
$_SESSION['sess_email'] = $email;
$_SESSION['sess_access'] = $access;
header("location:adm.php");
}
else {
echo "Fel användarnamn eller lösenord";
}
```

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

## #10 — aasah, 2008-02-15T14:58Z

Du hämtar aldrig ut någon $row....

```php
$sql="SELECT * FROM $tbl WHERE username='$usrname' and password='$passw'";
$result=mysql_query($sql);

$count=mysql_num_rows($result);

if($count==1){

session_cache_expire(30);
session_start();

$row = mysql_fetch_array($resultat); //<--- MÅSTE GÖRAS

$uname = $row['name'];
$email = $row['email'];
$access = $row['access'];
$_SESSION['sess_authenticated'] = true;
$_SESSION['sess_uname'] = $uname;
$_SESSION['sess_email'] = $email;
$_SESSION['sess_access'] = $access;
header("location:adm.php");
}
```

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

## #11 — colione, 2008-02-15T14:59Z

SQL-injection varning.

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

## #12 — niNe, 2008-02-15T15:31Z

> **colione skrev:**
>
> SQL-injection varning.

Tack för din konstruktiva kritik.... Du har varit oerhört hjälpsam!

> **aasah skrev:**
>
> Du hämtar aldrig ut någon $row....

La till den nu, men det hjälper tyvärr inte. Följer fortfarande inga värden...

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

## #13 — Pedda, 2008-02-15T15:40Z

Ta bort

```php
$row = mysql_fetch_array($resultat); //<--- MÅSTE GÖRAS

$uname = $row['name'];
$email = $row['email'];
$access = $row['access'];
```

 

och ändra deklarationen till:

```php
$_SESSION['sess_authenticated'] = true;
$_SESSION['sess_uname'] = mysql_result($result, 0, 'name');
$_SESSION['sess_email'] = mysql_result($result, 0, 'email');
$_SESSION['sess_access'] = mysql_result($result, 0, 'access');
```

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

## #14 — niNe, 2008-02-15T15:58Z

Pedda! Det blir en guldstjärna i boken ;)

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

## #15 — colione, 2008-02-15T19:31Z

> **niNe skrev:**
>
> Tack för din konstruktiva kritik.... Du har varit oerhört hjälpsam!

[Då](http://www.swesecure.com/?ID=dc6ea60a-12ae-4e7e-9e9c-59489ccafa90&IID=29a58b01-ca79-4877-b924-4f5da18d4a2a) [det](http://en.wikibooks.org/wiki/Programming:PHP:SQL_Injection) [redan](http://www.governmentsecurity.org/articles/SQLInjectionModesofAttackDefenceandWhyItMatters.php) [finns](http://www.governmentsecurity.org/articles/SQLinjectionBasicTutorial.php) [så](http://shiflett.org/articles/sql-injection) [enormt](http://dev.mysql.com/tech-resources/articles/guide-to-php-security.html) [mycket](http://www.acunetix.com/websitesecurity/sql-injection.htm) [skrivet](http://phpsec.org/projects/guide/3.html) [om](http://www.netlobo.com/preventing_mysql_injection.html) [just](http://www.php.net/manual/en/security.database.sql-injection.php) [detta](http://www.webforum.nu/showthread.php?t=160440&highlight=sql+injections) [och](http://se2.php.net/pdo) [hur](http://blog.c0la.se/blog/63) [man](http://www.caucho.com/resin/examples/quercus-pdo/index.xtp) [åtgärdar](http://www.google.com/search?hl=en&safe=off&client=opera&rls=en&hs=lrQ&q=sql+injection+php&btnG=Search) [det](http://www.google.com/search?q=prepared+statements+pdo&hl=en&safe=off&client=opera&rls=en&hs=B85&pwst=1&start=10&sa=N) [kanske det är dags för dig att söka?](http://www.justfuckinggoogleit.com)

Det är alltså när du kollar användarnamn och lösenord mot databasen som detta inträffar.

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

## #16 — aasah, 2008-02-15T20:36Z

Colione, hur skulle du reagera om någon skrev så till dig?   :q Jag tror jag anar... givet vad du svarar på...

Visst är det bra att påpeka för nya att deras kod är livsfarlig för deras databaser om de inte stoppar SQL Injections. Men ingen föds med kunskapen om vad det är. Och alla har vi varit nya någon gång... Varför länkade du inte någon av de artiklarna från början istället?  Skulle det tagit så mycket längre tid?

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

## #17 — colione, 2008-02-15T21:08Z

> **aasah skrev:**
>
> Colione, hur skulle du reagera om någon skrev så till dig?   :q Jag tror jag anar... givet vad du svarar på...
> 
> Visst är det bra att påpeka för nya att deras kod är livsfarlig för deras databaser om de inte stoppar SQL Injections. Men ingen föds med kunskapen om vad det är. Och alla har vi varit nya någon gång... Varför länkade du inte någon av de artiklarna från början istället?  Skulle det tagit så mycket längre tid?

På a svarar jag:
Jag skulle ha tittat på informationen och tagit till mig den.
På b svarar jag:
Man lär sig mer om man får utforska själv än att man får allt serverat på silverfat framför sig.
På c svarar jag:
Ja det hade tagit mycket längre tid än att skriva det jag skrev.
På d svarar jag (det som du numer har tagit bort):
Det kke inte var bästa sättet att värva nya medlemmar, men det kommer allt fler medlemmar som inte ger nånting tillbaka till forumet, något jag har tröttnat lite på. Dock så ser jag inget fel i mitt först inlägg som påpekade att koden han hade var lite farlig. Jag antog också att man vet vad sql är om man skriver det, därmed drog jag slutsatsen att man förstår vad **SQL**\-injections betyder. Jag kunde ha varit utförligare, men jag valde hoppas och tror att våra medlemmar har slutledningsförmåga. All kritik måste inte vara konstruktiv.

Jag kke har en dålig dag idag och om jag tog ut det på niNe får jag be om ursäkt.

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

## #18 — aasah, 2008-02-15T23:52Z

colione - på det svaret säger jag (y)

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

---

Tråden på webben: https://www.webforum.nu/amne/php/169074-lite-assistans-med-sessions
