PHP, problem med session/header.

Permalänk
Medlem

PHP, problem med session/header.

Jag vill med hjälp av header() omdirigera inloggade användare från "index.php" till "index.php?loggad=yes". Den senare gör helt enkel så att användaren ser meddelandet: You are currently logged in as ________" följt av en länk för att logga ut i stället för att se det typiska inloggningsformuläret. Problemet är att när jag inkluderar följande kod i toppen av "index.php"-filen visas inte sidan i browsern, utan jag möts endast av en blank sida.

<?php session_start(); $redirect = FALSE; function loggedin() { if (isset($_SESSION['username'])) { $redirect = TRUE; return $redirect; } } $inloggad = "index.php?loggad=yes"; $currentpage = $_SERVER['REQUEST_URI']; if ($currentpage==$inloggad) { die(); } else if($currentpage!=$inloggad) { if ($redirect==TRUE) { header("Location: ".$inloggad); exit(); } else { die(); } } else { die(); }

Någon aning om vad detta kan bero på?

Permalänk
Medlem

Är det inte så att $_SERVER['REQUEST_URI'] ger hela sökvägen, inkl mappar och / i början?

Jag har för mig det, och då fungerar kanske nåt liknande det här bättre:

$inloggad = "/index.php?loggad=yes";

Permalänk
Medlem

Istället så gör du som så att när du loggar in sätter du $_SESSION['inloggad'] = 1;

och sen kör

if($_SESSION['inloggad'] == 1) { echo 'You are currently logged in as ', $namn; }

Visa signatur
Permalänk
Medlem

Det har du aldeles rätt i!
koden är nu ändrad till detta:

$home = '/control/index.php'; $inloggad = '/control/index.php?loggad=yes'; $currentpage = $_SERVER['REQUEST_URI']; if($currentpage==$inloggad) { exit(); } else if($currentpage!=$inloggad) { if($redirect==TRUE) { header('Location: '.$inloggad); exit(); } else { exit(); } else { exit(); }

Det funkar dock fortf inte då index är en blank sida i browsern.

Permalänk
Medlem

Varför använder du exit() så mycket? Det avbryter scriptet och då blir det en ju tom sida om du har exit() före allt som visas.

Dessutom tycker jag du ska försöka göra som Softnux föreslog.

Permalänk
Medlem
Skrivet av Yoji:

Varför använder du exit() så mycket? Det avbryter scriptet och då blir det en ju tom sida om du har exit() före allt som visas.

Dessutom tycker jag du ska försöka göra som Softnux föreslog.

Är väldigt ny till php, efter att ha läst på lite i två dagar började jag med loginsystem etc, måste ha missuppfattat exit(); trodde att html koden efteråt skulle visas ändå. :/

Permalänk
Medlem

Alla är vi ju nybörjare nån gång, ett tips är att använda dig av manualen som finns på php.net om det är några funktioner du funderar över. Det finns oftast bra beskrivningar och exempel där.

http://php.net/manual/en/function.exit.php

Permalänk
Medlem

Tackar för länken! Blir en del att läsa då.

Permalänk
Medlem

Problem löst:

<?php if(isset($_SESSION['username'])) { echo "You are currently logged in as ".$_SESSION['username']."! <a href='logout.php'>Logout!</a>"; } else { echo "<form action='login.php' method='POST'> Username: <input type='text' name='username'> Password: <input type='password' name='password'> <input type='submit' value='log in'> </form> <p>Don't have an account? <a href='index.php?sida=register'>Register now!</a></p>"; } ?>

När inloggning sker:

$_SESSION['username']=$username;