Fejlmeddelelse: header is already sent

Her kan du få hjælp og stille spørgsmål til PHP!
Besvar
karindams
Begynder
Indlæg:8
Tilmeldt:4. maj 2014, 14:10
Fejlmeddelelse: header is already sent

Indlæg af karindams » 4. maj 2014, 14:20

Hej

Jeg har et problem med en kontaktformular. Jeg har bemærket, at mange gange er løsningen, at man ikke må bruge 'print' eller 'echo' inden 'header', men det synes jeg heller ikke, at der er gjort i min kode, så jeg ved ikke hvordan jeg skal løse problemet.

Min kode er delt i 2 filer:
index.php og Kontakt.php

Filerne ser ud som følger:

index.php:

Kode: Vælg alt

<html>
    <head>
        <meta charset="UTF-8">
        <title>Velkommen til karindams.dk</title>
        <link rel="stylesheet" href="CSSstyle.css" type="text/css"/>
   
    
    </head>
    <body>
       
        
        <div id="wrapper">
            <?php
                include("Top.php");
                include("Navbar.php");
            ?>
            
            <div id="content">
                <?php
                    if(!isset($_GET['side']))
                    {
                        $_GET['side']='Forside.php';
                    }
                    else {
                        $_GET['side'].='';
                    }
                    include("cont/".$_GET['side']);
                    
                ?>
            </div>
                <?php
                    include ("Footer.php");
                ?>
        </div>
        
    </body>
</html>
Kontakt.php:

Kode: Vælg alt

<?php

if (isset($_POST['navn']))
{
    if( empty($_POST['navn']) ||  empty($_POST['email']) ||  empty($_POST['emne']) || empty($_POST['besked']) )
    {
        $error = true;
    }
    
 else {
        mail("karin@karindams.dk", $_POST['emne'], $_POST['besked'], "From: \"".$_POST['navn']."\" <".$_POST['email'].">\r\n");
        header("Location: index.php?side=Tak.php");
        exit;
    }
        
        
}

if(isset($error)): ?>
<p class="error">
    Alle felter skal udfyldes!
</p>
    <?php endif; ?>
    <table> 
        <tr>
            <td rowspan="2">
                <form method="post" action="">
                    <p>
                        <label for="navn">Navn:</label><br>
                        <input type="text" name="navn" id="navn" value="<?php echo (isset($_POST['navn'])) ? $_POST['navn'] : ''; ?>">
                    </p>

                    <p>
                        <label for="email">E-mail:</label><br>
                        <input type="text" name="email" id="email" value="<?php echo (isset($_POST['email'])) ? $_POST['email'] : ''; ?>">
                    </p>
			
                    <p>	 
                        <label for="emne">Emne:</label><br>
                        <input type="text" name="emne" id="emne" value="<?php echo (isset($_POST['emne'])) ? $_POST['emne'] : ''; ?>">
                    </p>

                    <p>
                        <label for="besked">Besked:</label><br>
                        <textarea name="besked" id="besked"cols="50" rows="13"><?php echo (isset($_POST['besked'])) ? $_POST['besked'] : ''; ?></textarea>
                    </p>

                    <p>
                        <input type="submit" name="send" value="Send">
                    </p>
                </form>
            </td>
            <td>
                <p>Hvis du har ris, ros, sp&oslashrgsm&aringl eller kommentarer til karindams.dk, s&aring er du velkommen til at bruge kontaktformularen.<br/><br/>
                    Jeg vil respondere p&aring din henvendelse s&aring hurtigt som muligt.
                </p>
            </td>
        </tr>
        <tr>
            <td>
                <img src="mail.jpg" alt="Billede af konvolut" />
            </td>
        </tr>
    </table>
    <br/>
		
    <p><b>OBS OBS OBS</b></p>
    <p class="plaintext">Du kan komme i kontakt med mig ved at bruge kontaktformularen. Der er dog fejl i forhold til videredirigering 
        n&aringr du trykker på 'Send', s&aring du kommer til en fejlside. Hvis du har konkrete l&oslashsningsforslag til dette, 
        s&aring benyt endelig kontaktformularen, s&aring fejlen kan blive rettet. <br/>
        På forhånd tak.</p>
Håber der er nogen, der kan hjælpe mig med at løse problemet.

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg:709
Tilmeldt:21. jun 2012, 23:40
Kontakt:

Re: Fejlmeddelelse: header is already sent

Indlæg af scootergrisen » 4. maj 2014, 23:19

Vi kan ikke se hvordan du bruger kontakt.php i din kode.

Du inkluder den formodentligt fra en anden fil som bruger echo/print før den inkluder kontakt.php.

karindams
Begynder
Indlæg:8
Tilmeldt:4. maj 2014, 14:10

Re: Fejlmeddelelse: header is already sent

Indlæg af karindams » 6. maj 2014, 16:47

Foruden de to tidligere viste filer, så har jeg også en fil, der hedder Tak.php

Kode: Vælg alt

<?php
  $taktekst="<p>Tak for beskeden.</p><br/><p>Jeg vil hurtigst muligt l&aeligse den, hvorefter du h&oslashrer fra mig.</p><br/><p>Med venlig hilsen<br/><br/><i>Karin</i></p>";
    print utf8_decode($taktekst);
?>
<br/><br/>
<p>
    <a href="index.php?side=Forside.php" class="links">Retur til forsiden</a>
</p>
Det underlige er, at det virker fint, når jeg prøver det af med XAMPP, men lige så snart jeg uploader det, så virker det ikke.

Brugeravatar
scootergrisen
Moderator
Moderator
Indlæg:709
Tilmeldt:21. jun 2012, 23:40
Kontakt:

Re: Fejlmeddelelse: header is already sent

Indlæg af scootergrisen » 6. maj 2014, 17:11

Find ud af hvor kontakt.php bliver inkluderet.

Brugeravatar
ThomasI
Grundlægger
Grundlægger
Indlæg:1528
Tilmeldt:28. dec 2010, 10:49

Re: Fejlmeddelelse: header is already sent

Indlæg af ThomasI » 7. maj 2014, 13:57

Fra php.net:
Remember that header() must be called before any actual output is sent, either by normal HTML tags, blank lines in a file, or from PHP. It is a very common error to read code with include, or require, functions, or another file access function, and have spaces or empty lines that are output before header() is called. The same problem exists when using a single PHP/HTML file.
Hvis du inkludere kontakt.php ind i index vilder naturaligvis være output inden header fra f.eks top.php.

og ja, jeg kan ikke se, hvor kontakt.php kommer ind i din index?

Hvis du inkluderer kontakt.php ind i din index og du har en header i kontakt.php, så tror jeg ikke det vil virke da header() ikke vil være "øverst" i din kode...

MrLundholm
Rutineret
Rutineret
Indlæg:50
Tilmeldt:20. sep 2013, 15:33
Kontakt:

Re: Fejlmeddelelse: header is already sent

Indlæg af MrLundholm » 7. maj 2014, 20:41

Det har intet med echo eller print før headeren, det er ingen fejl.
Men du forsøger, at bruge

Kode: Vælg alt

header('Location ...');
efter du har lavet din header i html (<head></head>)

Som Thomas kommer ind på, er du nød til at lave din header('Location: ...') inden du sender din header.

Besvar