Avatar billede jonasst Nybegynder
05. april 2005 - 11:32 Der er 9 kommentarer

Hvordan bruger jeg $_SESSION['status'] til at diregere videre

Hej eksperter
Jeg sidder og tilretter scriptet fra
http://www.showsource.dk/artikler/vis_artikel.php?id=1042998056

Og vil gerne kunne diregere brugerne videre til index.php?id=$_SESSION['status']
Hvordan gør jeg det? Har prøvet at ændre header men har kun fundet ud af at jeg ikke kan skrive index.php?id=$_SESSION['status'] der.

Her er hele min make_login fil

<?php
session_start();

//Lav connection til DB'en, tilpas til dit eget brug
include("");
mysql_select_db("",$db);

//henter felter fra "tester" hvor brugernavn er lig med det indtastede
$dotjek = mysql_query("SELECT brugernavn, password, status FROM brugerlogin WHERE brugernavn='$_POST[brugernavn]'") or die (mysql_error());

//Er der klikket på submit?
if(isset($_POST['brugernavn'], $_POST['password'])) {

//Laver "$brugertjek" for at hente de enkelte kolonners værdi
$brugertjek = mysql_fetch_object($dotjek);

//Hvis brugernavnet IKKE findes i "tester", sæt session "navne_fejl" og send brugeren tilbage
if($brugertjek->brugernavn != $_POST['brugernavn']) {
$_SESSION['navne_fejl'] = 1;
header("Location:logind.php");
exit;
}

//brugernavnet fandtes, og session "brugernavn" sættes
$_SESSION['brugernavn'] = $_POST['brugernavn'];

    //Hvis indtastet password IKKE er korrekt.
    //Husk at vi har md5 krypteret password'et i tabellen, så det gøres også her
    if($brugertjek->password != md5($_POST['password'])) {
    $_SESSION['password_fejl'] = 1;
    header("Location:logind.php");
exit;
    //Både brugernavn og password stemte, så vi sætter endnu en session, "admin"
    //og giver den feltets værdi fra "tester" og redirecter til beskyttet side
    }else{
    $_SESSION['status'] = $brugertjek->status;
    header("Location:index.php");
exit;
    }

//Fjerner $dotjek fra ram
mysql_free_result($dotjek);

}
?>
Avatar billede barklund Nybegynder
05. april 2005 - 11:37 #1
Du skal da ikke overføre login-status via søgestrengen - så kan alle jo logge ind bare ved at rette url'en. Du skal netop bruge $_SESSION så det foregår uden for brugerens rækkevidde.

Og derudover er login-systemet da ganske godt forklaret i den artikel (noteret til senere spørgsmål) så du kan da direkte kopiere alle filerne derfra, og så burde det spille?

--
Morten Barklund
Avatar billede jonasst Nybegynder
05. april 2005 - 11:42 #2
Nej kodeordet skal ikke i søgestrengen men det skal ['status'] måske heller ikke?
Så kan jeg jo istedet lave et ekstra felt i tabellen som diregere brugerne videre
Avatar billede barklund Nybegynder
05. april 2005 - 11:48 #3
Nej, det har du jo liggende i $_SESSION - og $_SESSION bevares på tværs af sider (det er jo hele konceptet). Så kan du bare på næste side (her index.php) efter en session_start() teste hvilken værdi $_SESSION['status'] har.
Avatar billede jonasst Nybegynder
06. april 2005 - 08:13 #4
Så må jeg finde en anden måde at få diregeret brugerne over til deres personlige side. Og derefter lave en kontrol der sikre at de ikke kan gå ind på andre brugers side
Avatar billede barklund Nybegynder
06. april 2005 - 10:08 #5
Hvorfor det? Det kan du da fint bruge session til? Du kan da bare gemme brugernavnet i sessoin og efterfølgende sende dem hen til profil.php, som læser brugernavnet fra session igen og viser dennes profilside? Så kan man kun se sin egen, da man jo kun kan se den side, som tilhører brugeren, der ligger i session. Det er den sædvanlige måde at gøre det på.
Avatar billede jonasst Nybegynder
06. april 2005 - 10:34 #6
Det du siger der lyder helt rigtigt. Kan du vise mig noget kode det viser hvordan?
På forhånd tak
Avatar billede barklund Nybegynder
06. april 2005 - 10:41 #7
Du smider da bare en location-header til profil.php:

header("Location: profil.php");

Og på profil.php tester du, at der er et brugernavn i session og så henter du info om det frem:

if (!isset($_SESSION['brugernavn'])) {
    // fejl
    header("Location: login.php");
}
$query = mysql_query("SELECT * FROM brugerdata WHERE brugernavn = '".$_SESSION['brugernavn']."'");
$data = mysql_fetch_object($query);
// gør noget med $data

Mere er det jo ikke - ganske simpelt.
Avatar billede jonasst Nybegynder
27. april 2005 - 07:25 #8
Hej Barklund tak for din hjælp det virker perfekt. Gider du smide et svar?
Har tidligere skrevet denne kommentar men den er åbenbart ikke blevet registreret.
Avatar billede barklund Nybegynder
27. april 2005 - 09:13 #9
Fin fin :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester