Avatar billede cortx Nybegynder
14. september 2004 - 18:05 Der er 5 kommentarer og
1 løsning

Problemer med login system i sessions

Hej eksperter.

jeg søger hjælp til mit login system, eller ret og sagt en funktion til det.

Jeg har programeret login systemet, opret siden og en brugerliste.

Jeg har en menu som viser login modulet, men så vil jeg gerne have at samme sted i menuen ændres til nogle links så snart man er logget ind. Altså én menu. Ikke logget ind=login modul - Logget ind=links !

Systenet bruger sessions, og jeg skriver nedenunder koderne på mine sider.






Menuen hvor den kode jeg mangler skal stå på (IKKE LOGGET IND)

<table width="100%"  border="0" cellspacing="0" cellpadding="4">
<tr>
<td><font color="#880000"><b>Login</b></font><br>
<table width='100%'  border='0' cellspacing='0' cellpadding='0'>
<tr>
<td align='center'>
<form action='login.php' method='post'>
Brugernavn<br>
<input name='navn2' type='text' id="navn2" style='color: #FFFFFF; font-family: Verdana; font-size: 10px; border: 1px solid #000000; background-color: #880000;' size='19' maxlength='255'>
<br>
Password<br>
<input name='kode2' type='password' id="kode2" style='color: #FFFFFF; font-family: Verdana; font-size: 10px; border: 1px solid #000000; background-color: #880000;' size='19' maxlength='255'>
<br>
<br>
<input name="submit2" type='submit' style='color: #FFFFFF; font-family: Verdana; font-size: 10px; border: 1px solid #FFFFFF; background-color: #880000;' value='Login'>
<br>
<a href='opret_bruger.php'><br>
Opret bruger</a><br>
<a href='password.php'>Glemt password?</a><br>
<a href='brugerliste.php'>Brugerliste</a>
</form></td>
</tr>
</table></td>
</tr>
</table>






Menuen hvor den kode jeg mangler skal stå på (LOGGET IND)

<table width="100%"  border="0" cellspacing="0" cellpadding="4">
<tr>
<td><font color="#880000"><b>Login</b></font><br>
<table width='100%'  border='0' cellspacing='0' cellpadding='0'>
<tr>
<td>&middot; <a href='brugerliste.php'>Brugerliste</a><br>
&middot; <a href='min_profil.php'>Min profil </a><br>
&middot; <a href='ret_min_profil.php'>Ret min profil </a><br>
&middot; <a href='slet_min_bruger.php'>Slet min bruger </a></td>
</tr>
</table>
</td>
</tr>
</table>




Siden der logger en ind (Den som login modulet sender en til

<?
session_start();
include("inc/db.php");

$query = mysql_query("SELECT * FROM superhosting_brugere WHERE navn LIKE '$_POST[navn]' AND kode LIKE '$_POST[kode]'") or die(mysql_error());
while ($row = mysql_fetch_assoc($query)) {

if($row[navn] == $_POST[navn] AND $row[kode] == $_POST[kode]) {

$equery = mysql_query("SELECT * FROM superhosting_brugere WHERE navn LIKE '$_POST[navn]'") or die(mysql_error());
while ($e_row = mysql_fetch_assoc($equery)) {
$status = $e_row[status];

if($status == 1) {

session_register(brugernavn);
$_SESSION[brugernavn] = $e_row[navn];
session_register(kode);
$_SESSION[kode] = $e_row[kode];

header ("location: brugerliste.php");

} else {
header ("location: index.php");
}

}
}
}
?>






Jeg håber i kan hjælpe mig.!!
Og jeg ber jeg virkeligt.. I får 200 points hvis i kan få det til at virke for mig. Har brugt login systemet til admin engang, og har så nu bygget lidt om i det. Er næsten 100% sikker på at det virker.

mvh
Rasmus Henriksen
Avatar billede woodydrn Nybegynder
15. september 2004 - 07:52 #1
Bare lige lidt kommentarer, for det første kan du snyde SQLen her, jeg kunne som password skrive ' OR kode = ' og bruge brugernavn admin etc ... så ville jeg også blive logget ind. Men er svaret ikke bare at lave en bruger class, der indeholder login check, altså som du allerede gør her - så i starten skrive $user->check() etc, og den vil printe enten den ene menu eller den anden ;)
Avatar billede woodydrn Nybegynder
15. september 2004 - 08:02 #2
Bruger class kunne være:

class userHandler {
  var $navn;
  var $kode;
  var $aktiveret = 0;

  function userHandler($navn, $kode) {
    $query = mysql_query("SELECT * FROM superhosting_brugere WHERE navn = '$navn' LIMIT 1") || exit(mysql_error());
    $row  = mysql_fetch_assoc($query);

    if (($navn == $_POST["navn"]) && ($kode == $_POST["kode"])) {
      $this->navn      = $name;
      $this->kode      = $kode;
      $this->aktiveret = $row["status"];
    }
  }

  function check() {
    return $this->aktiveret;
  }
}

så $user =& new userHandler($_POST["navn"], $_POST["kode"]); .. så kan du bruge ->check() ...
Avatar billede woodydrn Nybegynder
15. september 2004 - 08:06 #3
Du bruger også LIKE i queryen, så kunne jeg også skrive password og navn lidt forkert - og den vil stadig finde brugeren. Der er ingen grund til at gå igennem hele resultatet, sæt et LIMIT 1 på så den ikke skal igennem flere brugere, der er jo heller ikke flere der logger ind. Og slet ikke nogen grund til at hente brugeren endnu engang fra databasen - når du faktisk allerede har fat i dataen ;)
Avatar billede woodydrn Nybegynder
15. september 2004 - 08:08 #4
Og i HTMLen burde du fjerne de hardcoded styles og sætte dem i en /css/styles.css etc. sorry jeg bliver ved hehe ;)
Avatar billede cortx Nybegynder
15. september 2004 - 18:05 #5
KAn du ikke skrive koderne til det jeg skal bruge, for forstår ikke det du mener. Skriv hele menuen. Og hvis der skal laves om i den side brugeren sendes til gør du det. Jeg har virkelig brug for hjælp!

Jeg kan ikke forstå det du skriver.
Avatar billede cortx Nybegynder
03. april 2006 - 15:37 #6
der skete ikk rigtigt noget
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