<?php session_start(); INCLUDE("../includes/db_vari.php"); $conn = MYSQL_CONNECT($host,$user,$password) OR DIE($c_error); MYSQL_SELECT_DB($database) OR DIE($s_error);
IF(!isset($_POST['Submit'])) { //Tester om brugeren kom fra login.php header("Location:login.php"); } ELSE{ $postbruger = $_POST['Brugernavn']; $postpass = $_POST['Password']; //For læservenligheden overføres post variablerne til normale variabler
$resultat = MYSQL_QUERY("SELECT brugerID FROM `brugere` WHERE brugerNavn = '$postbruger' AND brugerPass = '$postpass'");//Spørger efter ID
$number = mysql_num_rows($resultat);//Tæller antaller af resultater IF($number == 1) { //Hvis der kun er et resultat, bliver brugeren logget in $_SESSION['loget_in'] = 1; $_SESSION['brugerNavn'] = $postbruger; $_SESSION['brugerPass'] = $postpass; //Sætter session variablerne header("Location:index.php");
session_start(); if(!$_SESSION['loget_in'] == 1) {//Hvis brugeren ikke er logget in header("Location:login.php");//Sender brugeren videre exit;//Sørger for at resten af koden, ikke bliver udført }
So far, so good.
Problemet er, at følgende log-ud ikke virker. På index.php er denne stump: ECHO "<TR><TD><A HREF=\"logud.php?logaf=logaf\">Log ud</A></TD></TR>\n";
logud.php ser sådan ud: <?PHP // Logger ud og sender videre IF(isset($_GET['logaf'])){ unset($_SESSION['loget_in']); unset($_SESSION['postbruger']); unset($_SESSION['postpass']); header("Location:login.php"); exit; } ?>
Men tilsyneladende dræbes sessionen ikke, for jeg kan efterfølgende gå ind på index.php uden at blive sendt til login.php (medmindre jeg først lukker browseren), hvilket jo netop ikke burde kunne lade sig gøre...
På forhånd tak PS. Det er stærkt inspireret af en glimrende artikel på udvikleren.dk
Jeg ændrede til pr1nsen's forslag, men får denne fejl:
Warning: Trying to destroy uninitialized session in d:\foxserv\www\yyy\intranet\logud.php on line 4
Warning: Cannot add header information - headers already sent by (output started at d:\foxserv\www\yyy\intranet\logud.php:4) in d:\foxserv\www\yyy\intranet\logud.php on line 5
Fedest. Ved at ændre scriptet til dette, så virker det: <?PHP session_start(); // Logger ud og sender videre IF(isset($_GET['logaf'])){ session_destroy(); header("Location:login.php"); exit; } ?>
Men er det muligt kun at dræbe dennne session, og ikke alle?
Ja, det burde unset($_SESSION['variabel']) som du havde i starten gøre. Prøv at smide session_start() i dén og se, om det så ikke klarer jobbet for dig.
session_start(); // Logger ud og sender videre IF(isset($_GET['logaf'])){ unset($_SESSION['loget_in']); unset($_SESSION['postbruger']); unset($_SESSION['postpass']); header("Location:login.php"); exit; }
Nu virker det perfekt. Det krævede dog også, at jeg rettede en "fejl" i php.ini. Jeg bruger php version 4.1.1. Af uforståelige grunde var register_globals = On, men burde sandelig være Off :-o
session_start(); // Logger ud og sender videre IF(isset($_GET['logaf'])){ unset($_SESSION['loget_in']); unset($_SESSION['brugerNavn']); unset($_SESSION['brugerPass']); header("Location:login.php"); exit; }
Jeg vil gerne give både jaw og pr1nsen point, så smid et par svar :-)
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.