Avatar billede supermoos Nybegynder
09. juli 2008 - 14:13 Der er 13 kommentarer

Cannot modify headers?

Hej
Jeg får denne fejl når jeg prøver at sende en kontaktscripts formular:
Warning: Cannot modify header information - headers already sent by (output started at /home/web6942/domains/bjkj.dk/public_html/kontaktside.php:6) in /home/web6942/domains/bjkj.dk/public_html/kontakt.php on line 120

Jeg har tjekket for ekstre whitespaces osv. i mine php filer, men kan ikke finde nogle.

Her er koden til kontakt.php scriptet:

<?php
ob_start();//Bruges til at forsinke Output
?>
<link href="style.css" rel="stylesheet" type="text/css">
<?php
$email_adresse = "info@bjkj.dk";             // Mail-adressen som mailen skal sendes til
$fejl_farve = "#ff0000";                    // Farven på fejl beskederne
$tjek_for_update = "nej";                    // Skal scriptet tjekke for updates? Resultatet vil stå i mailen
$hp = "www.bjkj.dk";                        // Jeres hjemmeside navn. Bruges i mailen.
$kage_indhold = "kontakt_script";            // Ændre denne hvis du bruger mere end et af dette script på din hjemmeside
$kage_tid = "5";                            // Antal minutter som den besøgende skal vente, inden han/hun kan sende igen
$afsender_navn = @$_POST[afsender_navn];
$afsender_email = @$_POST[afsender_email];
$emne = @$_POST[emne];
$besked = @$_POST[besked];
$adresse = @$_POST[adresse];
$postby = @$_POST[postby];
$telefon = @$_POST[telefon];
$op = @$_POST[op];
$formular = "
<form method=\"POST\" action=\"$_SERVER[PHP_SELF]\">
Navn:<br />
<input type=\"text\" name=\"afsender_navn\" value=\"$afsender_navn\" size=50><font color=red>*</font>
<br />E-Mail:<br />
<input type=\"text\" name=\"afsender_email\" value=\"$afsender_email\" size=50><font color=red>*</font>
<br />Adresse:<br />
<input type=\"text\" name=\"adresse\" value=\"$adresse\" size=50>
<br />Postnummer og by:<br />
<input type=\"text\" name=\"postby\" value=\"$postby\" size=50>
<br />Telefon:<br />
<input type=\"text\" name=\"telefon\" value=\"$telefon\" size=50><font color=red>*</font>
<br />Emne:<br />
<input type=\"text\" name=\"emne\" value=\"$emne\" size=50>
<br />Besked:<br />
<textarea name=\"besked\" cols=50 rows=5 wrap=virtual>$besked</textarea><font color=red>*</font>
<input type=\"hidden\" name=\"op\" value=\"ds\">
<br /><input type=\"submit\" name=\"submit\" value=\"Send E-Mail\">
</form>";
if ($op != "ds") {
      // De skal se formularen
  echo "$formular";
} else if ($op == "ds") {
    // Tjekker om der er skrevet en e-mail, hvis der ikke er skrevet nogen e-mail adresse skal scriptet tolke den som: Ingen@mail.skrevet
    if ($afsender_email == "") {
    $afsender_email = "Ingen@mail.skrevet";
    }
    // Tjekker om IP'en er tilladt
    include 'ban_kontakt.php';
    if (!ip_tjek()) {
    $IP_fejl = "<font color=$fejl_farve><b>Din IP er blevet banned, og du kan derfor ikke fortsætte.</b><br><br>\n </font>";
    $send = "nej";
    }
    // Tjekker om der er skrevet et navn.
      if ($afsender_navn == "") {
            $navn_fejl = "<font color=$fejl_farve>Skriv venligst dit navn!</font><br>";
            $send = "nej";
          }
    // Tjekker om der er skrevet en gyldig email-adresse.
        $krav_til_mail =
        "^([_a-z0-9-]+)(\.[_a-z0-9-]+)*@([a-z0-9-]+)(\.[a-z0-9-]+)*(\.[a-z]{2,4})$";
        $mail_krav_fejl = 'Invalid_Email_address';
        if (eregi($krav_til_mail, $afsender_email)){
        $mail_krav_fejl = 'Ja';
        }
        if ($mail_krav_fejl != 'Ja') {
        $email_fejl = "<font color=$fejl_farve>Skriv venligst en gyldig e-mail adresse!</font><br />";
            $send = "nej";
          }
    // Tjekker om der er skrevet et telefonnummer.
          if ($telefon == "") {
            $telefon_fejl = "<font color=$fejl_farve>Skriv venligst et telefonnummer!</font><br>";
            $send = "nej";
          }
    // Tjekker om der er skrevet en besked.
          if ($besked == "") {
            $besked_fejl = "<font color=$fejl_farve>Skriv venligst en besked!</font><br>";
            $send = "nej";
          }
    // Tjekker om scriptet skal kigge efter updates
        if ($tjek_for_update == "ja") {
        $update_resultat = 'Denne Version: <b>1.2</b><br> Nyeste Version: </a><script src="http://mooboo.dk/scripts/simpelt_kontakt_script/version.js" type="text/javascript"></script><noscript><a href="http://www.mooboo.dk/index.php?page=scripts"><b>nyeste</b></a></noscript>';
        }
    // Tjek om der er smidt en Cookie
    if (isset($_COOKIE[$kage_indhold])){
    $Cookie_fejl = "<font color=red>Du kan ikke sende en besked endnu! Vent $kage_tid minutter!<br>\n </font>";
    $send = "nej";
    }
          if (@$send != "nej") {
    // Hvis der ikke er nogen fejl, er vi klar til at sende.
            $cnavn = gethostbyaddr($_SERVER[REMOTE_ADDR]);
            $til = "$email_adresse";
            $adresse = "$adresse";
            $postby = "$postby";
            $telefon = "$telefon";
            $emne = "$emne";
            $mailtop = "Fra: $hp <$til> \n";
            $mailtop .= "Send svar Til: $afsender_email\n";
            $mailtop .= "$update_resultat\n";
            $indhold = "Beskeden er sendt fra $hp\n";
            $indhold .= "
           
-----------------------------------------------------------------------
AFSENDER INFO:
IP: $_SERVER[REMOTE_ADDR]
Computer Navn: $cnavn
Browser Type: $_SERVER[HTTP_USER_AGENT]
-----------------------------------------------------------------------
Fra: $afsender_navn ($afsender_email)\n
Emne: $emne\n
Adresse: $adresse\n
Postnummer og by: $postby\n
Telefon: $telefon\n
Besked: $besked\n";
mail($til, $emne, $indhold, $mailtop);
// Skriver til log.txt
    $log = fopen("log.txt","a");
    fwrite($log,date("d-m-Y H:i:s")." - $afsender_email - $_SERVER[REMOTE_ADDR]\n");
    fclose($log);
    // Smider en cookie på brugerens computer
    setcookie($kage_indhold, $kage_indhold, time()+$kage_tid*60);
    // Skriver en besked til brugeren, som har sendt mailen.
        echo "<p>Tak <b>$afsender_navn</b>! Vi vil kontakte dig hurtigst muligt. </p>";
        echo "<p>Du vil modtage svar på følgende e-mail addresse: <b>$afsender_email</b>";
    // Hvis der er fejl, skriver vi hvilke felter som skal udfyldes, eller som ikke er gyldige, og skriver formularen igen.
        } else if ($send == "nej") {
            echo "$IP_fejl";
            echo "$Cookie_fejl";
            echo "$navn_fejl";
            echo "$email_fejl";
            echo "$telefon_fejl";
            echo "$besked_fejl";
            echo "$formular";
            }
}
?>
Avatar billede dkfire Nybegynder
09. juli 2008 - 18:34 #1
Hvad er linje 120 ?? og hvordan ser kontaktside.php ud ???
Avatar billede wosgam Nybegynder
10. juli 2008 - 09:42 #2
mangler du ikke bare at sætte session_start() op øverst over alt andet et eller andet sted ???
Avatar billede supermoos Nybegynder
10. juli 2008 - 18:59 #3
Linje 120 er:    setcookie($kage_indhold, $kage_indhold, time()+$kage_tid*60);
Kontaktside.php er her: http://bjkj.dk/kontaktside.php

session_start() - er jeg ikke klar over? Kan du uddybe?
Avatar billede kjeldsted Novice
10. juli 2008 - 19:28 #4
session_start() skal skrives i toppen af koden før at man kan sætte/læse en session. Men det ser ikke ud til at du overhovedet bruger sessions og hvis ikke du bruger disse behøver du ikke kører session_start().
Avatar billede supermoos Nybegynder
10. juli 2008 - 20:57 #5
ja, det mente jeg nok. Nogen idé om hvad der så skaber fejlen?
Avatar billede kjeldsted Novice
10. juli 2008 - 21:11 #6
Hvis jeg lige må blande mig i en anden ting... Der hvor du tjekker om mailen er gyldig laver du en typisk fejl. Hvis man fx har en mail med adressen #@eksperten, må man så ikke benytte systemet?
Avatar billede kjeldsted Novice
10. juli 2008 - 21:25 #7
Ahh... Nu kan jeg se din fejl. Din ob_start() hjælper intet, der hvor den står. den skal flyttes til toppen. Og HELT op. Dvs. også før <body> og <head> og <doctype> og alle de andre. Så burde det virke ;-)
Avatar billede dkfire Nybegynder
10. juli 2008 - 21:36 #8
Du må ikke have skrevet noget ud på siden når du kalder kontakt.php.
Jeg vil godt se koden til kontaktside.php fordi det er der problemet ligger.
Avatar billede kjeldsted Novice
10. juli 2008 - 21:38 #9
Desuden så kan jeg ikke se hvor dit <!DOCTYPE, <html>,<body> start tags er... Du har da vel disse tags med?
Avatar billede supermoos Nybegynder
10. juli 2008 - 23:08 #10
Kjeldsted, ob_start() i toppen gjorde det :-)
Avatar billede kjeldsted Novice
10. juli 2008 - 23:28 #11
Tænkte jeg nok ;-)

Husk altid at ob_start(), session_start() kommer før alt andet. Det kan spare én for mange problemer
Avatar billede kjeldsted Novice
10. juli 2008 - 23:32 #12
Og tænk også lige over det jeg skal mht. mails ;-). Jeg kan da fortælle jeg selv plejer at bruge dette mønster når jeg tjekker mails: "/^([a-zA-Z0-9\.\-\_\#\!\$\%\&\'\*\+\/\=\?\^\{\}\|]+)@([a-zA-Z0-9\.\-\_]+)\.([a-zA-Z+]+)$/"

Kig evt. på http://www.eksperten.dk/spm/823252 for at se hvilke tegn der er gyldige og hvilke der ikke er.
Avatar billede kjeldsted Novice
11. maj 2011 - 11:28 #13
Kan vi lige få accepteret et svar så dette spørgsmål kan stå som værende løst?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester