Gå til innhold

Hvordan forbli innlogget?


Anbefalte innlegg

Holder på med et script hvor man må logge inn, men har problemer med å forbli innlogget.

 

Når man er logget inn, og navigerer rundt på siden forblir man innlogget, men når man klikker "tilbake" må man logge inn igjen på nytt. Hvordan kan jeg unngå dette? Trodde man unngikk dette ved å ha session_start(); øverst i filen?

 

Problemet er vel kanskje at $_SESSION['innlogget'] = false; blir satt i begynnelsen av filen, altså at denne slår til når man klikker "tilbake". Men hvordan i såfall fikse dette, og samtidig få samme funksjonalitet som jeg nå har, med tanke på innloggingen.

 

Her er koden:

http://norskwebforum.no/pastebin/1157

 

Logg inn her:

http://julecupen.no/index.php?side=signup_ny2

 

Brukernavn: [email protected]

passord: test

Endret av remi sture
Lenke til kommentar
Videoannonse
Annonse

hei!

 

hvorfor bruker du egentlig $_SESSION['innlogget'] = false;?

 

Her et koden jeg bruker på et av programmene mine og det fungere fint med tilbake-kanpp og utlogging..:

 

session_start();

if ($loggut==ja) {
session_destroy();
header("location: index.php");
}

if (isset($_POST['brukerid']) && isset($_POST['passord']))
{

$brukerid = $_POST['brukerid'];
$passord = $_POST['passord'];

$query = mysql_query("SELECT * FROM medlemmer",$db);
$info = mysql_fetch_array($query);
if ($info["id"]==$brukerid && $info["pass"]==$passord)
{
$_SESSION['bruker'] = $brukerid;
}

}

if (isset($_SESSION['bruker']))
{  echo "her går medlemmenes innhold";  }
else {
echo "her går innholdet til de som ikke er logget inn";
}

 

hjalp dette...?

Endret av PayZ
Lenke til kommentar

Problemet ditt er at du legger alt man kan gjøre når man er innlogget i if setningen som sjekker om $_SESSION["innlogget"] er false, og det er den jo alltid, i og med at du setter den til false i scriptet.

(Jeg liker best å bruke funksjonen isset() for å sjekke om en session inneholder noe, pluss at det kan være en fordel å la en session ta vare på brukernavnet til den som er innlogget)

tips til løsning:

<?
session_start();
if(!isset($_SESSION["innlogget"])) {
   /*
   Vis det som skal vises for en som ikke er logget på...
   Sånn som innloggingsboks og rigstreringsting.
   Øverst i scriptet, sjekker du om "knapp" er trykket, og hvis brukernavn og passord stemmer, så setter du $_SESSION["innlogget"] til true, eller hva du vil, og reloader siden. Bruk evt. et eget login script til dette (Mye bedre)
*/
}
else { // Her legger du alt som krever innlogging
  echo "du er logget inn...";
  if(!$_GET["action"]) {
      //Vis formen for å legge til lag
  }
  elseif ($action == "blabla") {
  }
}
?>

ET veldig forenklet forslag. Men håper du skjønner prinsippet ihvertfall... Alt som en innlogget person skal kunne gjøre, må legges utenfor if setningen som slår til dersom man ikke er innlogget.

 

EDIT: Litt annen ordleggelse, eller noe sånt

Endret av kakkle
Lenke til kommentar

Det kommer ingenting etter at du har lgget inn, fordi scriptet slutter da...

 

Etter du har satt session, legg ut en beskjed som sier at man er innlogger, og en link til startsiden igjen.:

$_SESSION["innlogget"] = true; // Merk: Enkelt likhetstegn.
echo "Du er nå innlogget <br>";
echo "<a href='?side=".$_GET[side]."'>Trykk her for å fortsette</a>";

 

Prøv det... Skal fungere. Som sagt, husk et likhets tegn når du setter en variablel (ikke $_SESSION["innlogget"] == true;)

 

Legg evt selve innloggings prosessen i en egen fil, og benytt header() for å redirecte til innlogget siden (scriptet)

f.eks:

login.php:

if(!isset($_POST["knapp"])) {
 header("location:index.php?side=".$_GET["side"]);
}
else {
 // Sjekk om bruker navn og passord som er tastet inn stemmer
 // Dersom dette stemmer:
 $SESSION["innlogget"]=true;
 header("location:index.php?side=".$_GET["side"]);
}

og form tagen, hvor man logger inn:

echo '<form method="post" action="login.php?side='.$_GET["side"].'">

 

EDIT: HUSK session_start() i starten av scriptet !

Endret av kakkle
Lenke til kommentar

Bli med i samtalen

Du kan publisere innhold nå og registrere deg senere. Hvis du har en konto, logg inn nå for å poste med kontoen din.

Gjest
Skriv svar til emnet...

×   Du har limt inn tekst med formatering.   Lim inn uten formatering i stedet

  Du kan kun bruke opp til 75 smilefjes.

×   Lenken din har blitt bygget inn på siden automatisk.   Vis som en ordinær lenke i stedet

×   Tidligere tekst har blitt gjenopprettet.   Tøm tekstverktøy

×   Du kan ikke lime inn bilder direkte. Last opp eller legg inn bilder fra URL.

Laster...
×
×
  • Opprett ny...