Avatar billede dingkee Nybegynder
04. marts 2005 - 13:21 Der er 17 kommentarer og
1 løsning

Tjek for Session

Hej alle...

Jeg har lavet et login på min side, og nu vil jeg gerne have, at når man kommer ind på siden loggetind.php så tjekker den om session er tom og hvis den er det bliver man sendt tilbage til index.php...

Har prøvet at lave dette, men virker ikke:
<?php
if ( $_SESSION['username'] == "" ){
        redirect("Location: index.php");
        }
?>

Hvad gør jeg galt?
Avatar billede di8leva Nybegynder
04. marts 2005 - 13:29 #1
husker du
--------------
session_start();
--------------
først på alle dine sider der kigger på sessions?
Avatar billede dingkee Nybegynder
04. marts 2005 - 13:40 #2
Hvis jeg putter session_start() øverst på siden, får jeg denne fejl:

Warning: Cannot modify header information - headers already sent by (output started at /header.php:22) in /loggetind.php on line 7
Avatar billede dingkee Nybegynder
04. marts 2005 - 13:40 #3
linie 7 i loggetind er:

        header("Location: index.php");
Avatar billede di8leva Nybegynder
04. marts 2005 - 14:10 #4
Det skal vare FØR du sender noget til klienten, så det skal vare FØR "header("Location: index.php");"

Det her tutorial syns jeg er rigtigt go
http://www.phpfreaks.com/tutorials/41/0.php
Avatar billede kourinsu Nybegynder
04. marts 2005 - 14:10 #5
Må vi se de første 22 linier?
Avatar billede dingkee Nybegynder
04. marts 2005 - 14:34 #6
her er de første 22 linier:

<? include("connect.php"); ?>
<?PHP
    session_start();
$u = $_GET['u'];

$sql = "SELECT * FROM `kategori` WHERE id = '" . $kat . "'";
$result = mysql_query($sql) or die (mysql_error());
$r = mysql_fetch_array($result);
$navn = $r["navn"];

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html>
<head>
    <title>Creative Systems</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<meta http-equiv="content-Type" content="text/html; charset=iso-8859-1" />
</head>

<body background="images/bg2.gif">
    <table align="center" cellpadding="0" cellspacing="0" border="0" style="width:750px">
Avatar billede kourinsu Nybegynder
04. marts 2005 - 14:41 #7
Du skal have session_start() helt i toppen...ved ikke om fejlen kun skyldes det, men prøv... :)
Avatar billede dingkee Nybegynder
04. marts 2005 - 14:50 #8
Jeg har prøvet, at lægge det hele ind i connect.php før at jeg connecter til databasen ( Så kan det ikke komme før på min side)

Og det virker fint nok... Nu skal jeg bare have fortalt scriptet, at den kun skal tjekke session og vidre sende en, hvis man er på siden loggetind.php...

Hvordan tilføjer jeg det??

Har prøvet med:
<?php
if ( $_SESSION['username'] == "" && $PHP_SELF == "loggetind.php" ){
        header("Location: index.php");
        }
?>

Men det virker ikke
Avatar billede kourinsu Nybegynder
04. marts 2005 - 14:56 #9
$PHP_SELF indeholder hele stien fra roden...

Jeg syntes for nemhedens skyld, at du bare skal gøre sådan:

<?PHP
session_start();
$u = $_GET['u'];
?>
<? include("connect.php"); ?>

$sql = "SELECT * FROM `kategori` WHERE id = '" . $kat . "'";
$result = mysql_query($sql) or die (mysql_error());
$r = mysql_fetch_array($result);
$navn = $r["navn"];

?>
Avatar billede kourinsu Nybegynder
04. marts 2005 - 15:00 #10
Sådan helt præcis:

<?PHP
session_start();

if ( $_SESSION['username'] == ""){
        header("Location: index.php");
        }

$u = $_GET['u'];

include("connect.php");

$sql = "SELECT * FROM `kategori` WHERE id = '" . $kat . "'";
$result = mysql_query($sql) or die (mysql_error());
$r = mysql_fetch_array($result);
$navn = $r["navn"];

?>
Avatar billede dingkee Nybegynder
04. marts 2005 - 15:00 #11
Hvordan vil du så tjekke om brugeren er logget ind...

Hvis han ikke er det må han jo ikke se sidden:
loggetind.php

og skal sendes tilbage til index.php
Avatar billede kourinsu Nybegynder
04. marts 2005 - 15:03 #12
Det sker gennem

if ( $_SESSION['username'] == ""){
        header("Location: index.php");
        }

Hvis username er tom, sendes brugeren til index.php
Avatar billede dingkee Nybegynder
04. marts 2005 - 15:06 #13
Okay, så fik jeg det til at virke :)

kourinsu >> Hvis du ligger et svar er der points på vej :)
Avatar billede kourinsu Nybegynder
04. marts 2005 - 15:09 #14
Det kan du tro :)
Avatar billede dingkee Nybegynder
04. marts 2005 - 15:13 #15
Takker mange gange for hjælpen :)
Avatar billede kourinsu Nybegynder
04. marts 2005 - 15:18 #16
No problem :) Du kan forresten også bruge

if(!isset($_POST['username'])) {
header("Location: index.php");
}

istedet. I nogen versioner af php, vil du få en fejl, hvis du prøver at gennemgå indholdet af en variabel, der ikke er sat (hvilket jo er tilfældet, hvis brugeren ikke er logget ind). Istedet kontrollere denne om variablen er sat, istedet for om den indeholder noget.
Avatar billede kourinsu Nybegynder
04. marts 2005 - 15:22 #17
Det skal selvfølgelig være $_SESSION og ikke $_POST :)
Avatar billede haren Nybegynder
04. marts 2005 - 16:08 #18
Faktisk smartere med (synes jeg)

if(!empty($_SESSION['username'])) {
header("Location: index.php");
}
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester