Gå til innhold

Trenger hjelp med et innloggingssystem


Anbefalte innlegg

Skrevet

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

Videoannonse
Annonse
Skrevet (endret)

Ja. URL-en i toppen endrer seg dog ikke når jeg trykker på logg-inn (sesjonsid vises aldri), men $_SESSION['access'] blir satt.

Endret av atsjoo
Skrevet

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.

Skrevet

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.

Skrevet

<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

Skrevet
<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.

Skrevet

loggut.php

<?php
session_start();
session_destroy();
print("Du er nå logget ut");
?>

 

Da kan du bare lage en link som ser slik ut: <a href="loggut.php">Logg ut</a>

Skrevet

Et problem til jeg har, er at når jeg trykker på "logg inn" første gang, skjer det ingen ting. Jeg må med andre ord trykke to ganger for at jeg skal bli logget inn - hvorfor?

Skrevet (endret)

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
Skrevet

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:

Skrevet (endret)

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
Skrevet
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>

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...