PHP Headers

Status
Niet open voor verdere reacties.

A4papiertje

Gebruiker
Lid geworden
24 nov 2015
Berichten
20
Goedenavond,

Ik ben bezig met het bouwen van een website in PHP. Ik maak veel gebruik van include voor headers, footers, nav en scripts zodat mijn pagina code niet zo groot wordt en ik niet elke keer alle pagina's langs moet lopen om wijzigingen aan te brengen.

Nu heb ik een bestand waar ik de volgende includes heb:

PHP:
<?php
include "header.php";
include "side_nav_menu.php";
include "top_nav_menu.php"

In mijn header.php heb ik de volgende code.

PHP:
<?php
if (session_status() == PHP_SESSION_NONE) {
    session_start();
}

?>

<html lang="en">
<head>
    <meta charset="utf-8" />
    <link rel="icon" type="image/png" href="assets/img/favicon.ico">
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />

    <title>Light Bootstrap Dashboard by Creative Tim</title>

    <meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
    <meta name="viewport" content="width=device-width" />


    <!-- Bootstrap core CSS     -->
    <link href="assets/css/bootstrap.min.css" rel="stylesheet" />

    <!-- Animation library for notifications   -->
    <link href="assets/css/animate.min.css" rel="stylesheet"/>

    <!--  Light Bootstrap Table core CSS    -->
    <link href="assets/css/light-bootstrap-dashboard.css" rel="stylesheet"/>


    <!--  CSS for Demo Purpose, don't include it in your project     -->
    <link href="assets/css/demo.css" rel="stylesheet" />


    <!--     Fonts and icons     -->
    <link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.2.0/css/font-awesome.min.css" rel="stylesheet">
    <link href='http://fonts.googleapis.com/css?family=Roboto:400,700,300' rel='stylesheet' type='text/css'>
    <link href="assets/css/pe-icon-7-stroke.css" rel="stylesheet" />
</head>

Nu heb ik verderop in deze pagina een functie aangeroepen. Een onderdeel van deze functie is dat hij mij redirect.

Als iets is toegevoegd wil ik de pagina refreshen zodat de nieuwe input meteen wordt weergegeven. Daarvoor gebruik ik de volgende code:
PHP:
header("Refresh:0; url=groepen.php");

echter krijg ik de volgende melding:
Code:
Warning: Cannot modify header information - headers already sent by (output started at ...) in ...

Nu heb ik al gezocht op Google hoe dit komt, maar ik kom er niet achter hoe ik dit op moet lossen.

Heeft iemand van jullie misschien een tip voor mij?


Alvast bedankt!
 
refreshen op een bestaande pagina kan alleen met AJAX. Naar een andere pagina kan met javascript.

Headers mogen maar 1 keer en alleen als allereerste worden verstuurd.
 
Je pagina heeft al een <head> sectie. Dus je mag er niet nog aanmaken. Daar gaat het dus mis.
 
In dit geval heeft het niet zoveel met de daadwerkelijke <HEAD> te maken.
Zodra je met PHP een header() uitvoert, moet dat zijn vóór alle andere html output.
Zelfs een spatie voor de header() zal deze foutmelding al geven.

GOED:
PHP:
<?php
header("Location:http://www.google.nl");
echo "dit mag";
?>

FOUT:
PHP:
<?php
echo "dit mag niet";
header("Location:http://www.google.nl");
?>

OOK FOUT:
PHP:
hier mag ook niks
<?php
header("Location:http://www.google.nl");
?>

Ook voor de PHP open tag mag er niks staan.
Als je hier niet omheen kunt, gebruik dan een alternatieve redirect methode.
Bijvoorbeeld een meta refresh, die mag je overal zetten.
 
Laatst bewerkt:
Eigenlijk kan je er altijd wel omheen. je moet gewoon ervoor zorgen dat de voorwaarde die de header() oproept, als eerste uitgevoerd wordt.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan