Gå til innhold

Lite problem med session


Anbefalte innlegg

Hei.

 

Jeg har ett lite problem med session. Har laget et veldig enkelt innloggingssystem med session.

 

På den lokale serveren min fungerer det, men på webhotelserveren fungerer det ikke. Derfor tenkte jeg kanskje noen ser en feil et eller annet sted, eller kanskje kan tipes meg om en bedre måte å gjøre det på, uten at det blir alt for komplisert.

 

Koden som sjekker bruker:

 

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

$brukernavn = stripslashes($brukernavn);
$passord = stripslashes($passord);
$brukernavn = mysql_real_escape_string($brukernavn);
$passord = mysql_real_escape_string($passord);
$passord = md5($passord);

$sql_sporing="SELECT * FROM brukere_hc WHERE bruker='$brukernavn' and passord='$passord'";
$resultat=mysql_query($sql_sporing);


$count=mysql_num_rows($resultat);
if($count==1){
session_start();
$_SESSION['godkjent']= true;
header("location:http://www.dan-l.com/fadder/index.php?side=loginsuk");
}
else {
echo "Galt brukernavn eller passord";
}
?>

 

 

 

Koden som sjekker om man er logget inn:

 

<?php
session_start();
if(!$_SESSION['godkjent']){
header("location: index.php?side=login");
}

... Siden sitt innhold ...
?>

 

 

Takk for all hjelp.

Lenke til kommentar
Videoannonse
Annonse

Hvis jeg går i adressefeltet og skriver inn linken til den siden man bare skal ha tilgang til når man er logget inn så får jeg tilgang til den uten å være logget inn.

 

Dette er kun på serveren som er på nett, på den lokale wamp serveren får jeg opp siden "login", som header sender brukeren til når session ikke har verdien "true".

 

Det jeg lurer på er om det er noe jeg kan gjøre anderledes for at man ikke skal få tilgang til en side som man kun skal ha tilgang til når man er logget inn.

Lenke til kommentar
Sørg for at session_start(); er HELT øverst! Før alt!

Langt fra sant. session_start() modifiserer header, og header sendes før output. session_start() må derfor stå før output. Plassere den under <?php er helt klart det enkleste, men veldig unødvendig om ikke alle funksjonene du har i fila bruker session.

 

Sendes output før en header/session_start vil det skrives ut en feilmelding.

Lenke til kommentar
<?php
session_start();
if(!$_SESSION['godkjent']){
header("location: index.php?side=login");

  exit();

}

... Siden sitt innhold ...
?>

 

Jeg avslutta php etter exit() så koden ble slik:

 

<?php
session_start();
if(!$_SESSION['godkjent']){
header('location: index.php?side=login');
exit();
}
?>

... Siden sitt innhold ...

 

Da fungerer det! Jeg får ikke tilgang til sidene som man må være logget inn for å vise. Dette scriptet ligger øverst i alle sider som inkluderes til innholdsdelen av siden - som man må være logget inn for å vise. Et annet problem dukket opp. Nå blir ikke brukeren videresendt til: index.php?side=login hvis man prøver å skirve inn adressen til en side man må være loggeet inn for å vise. Istedfor blir inneholds "boksen" tom (<div class="innehold">)

 

I tillegg hvis man ser på kildekoden til siden at den ikke har generert en komplett html kildekode :/

 

 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
	<title>Titel</title>
	<link rel="stylesheet" type="text/css" href="stil.css" />
 </head>

<body>

<div class="ramme">

<div class="head">
</div>

<div class="meny">
<ul>
	<li><a href="index.php?side=hovedside">Hovedside</a></li>
	 <li><a href="index.php?side=...">Link1</a></li>
	<li><a href="index.php?side=...">link2</a></li>
	<li><a href="index.php?side=...">link3</a></li>
	<li><a href="index.php?side=login">Innlogging</a></li>
</ul>
</div>

<div class="innehold">

 

Merkelige greier...

Endret av danweb.cjb.net
Lenke til kommentar

Skjønner ikke hvorfor siste delen av htmlkoden blir borte, men det løste seg når jeg bruker dette scriptet i starten på siden som man må være logget inn for å se.

 

<?php
session_start();
if(!$_SESSION['godkjent']){

include("login.php");
echo <<<END

</div>

 	<div class="bunn">
	Siden er skrevet av; &copy
		</div>	 
</div>

</body>
</html>

END;

exit();

}
?>

 

Den inkluderer login.php, og for å kompensere for at alt etter <div class="innehold"> er "borte" så printer den ut den resterende html-koden.

 

Vet det er helt høl i huet oppsett, men det fungerer i alle fall.. Både i FF, opera og IE..

Lenke til kommentar
<?php
session_start();
if(!$_SESSION['godkjent']){
header('location: index.php?side=login');
exit();
}
?>

 

For å være sikker på at header location fungerer gjør jeg slik:

 

header('location: http://www.abs_url.com/index.php?side=login',301,false);

 

Se denne artikkelen på PHP om dette

http://no.php.net/header

 

Vel, jeg har testet det, men det funker rett og slett ikke... :S

Aner ikke hvorfor. Men med metoden jeg brukte over så går det "smertefritt". Merkligste jeg har vært borti på leeeenge ...

Lenke til kommentar
Vel, jeg har testet det, men det funker rett og slett ikke... :S

Aner ikke hvorfor. Men med metoden jeg brukte over så går det "smertefritt". Merkligste jeg har vært borti på leeeenge ...

 

Kanskje ikke så merkelig etter å ha leste denne artikkelen, du er visst ikke den første som sliter med one.com

 

Advarsel One.com

 

Nei, er rimelig oppgitt. At en så enkel kodesnutt som en "header" gjør at siden "låser seg".

Men har nå fått det til å funke, og har igjen 10 mnd av den tiden jeg har betalt for, men skal huske å si opp i alle fall 50 dager før det har gått ett år ...

 

dem kjører også en eldre phpmyadmin: 2.9.2

 

skeptisk :hrm:

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