Gå til innhold

Trenger hjelp med et innloggingssystem


Anbefalte innlegg

Jeg driver å lager en side med et slikt innloggingssystem, ved hjelp av en database og og sessions. I toppen av index.php starter jeg en session, og dersom man skriver inn riktig brukernavn og passord lenger ned på sida, settes $_SESSION['access'] = "granted", men når jeg da trykker på en link glemmes tydeligvis denne sesjonsvariablen. Man befinner seg alltid på index.php, men forskjellige sider inkluderes når man trykker på linker (<a href="?side=blablabla$kategori=blablabla2">).

 

Hvordan får jeg sida til å beholde sesjonen og sesjonsvariabelen når jeg trykker en link?

 

Mvh.

Anders

Lenke til kommentar
Videoannonse
Annonse

Sesjonsid lagres i en cookie dersom nettleseren støtter det. Da vil ikke url'en endres. Dersom cookies ikke støttes får man &PHPSESSID=... på slutten av url'en. (Antar at session.name og arg_separator.output er default)

 

PS: Paste koden, så finner vi kanskje feilen.

Lenke til kommentar

if ($_SESSION["access"] == "granted") { ?>
<p class="menyskille">: administrasjon</p>
<p>Du er innlogget som <?php echo $_SESSION['brukernavn'];?>. <a href="<?php session_destroy(); ?>">Logg ut</a></p>
<a href="index.php?kat=<?php echo $kat; ?>&side=nyhet" class="katlink">- legg til nyhet</a>
<a href="index.php?kat=<?php echo $kat; ?>&side=upload" class="katlink">- legg inn bilde</a>
<?php }
else {
?>
<form name="login" method="POST" action="index.php">
<input type="text" name="brukernavn" class="login">
<input type="password" name="passord" class="login">
<input type="submit" name="login" class="login" value="Logg meg inn">
</form>
Ikke registrert? <a href="?side=Registrering.php">Trykk her.</a>
<?php
 if ($_POST['login'] != null) {
$brukernavn = $_POST['brukernavn'];
$login = crypt($brukernavn, $_POST['passord']);
include ('db_conn.php');
$query = "SELECT * FROM brukere WHERE passord = '".$login."' and brukernavn ='".$brukernavn."'";
$result = mysql_query($query);
if (mysql_fetch_row($result)) {
 $_SESSION['brukernavn'] = $brukernavn;
 	$_SESSION["access"] = "granted";
}
else {
     echo 'Prøv en gang til.';
}
     
}
}

 

I tillegg kommer session_start(); øverst i dokumentet.

Lenke til kommentar

<p>Du er innlogget som <?php echo $_SESSION['brukernavn'];?>. <a href="<?php session_destroy(); ?>">Logg ut</a></p>

 

Problemet er at du ødelegger sesjonen når brukeren har logget inn.

 

<?php session_destroy(); ?>

 

Denne sletter sesjonen.

href attributten blir forøvrig tom.

 

 

Les mer om session-destroy

Lenke til kommentar
<p>Du er innlogget som <?php echo $_SESSION['brukernavn'];?>. <a href="<?php session_destroy(); ?>">Logg ut</a></p>

 

Problemet er at du ødelegger sesjonen når brukeren har logget inn.

 

<?php session_destroy(); ?>

 

Denne sletter sesjonen.

href attributten blir forøvrig tom.

 

 

Les mer om session-destroy

Selvfølgelig :p

 

Takk skal du ha. Forslag til hvordan jeg da kan lage en logg ut-link? Eneste måten jeg kommer på i farta er å lage en submit-knapp.

Lenke til kommentar

Er du sikker på at du ikke blir logget inn, men at PHP-koden som skal sjekke om du er innlogget er ett HTML-koden som sier om du er det eller ikke?

 

Hvordan logger du inn? Via form?

 

For å logge ut, kan du jo også bare lage en lenke slik:

<a href="index.php?loggut=1">Logg ut</a>

Og i index.php ha denne kodesnutten:

<?php
if ($_GET['loggut'] == 1) {
session_destroy();
}
?>

Endret av drange_net
Lenke til kommentar

Hmm..

Når jeg sette inn <?php session_start(); ?> i toppen av index.php kommer denne feilmeldingen:

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /mnt/home3/z/zo/zoot89/public_html/index.php:25) in /mnt/home3/z/zo/zoot89/public_html/index.php on line 117

 

Hva er det som egentlig er galt ? :no:

Lenke til kommentar

Akkurat det som står. Header er allerede sendt, og session_start() må være det ALLER FØRSTE som blir sendt, ellers tryner det.

 

 

Edit: Dette har vært oppe før her.

 

Edit2: Frames?

Endret av drange_net
Lenke til kommentar
Akkurat det som står. Header er allerede sendt, og session_start() må være det ALLER FØRSTE som blir sendt, ellers tryner det.

 

 

Edit: Dette har vært oppe før her.

 

Edit2: Frames?

Hmm..

Har den heeeeelt øverst på index.php :hmm:

Nei bruker ikke frames...

Bruker ett include script :

 

<?php session_start(); ?>
<!--

All contents are copyrighted © to Mellet Solbakk.

Please do not use any without my approval.

Thank you.



Alt innhold er copyrighted © til Mellet Solbakk.

Vær vennlig å ikke bruk noe uten mitt samtykke.

På forhånd takk.

-->
<html><head>

<style>

INPUT {

background-color: #666666;

color: black;

border: black 1px solid;

font-family: Verdana, Arial, Helvetica, sans-serif;

font-weight: bold;

font-size: 10px;

}



TEXTAREA {

background-color: #666666;

color: black;

border: black 1px solid;

font-family: Verdana, Arial, Helvetica, sans-serif;

font-weight: bold;

font-size: 10px;

}

</style>

<title>MelleT</title>



<link rel="stylesheet" type="text/css" href="style.css">  



<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">


</head>



<body alink="#FFFFFF" vlink="#FFFFFF" link="#FFFFFF" text="#FFFFFF">

 <div align="center">

<!--Banner-->

 <div id="header"></div>

<!--Banner-->



<!--Linker-->

 <div class="fet" id="menu">



<a href="?side=main">Nyheter</a> - 

<a href="?side=meg">Meg</a> - 

<a href="?side=venner">Venner</a> - 

<a href="?side=linker">Linker</a> - 

<a href="?side=galleri">Galleri</a> - 

<a href="?side=statistikk">Stats</a> - 

<a href="?side=gjestebok">Gjestebok</a> -
<?php
if($_SESSION['brukernavn'] && $_SESSION['passord'])
{echo ("<a href=?side=loggut>Logg Ut</a>");}
else
{echo("<a href=?side=logginn>Logg Inn</a>");}
?>

</div>

<!--Linker-->





<!-- Innhold -->

 <div class="normal" id="main"> 

 <div align="left">

 <div id="padding">



<?php

include("style.php");



if(@$_GET['side']) { 

 if(@is_file("{$_GET['side']}.php")) { 
   @include("{$_GET['side']}.php"); 

 } else { 

   echo "$rød Siden finns ikke. $end $normal Eller blir oppdatert. Prøv igjen senere. $end"; 

 } 

} else { 
 
 @include("main.php");

}

echo ("<br>");

include ("online.php");

?>



<br><br>

<div align="center"><strong>Copyright © Mellet Solbakk</strong></div>



<!-- Innhold -->



 </div>

 </div> 

 </div> 
 </div>
</body> 
</html>

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...