Log ind system virker ikke

Tags:    html php mysql

Hej.

Jeg er stødt ind i et problem, hvor hjemmesiden husker en enkelt bruger, som hedder darkrune, selvom der er andre informationer tastet ind.

Logind.php
Fold kodeboks ind/udPHP kode 


admin.php
Fold kodeboks ind/udPHP kode 


Problemet er nemlig at hvis jeg logger ind med en test bruger, som ikke har brugertype 1, så logger den alligevel ind som darkrune. Når jeg logger ud ser den sådan ud.

Logud.php
Fold kodeboks ind/udPHP kode 


Nogle som ved hvordan man klare sådan et problem?

På forhånd tak :)



9 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Du skal kigge på de her linjer:
Fold kodeboks ind/udPHP kode 

Først finder du brugeren. Det er fint nok.

Men den næste SQL. Der henter du sådan set alt fra brugere-tabellen. Du definerer ikke hvilken bruger der skal hentes data om. Derfor hvis "darkrune" er den første bruger i tabellen, så er det ham der bliver logget ind.





Problemet er altså, at jeg bruger
Fold kodeboks ind/udPHP kode 

?


Jeg du vælger ALLE data fra tabellen. Du mangler en selektor, hvor du definerer for hvilken bruger du ønsker data.

Dvs. til sidst mangler der "WHERE ID=??".

Altså. Fra den første forespørgsel, gemmer du det id som bliver returneret. Derefter bruger du dette id, til den næste forspørgsel.

Her er 2 eksempler, så du kan se forskellen:
SELECT id, navn from brugere
resultat:
1 - darkrune
2 - lightrune
3 - bjørnenbjarnen
....osv

SELECT id, navn from brugere where id=2
resultat:
2 - lightrune

Edit - tilføjer lige et eksempel på, hvordan du kan lave rettelsen i din kode.

Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 29.09.2011 16:01 af Bruger #955
Sådan da. Du laver samme stunt i admin.php, hvor du har samme udtræk.

Lad os prøve at ændre lidt i koden.


I login.php, laver du en session efter brugeren er logget på. Her gemmer du brugerens navn. Jeg ville råde dig til, at lave det om til brugerens id, for at gøre det helle lidt nemmere

Fold kodeboks ind/udPHP kode 


I din admin.php vil jeg rykke lidt rundt. Jeg vil starte med at tjekke om sessionen brugerid er sat. Derefter bruge det id, til at lave et db udtræk:

Fold kodeboks ind/udPHP kode 




Indlæg senest redigeret d. 29.09.2011 18:30 af Bruger #955
Prøv at flyt:
$id = $_SESSION['brugerid'];
sådan her:
Fold kodeboks ind/udPHP kode 




Hej Darkrune.

Der er lidt problemer hist og her i din kode.

Jeg har lavet en simpel version (uden sikkerhed)

Logind
Fold kodeboks ind/udPHP kode 

Admin
Fold kodeboks ind/udPHP kode 


Koden er ikke testet og er på ingen måde sikret.
Jeg håber det kan give dig et prej.



Du skal kigge på de her linjer:
Fold kodeboks ind/udPHP kode 

Først finder du brugeren. Det er fint nok.

Men den næste SQL. Der henter du sådan set alt fra brugere-tabellen. Du definerer ikke hvilken bruger der skal hentes data om. Derfor hvis "darkrune" er den første bruger i tabellen, så er det ham der bliver logget ind.


Problemet er altså, at jeg bruger
Fold kodeboks ind/udPHP kode 

?





Problemet er altså, at jeg bruger
Fold kodeboks ind/udPHP kode 

?


Jeg du vælger ALLE data fra tabellen. Du mangler en selektor, hvor du definerer for hvilken bruger du ønsker data.

Dvs. til sidst mangler der "WHERE ID=??".

Altså. Fra den første forespørgsel, gemmer du det id som bliver returneret. Derefter bruger du dette id, til den næste forspørgsel.

Her er 2 eksempler, så du kan se forskellen:
SELECT id, navn from brugere
resultat:
1 - darkrune
2 - lightrune
3 - bjørnenbjarnen
....osv

SELECT id, navn from brugere where id=2
resultat:
2 - lightrune

Edit - tilføjer lige et eksempel på, hvordan du kan lave rettelsen i din kode.

Fold kodeboks ind/udPHP kode 


nu ser logind.php sådan her ud:
Fold kodeboks ind/udPHP kode 


Men den laver stadig samme fejl, med at den vælger brugeren darkrune. Har jeg gjort det forkert?



Sådan da. Du laver samme stunt i admin.php, hvor du har samme udtræk.

Lad os prøve at ændre lidt i koden.


I login.php, laver du en session efter brugeren er logget på. Her gemmer du brugerens navn. Jeg ville råde dig til, at lave det om til brugerens id, for at gøre det helle lidt nemmere

Fold kodeboks ind/udPHP kode 


I din admin.php vil jeg rykke lidt rundt. Jeg vil starte med at tjekke om sessionen brugerid er sat. Derefter bruge det id, til at lave et db udtræk:

Fold kodeboks ind/udPHP kode 


Det virker næsten, men nu kan den ikke udskrive data fra databasen på admin.php, som ser således ud:
Fold kodeboks ind/udPHP kode 


Med data mener jeg f.eks. $post['navn'] og $post['brugernavn']. Desuden så giver den følgende fejlmeddelelse:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in /customers/darkrune.dk/darkrune.dk/httpd.www/nyheder/admin.php on line 9 Warning: Cannot modify header information - headers already sent by (output started at /customers/darkrune.dk/darkrune.dk/httpd.www/nyheder/admin.php:9) in /customers/darkrune.dk/darkrune.dk/httpd.www/nyheder/admin.php on line 18



Indlæg senest redigeret d. 29.09.2011 20:33 af Bruger #14776
Tusind tak, det virker nu som jeg ville have det :)



t