Gå til innhold

"Session" forsvinner fra meg [nytt spm.]


Anbefalte innlegg

Skrevet (endret)

Hei.

 

Jeg har et problem med sessions. Jeg har laget et loginscript, som fungerer helt fint når jeg kjører det hos start.no, men når jeg kjører det på mitt webhotell (som er hos one.com), så blir sessionen "glemt" når jeg går til neste side. Er det noen som vet hva som forårsaker dette?

 

Her er eksempler på scriptene. Du logger på i høyre meny med brukernavn og passord "test". Når du har gjort det, så prøv å klikk på kontakt eller på hjem, da vil du se at på obrestad.org, så forsvinner session-variablene, og du er logget ut. Det gjør dem ikke på start.no sine serverer. Er det noen som har peiling på hvorfor dette sjer, og hvordan jeg kan unngå dette?

 

Start.no

ww2.obrestad.org

 

PS! diskusjonen starter på post 22

Endret av obrestad
Videoannonse
Annonse
Skrevet
Problemet mitt er bare det at det virker som om $_SESSION variablene blir husket når jeg går til en ny side. Er det noen kjente feil som gjør dette?

Hva mener du egentlig her? Kan nesten se ut som du mangler ikke.

Dersom det er tilfellet, sjekk at du kaller session_start() i toppen av scriptet. (Ser ikke ut som du gjør det her)

Skrevet
Husk også at session_start(); må være det aller første i scriptet

 

<?php session_start(); ?> er en fin løsning.

Det er en sannhet med modifikasjoner.

 

session_start() må kalles FØR du begynner å jobbe med sessions (naturlig nok), og FØR det gjøres noe output til browseren. (Noe som ofte skjer i slutten av scriptet når man bruker output buffering)

Skrevet (endret)

Scriptet er lagt til i index.php med include(), og derfor er session_start() i index.php...

 

Noen andre forslag på hva som kan være feil?

Endret av obrestad
Skrevet

Den gir:

 

array(0) {
}

 

før jeg logger på, og etter at jeg har prøvd å gå til en ny side, og den gir

 

array(2) {
 ["bruker"]=>
 string(4) "test"
 ["id"]=>
 string(1) "1"
}

 

Rett etter at jeg har logget på.

Skrevet

Da blir i hvertfall session-variablene "husket" mellom sidene - så da er problemet ditt et annet sted. :)

 

Kan du utdype mer hva konkret problemet er? (feilmeldinger og kildekode f.eks)

Skrevet (endret)

Du kan se på hjemmesiden min hvordan det virker i praksis. Bare logg deg på med test som brukernavn og passord, og se at du er innlogget (sjekk session variablene til høyre), klikk så på kontakt, og du er logget av igjen. Hvordan kan jeg "holde" brukeren pålogget?

 

Her er selve loginscriptet slik det ser ut nå:

<h3>Logg deg på:</h3>
 <?php
 if (isset($_SESSION['bruker']))
   echo '<p>Du er nå logget på, <a href="index.php?side=logut">Logg av</a></p>';
 else
 {
  $bruker = "test"; 
  $passord = "test";
  if (isset($_REQUEST['bruker'])) 
  {
   if ($bruker == $_REQUEST['bruker'] && $passord == $_REQUEST['passord'])
   {
	$_SESSION['bruker']= 'test';
	$_SESSION['id']= '1';
   }
   else
	echo 'Feil brukernavn eller passord';
  }
  else
  {
   echo "
   <form method='post' action='index.php?side=hjem'>
   Brukernavn:<br> 
	<input name='bruker' type='text'><br>
   Passord:<br>
	<input name='passord' type='password'><br>
	<input type='submit' value='Logg deg på'>
   </form>";
  }
  }
  ?>

Endret av obrestad
Skrevet (endret)

Ja.

 

index.php:

<?php
session_start();
error_reporting(E_ALL);
ini_set("display_errors", true);
?>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="default.css">
<title>Obrestad.org</title>
</head>
<body>
<div id="outer">
 <div id="outer2">
  <div id="header">
<h1>Obrestad.org</h1>
<h2></h2>
  </div>
  <div id="menu">
<?php include('meny.php') ?>
  </div>
  <div id="content">
<div id="column1">
 <?php include('include.php') ?>
</div>
<div id="column2">
 <?php include('login.php'); ?>
 <?php include('side.php'); ?>
</div>
  </div>
  <div id="footer">
<p>Copyright © 2007 Obrestad.org.</p>
  </div>
 </div>
</div>
</body>
</html>

Endret av obrestad
Skrevet

Prøv å kommenter ut alle includes untatt den for login.php - ønsker å se om det er noen av de andre php-filene som kanskje "ødelegger" sessionen din...

Skrevet (endret)

Hva mener du nå?

 

EDIT:

 

Her kan du se includsa:

 

meny.php

<ul>
 <li><a href="index.php?side=hjem">Hjem</a></li>
 <li><a href="index.php?side=kontakt">Kontakt</a></li>
</ul>

 

include.php

<?php
switch ($_GET['side'])
{
case 'hjem':
 include('sider/index.php');
 break;
case 'kontakt':
 include('sider/kontakt.php');
 break;
case 'logut':
 session_destroy();
 break;
default:
 include('sider/index.php');
}
?>

 

side.php

<br>
<h3>var_dump($_SESSION);</h3>
<pre>
 <?php var_dump($_SESSION); ?>
</pre>

Endret av obrestad
Skrevet

Ny index.php:

<?php
session_start();
error_reporting(E_ALL);
ini_set("display_errors", true);
?>

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<link rel="stylesheet" type="text/css" href="default.css">
<title>Obrestad.org</title>
</head>
<body>
<div id="outer">
 <div id="outer2">
  <div id="header">
<h1>Obrestad.org</h1>
<h2>Av Eigil Obrestad</h2>
  </div>
  <div id="menu">
<?php //include('meny.php') ?>
  </div>
  <div id="content">
<div id="column1">
 <?php //include('include.php') ?>
</div>
<div id="column2">
 <?php include('login.php'); ?>
 <?php //include('side.php'); ?>
</div>
  </div>
  <div id="footer">
<p>Copyright © 2007 Obrestad.org.</p>
  </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å
×
×
  • Opprett ny...