Inlägg
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;
}
}
- Idag Året var 2003 – Innan SSD:n vandrade på jorden fanns Raptorn 17
- Idag Blocket inför BankID-verifiering för alla användare 33
- Idag Snabbkoll: Är du fortfarande sugen på smarta hemmet-prylar? 69
- Igår Malware slog ut 600 000 routrar – gick inte att återställa 12
- Igår Undersökning: Stabilt internet viktigare än barnomsorg 21
- AMD avtäcker Ryzen 9000 för stationära datorer – släpps i juli77
- Året var 2003 – Innan SSD:n vandrade på jorden fanns Raptorn17
- Portabel AC inför sommaren [Samlingstråd]5157
- Vga lyser röd, ingen bild0
- Minnestråd för Anders190 ❤️43
- CRT-reparatör i Stockholmsområdet.35
- Blocket inför BankID-verifiering för alla användare33
- Val av robotdammsugare92
- Tråden för 2-kanals stereo med högtalare664
- Vart köper jag kabel för fler SATA-anslutningar?5
- Säljes Pico 4 VR knappt använd
- Säljes Serato Roland DJ-808
- Säljes Samsung SSD870 EVO 2TB / 1TB 870 EVO Oöppnade
- Säljes Polk Audio Signature Elite ES50 + Signature Elite ES30
- Säljes HP Pavilion TG01 (inget grafikkort) - bud/priskoll
- Säljes Rensning, Mus, Stream deck, DDR5, headsett belysning.
- Säljes Geforce 3060 Ti
- Säljes Intel NUC i7 6770HQ Skull Canyon
- Säljes Philips 48" 48OLED907/12
- Köpes Grafikkort+ m.2 runt Göteborg med omnejd! Max 3000:-
Tester av chassi, grafikkort, processorer m.m.
- SweClockers Noobbyggarguide - Del 4: Aggressivt aggregat7
- Årets bästa soundbar – vi väljer favoriterna72
- Snabba upp din gamla dator med uppgradering66
- SweClockers Noobbyggarguide - Del 3: Den dramatiska moderkortsmonteringen12
- Snabbtest: Steam Deck överraskar som arbetsdator31
- Snabbtest: 3DMark Steel Nomad – visuellt avancerat, förvånansvärt lättdrivet79
- Grafikprestanda i Senua's Saga: Hellblade II – ett av de tyngsta PC-spelen någonsin187
- Grafikprestanda i Ghost of Tsushima – en välpolerad PC-version28
- SweClockers Noobbyggarguide Del 213
- Köpråd: 8 bästa komponenterna just nu67