Avatar billede roz Nybegynder
07. juli 2005 - 19:05 Der er 9 kommentarer og
1 løsning

Login tjek problem

Jeg har denne kode til at tjekke om man er logget ind eller ej:

<?php
session_start();
include('config.php');
$result = mysql_query("
SELECT
  *
FROM
  members
WHERE
Username = '".$_SESSION['username']."'
");

while ($row = @mysql_fetch_array($result)) {
$checkpass = $row["Password"];
$checkuser = $row["Username"];
}

if ($_SESSION['password'] !== $checkpass OR $result == "" OR $_SESSION['username'] !== $checkuser) {
  session_destroy();
  echo "<meta http-equiv=refresh content=0;URL=admin.php>";
}
else
{

echo "
//her kommer sidens indhold

Men man kan bare gå ind på siden uden at logge ind først.
Meget mærkeligt da den har virket tidligere idag (tror jeg).

Er der nogen der kans e hvad der går galt??
Avatar billede jaw Nybegynder
07. juli 2005 - 19:28 #1
Nope, jeg kan ikke lige se der skulle være noget galt i ovenstående... Måske tilføj en exit; efter din meta-refresh-ting.
Avatar billede mewm Nybegynder
07. juli 2005 - 19:40 #2
Ville nok lave det sådan
<?php
session_start();
include('config.php');
$result = mysql_query("
SELECT
  *
FROM
  members
WHERE
Username = '".$_SESSION['username']."'
");

while ($row = mysql_fetch_array($result)) {
$checkpass = $row["Password"];
$checkuser = $row["Username"];
}

if ($_SESSION['password'] != $checkpass || empty($result) || $_SESSION['username'] != $checkuser) {
  session_destroy();
  echo "<meta http-equiv=refresh content=0;URL=admin.php>";
  exit;
}
else
{

echo "
//her kommer sidens indhold
Avatar billede mewm Nybegynder
07. juli 2005 - 19:42 #3
Eller ved ikke rigtig hvad du vil bruge DET der til, men
hvorfor ikke lave en $_SESSION['loggedin'] = 1; når man logger ind
og så på siderne lave en:

if ($_SESSION != 1) {
print "Du er ikke logget ind";
} else {
print "Du er logget ind";
}
Avatar billede roz Nybegynder
07. juli 2005 - 19:52 #4
Hmm din første kode virker ikke.

Og den anden metode: Er dne ligeså sikker som at tjekke password og brugernavn hver gang?
Avatar billede jakobdo Ekspert
07. juli 2005 - 20:41 #5
Altså du bestemmer jo som sådan selv hvad du vil putte i din SESSION.
SÅ jeg ville lave noget i stil med:

EN login form.
Den sender du så til en php fil, tjekker om brugernavn + kodeord findes i din database, er de begge korrekte, så sætter du $_SESSION['loggedin'] = 1 som mewm er inde på!
Og så på alle efterfølgende side, laver du tjekket:
if ($_SESSION != 1) {
print "Du er ikke logget ind";
} else {
print "Du er logget ind";
}
Det er jo det som er meningen med en session, at den holder over flere sider.
Avatar billede roz Nybegynder
07. juli 2005 - 22:38 #6
Jaaa det er jeg godt klar over.. Det eneste jeg spurgte om var om det var lige så sikkert?
Avatar billede jakobdo Ekspert
07. juli 2005 - 22:43 #7
Det skulle jeg mene!
Dog har man hørt om nogle som kan hijacke sessions...
Avatar billede roz Nybegynder
07. juli 2005 - 22:44 #8
Nemlig... Det var også det jeg tænkte på...

Så hvis jeg kan få dette til at virke igen holder jeg mig til den metode jeg har nu.
Avatar billede roz Nybegynder
07. juli 2005 - 23:10 #9
Nå fik på en eller anden måde selv koden til at virke igen.

Men tak alligevel allesammen :)
Avatar billede ksoren Nybegynder
07. juli 2005 - 23:41 #10
Metoden med at sætte en session-variabel ved login, og kontrollere denne på alle sider er sikker nok.

At slå op i databasen hele tiden gør ikke siden mere sikker, kun mere ressourcekrævende. Og din metode vil ikke forhindre en bruger i at få hijacket sin session.
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