Inlägg

Inlägg som Rocketbeach har skrivit i forumet
Av Rocketbeach

Tack för bra input alla. Kör en debug på nytt och justerar om koden. Får se om det kommer att funka bättre.

Av Rocketbeach

header('location:..); att skriva ut före html -

Hej! Har en fråga gällande min kod nedan för en login sida. Jag får följande felmeddelande:

Warning: Cannot modify header information - headers already sent by (output started at /Applications/MAMP/htdocs/Curie/webroot/nobel_login.php:1) in /Applications/MAMP/htdocs/Curie/src/CUser/CUser.php on line 33

Jag har sett många inlägg här och på andra ställen vad man bör tänka på när man får detta felmeddelande. Jag vet att header('location:'); skall föregå innan html skrivs ut. Inga Witespaces osv. Har försökt ändra och flytta om, men får inte till koden nedan. Kan ni som är proffs se vad som är fel?

<?php /** * A class for handeling login * */ class CUser extends CDatabase { /** * Members * */ private $database; /** * Initiate child and parent constructor * */ public function __construct($database) { parent::__construct($database); } /** * Check if user and password is okey and reload page * */ private function Login() { if(isset($_POST['login'])) { $sql = "SELECT acronym, name FROM USER WHERE acronym = ? AND password = md5(concat(?, salt))"; $params = array(strip_tags($_POST['acronym']), strip_tags($_POST['password'])); $res = $this->ExecuteSelectQueryAndFetchAll($sql, $params); if(isset($res[0])) { $_SESSION['user'] = $res[0]; } // Den ska skrivas ut innan html skrivs ut. header('Location: nobel_login.php'); } // Logga ut användare / Logout the user if(isset($_POST['logout'])) { unset($_SESSION['user']); header('Location: nobel_login.php'); } } /** * Verify if user is logged in or not and return message * */ private function IsAuthenticated($acronym) { if($acronym) { $acronym = $_SESSION['user']->acronym; $name = $_SESSION['user']->name; $output = "Du är inloggad som: {$acronym} ({$name})"; } else { $output = "Du är för närvarande inte inloggad."; } return $output; } /** * Create login form * */ private function LoginForm($acronym) { $form = "<form method='post'><fieldset><legend><br></legend>"; $form .= "<p><em>Du kan logga in med vinga:vinga eller pippi:pippi</em></p>"; $form .= "<p><label>Användare:</label><br><input type='text' name='acronym' value='pippi'></p>"; $form .= "<p><label>Lösenord:</label><br><input type='password' name='password' value='pippi'></p>"; $form .= "<p><input type='submit' name='login' value='Login'> "; $form .= "<input type='submit' name='logout' value='Logout'></p>"; $form .= "<p><b>{$this->IsAuthenticated($acronym)}</b></p>"; $form .= "</fieldset></form>"; return $form; } /** * Sum it all up and create HTML output * */ public function UserLogin() { // Get parameters $acronym = isset($_SESSION['user']) ? true : false; // Create HTML output based on parameters $html = $this->Login(); $html .= $this->LoginForm($acronym); return $html; } }