Avatar billede kellesen Nybegynder
07. juni 2007 - 15:05 Der er 22 kommentarer og
1 løsning

header spørgsmål/problem

Hjælp søges. Følgende fejl fremkommer:
Warning: Cannot modify header information - headers already sent by (output started at /customers/a.dk/a.dk/httpd.www/news.php:6) in /customers/a.dk/a.dk/httpd.www/news.php on line 16
--------------------------------------------------------------
<?php
ob_start();
if($_POST['nyhedsbrev']) { // hvis man har trykket "submit"
    mysql_connect("localhost", "a", "a") or die(mysql_error());
    mysql_select_db("a"); // connection til databasen

    if($_POST['tilmelding'] && $_POST['email']) { // hvis man har udfyldt radio og email feltet.
        if ($_POST['tilmelding'] == "ja") {
            $tjek_email = mysql_query("SELECT * FROM nyhedsbrev WHERE email = '$_POST[email]'");
            $tael_email = mysql_num_rows($tjek_email);
            if ($tael_email == 1) { header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=findes");
            } else {
                mysql_query("INSERT INTO nyhedsbrev (email) VALUES ('$_POST[email]')");
                header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=ok");
            }
        }
        elseif($_POST['tilmelding'] == "nej") {
            mysql_query("DELETE FROM nyhedsbrev WHERE email = '$_POST[email]'");
            header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=slettet");
        }
    }
    else{header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=fejl");}
}

if($_GET['nyhedsbrev'] == "ok") {echo "<font color=\"#ff0000\">Du er nu tilmeldt nyhedsbrevet!</font><br>";}

if($_GET['nyhedsbrev'] == "findes") {echo "<font color=\"#ff0000\">Du findes allerede i vores nyhedsbrev!</font><br>";}

if($_GET['nyhedsbrev'] == "fejl") {echo "<font color=\"#ff0000\">Du skal huske at skrive en e-mail i feltet!</font><br>";}

if($_GET['nyhedsbrev'] == "slettet") {echo "<font color=\"#ff0000\">Du er nu fjernet fra nyhedsbrevet!</font><br>";}

ob_end_flush()
?>
Avatar billede 0xffff Nybegynder
07. juni 2007 - 15:13 #1
jeg tror dit problem er at du mangler en

exit;

header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=slettet");
Avatar billede 0xffff Nybegynder
07. juni 2007 - 15:13 #2
efter din header. Det manglede jeg lige at skrive.
Avatar billede erikjacobsen Ekspert
07. juni 2007 - 15:19 #3
Har du to linier før første viste linie med <?php  ?
Avatar billede kellesen Nybegynder
07. juni 2007 - 15:28 #4
hvor skal exit stå? :)
Avatar billede kellesen Nybegynder
07. juni 2007 - 15:29 #5
nej, ingen ekstra linier...
Avatar billede 0xffff Nybegynder
07. juni 2007 - 15:34 #6
efter hver linie med header.

eksempel.

mysql_query("INSERT INTO nyhedsbrev (email) VALUES ('$_POST[email]')");
header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=ok");
exit;
Avatar billede erikjacobsen Ekspert
07. juni 2007 - 15:35 #7
Der står ikke "header" på linie 16 i den kode du viser her.
Avatar billede kellesen Nybegynder
07. juni 2007 - 15:43 #8
nej, har ikke indsat head og body osv. her..
Avatar billede kellesen Nybegynder
07. juni 2007 - 15:43 #9
ser sådan ud nu og virker stadig ikke.. samme fejl 


if($_POST['tilmelding'] && $_POST['email']) { // hvis man har udfyldt radio og email feltet.
        if ($_POST['tilmelding'] == "ja") {
            $tjek_email = mysql_query("SELECT * FROM nyhedsbrev WHERE email = '$_POST[email]'");
            $tael_email = mysql_num_rows($tjek_email);
            if ($tael_email == 1) {
            header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=findes");exit;
            }
            else {
                mysql_query("INSERT INTO nyhedsbrev (email) VALUES ('$_POST[email]')");
                header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=ok");exit;
            }
        }
        elseif($_POST['tilmelding'] == "nej") {
            mysql_query("DELETE FROM nyhedsbrev WHERE email = '$_POST[email]'");
            header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=slettet");exit;
        }
    }
    else{header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=fejl");exit;}
}
Avatar billede dkfire Nybegynder
07. juni 2007 - 15:49 #10
Hvad er der på linie 6 i news.php ??
Avatar billede erikjacobsen Ekspert
07. juni 2007 - 15:50 #11
"nej, har ikke indsat head og body osv. her.."  - hvis du ikke viser den kode, der går galt, så regner du vel heller ikke med at få hjælp ... ;)
Avatar billede majbom Novice
07. juni 2007 - 15:56 #12
kan du ikke poste hele news.php?
Avatar billede kellesen Nybegynder
07. juni 2007 - 16:00 #13
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>news</title>
</head>
<body>
<?php
ob_start();
if($_POST['nyhedsbrev']) { // hvis man har trykket "submit"
    mysql_connect("localhost", "a", "a") or die(mysql_error());
    mysql_select_db("a"); // connection til databasen

    if($_POST['tilmelding'] && $_POST['email']) { // hvis man har udfyldt radio og email feltet.
        if ($_POST['tilmelding'] == "ja") {
            $tjek_email = mysql_query("SELECT * FROM nyhedsbrev WHERE email = '$_POST[email]'");
            $tael_email = mysql_num_rows($tjek_email);
            if ($tael_email == 1) {
            header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=findes");exit;
            }
            else {
                mysql_query("INSERT INTO nyhedsbrev (email) VALUES ('$_POST[email]')");
                header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=ok");exit;
            }
        }
        elseif($_POST['tilmelding'] == "nej") {
            mysql_query("DELETE FROM nyhedsbrev WHERE email = '$_POST[email]'");
            header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=slettet");exit;
        }
    }
    else{header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=fejl");exit;}
}

if($_GET['nyhedsbrev'] == "ok") {echo "<font color=\"#ff0000\">Du er nu tilmeldt nyhedsbrevet!</font><br>";}

if($_GET['nyhedsbrev'] == "findes") {echo "<font color=\"#ff0000\">Du findes allerede i vores nyhedsbrev!</font><br>";}

if($_GET['nyhedsbrev'] == "fejl") {echo "<font color=\"#ff0000\">Du skal huske at skrive en e-mail i feltet!</font><br>";}

if($_GET['nyhedsbrev'] == "slettet") {echo "<font color=\"#ff0000\">Du er nu fjernet fra nyhedsbrevet!</font><br>";}

ob_end_flush()
?>

<form action="<?php echo $_SERVER['PHP_SELF'];?>"method="post" style="margin: 0px; padding: 0px;">
    <b>Nyhedsbrev:</b><br>
    Tilmeld <input type="radio" name="tilmelding" value="ja" CHECKED>
    Frameld <input type="radio" name="tilmelding" value="nej">
    <input type="text" name="email" maxlength="50" value="&nbsp;" style="height: 16px; border: 1px Solid Black; font-family: Verdana; font-size: 10px;"> <input type="submit" name="nyhedsbrev" value="OK" style="border-bottom: 1px Solid Black; border-right: 1px Solid Black; font-family: Verdana; font-size: 10px; width: 30px; height: 16px;">
</form>
</body>
</html>
Avatar billede 0xffff Nybegynder
07. juni 2007 - 16:01 #14
der er problemet

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>news</title>
</head>
<body>
-------------------------
<?php
ob_start();

alt før den linie sender headers.
Avatar billede 0xffff Nybegynder
07. juni 2007 - 16:03 #15
for at klarificere. Alt som kommer ud i en html side til en bruger vil sende en header.

Og hvis du højreklikker og siger vis kode vil du på din html side kunne se de linier som er beskrevet i sidste post.

En header SKAL komme før alt output.
Avatar billede kellesen Nybegynder
07. juni 2007 - 16:13 #16
er ikke med. en gang til :)
Avatar billede 0xffff Nybegynder
07. juni 2007 - 16:21 #17
<?php
if($_POST['nyhedsbrev']) { // hvis man har trykket "submit"
    mysql_connect("localhost", "a", "a") or die(mysql_error());
    mysql_select_db("a"); // connection til databasen

    if($_POST['tilmelding'] && $_POST['email']) { // hvis man har udfyldt radio og email feltet.
        if ($_POST['tilmelding'] == "ja") {
            $tjek_email = mysql_query("SELECT * FROM nyhedsbrev WHERE email = '$_POST[email]'");
            $tael_email = mysql_num_rows($tjek_email);
            if ($tael_email == 1) {
            header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=findes");exit;
            }
            else {
                mysql_query("INSERT INTO nyhedsbrev (email) VALUES ('$_POST[email]')");
                header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=ok");exit;
            }
        }
        elseif($_POST['tilmelding'] == "nej") {
            mysql_query("DELETE FROM nyhedsbrev WHERE email = '$_POST[email]'");
            header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=slettet");exit;
        }
    }
    else{header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=fejl");exit;}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>news</title>
</head>
<body>

<?php
if($_GET['nyhedsbrev'] == "ok") {echo "<font color=\"#ff0000\">Du er nu tilmeldt nyhedsbrevet!</font><br>";}

if($_GET['nyhedsbrev'] == "findes") {echo "<font color=\"#ff0000\">Du findes allerede i vores nyhedsbrev!</font><br>";}

if($_GET['nyhedsbrev'] == "fejl") {echo "<font color=\"#ff0000\">Du skal huske at skrive en e-mail i feltet!</font><br>";}

if($_GET['nyhedsbrev'] == "slettet") {echo "<font color=\"#ff0000\">Du er nu fjernet fra nyhedsbrevet!</font><br>";}

?>

<form action="<?php echo $_SERVER['PHP_SELF'];?>"method="post" style="margin: 0px; padding: 0px;">
    <b>Nyhedsbrev:</b><br>
    Tilmeld <input type="radio" name="tilmelding" value="ja" CHECKED>
    Frameld <input type="radio" name="tilmelding" value="nej">
    <input type="text" name="email" maxlength="50" value="&nbsp;" style="height: 16px; border: 1px Solid Black; font-family: Verdana; font-size: 10px;"> <input type="submit" name="nyhedsbrev" value="OK" style="border-bottom: 1px Solid Black; border-right: 1px Solid Black; font-family: Verdana; font-size: 10px; width: 30px; height: 16px;">
</form>
</body>
</html>
Avatar billede 0xffff Nybegynder
07. juni 2007 - 16:23 #18
Så vil det sandsynligvis virke.

En headerinformation vil blive sendt ud, ligeså snart at du outputter noget til en html fil. Generelt er det du outputter det som du kan se hvis du højreclicker på en side og siger vis kode.

I dette specifikke tilfælde så vil headers blive sendt ud ligeså snart at du laver denne linie:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
.
.
.
Og efterfølgende hele vejen ned til din:

header ("Location: ". $_SERVER['PHP_SELF']. "?nyhedsbrev=slettet");

Dine location statements skal komme før noget som helst bliver outputted til html.

Håber den forklaring var lidt lettere at forstå.
Avatar billede erikjacobsen Ekspert
07. juni 2007 - 18:55 #19
Nu er det så mere for at drille dig - det er dig der spilder din egen tid.

"Kommentar: erikjacobsen 07/06-2007 15:19:23    Har du to linier før første viste linie med <?php  ?"

"Kommentar: kellesen 07/06-2007 15:29:18    nej, ingen ekstra linier..."

"Kommentar: kellesen 07/06-2007 16:00:06"  6-7 linier HTML før.

Jeg synes det er sjovt, men det gør det ikke hurtigere at få løst problemet ;)
Avatar billede dkfire Nybegynder
07. juni 2007 - 23:50 #20
Hvis du skriver noget html, selv om det står før php-kode, vil det blive sendt til browseren med det samme.
Når du bruger header() og session_start() må du ikke har skrevet noget som helst html før du kalder de funktioner. INTET html før!
Avatar billede majbom Novice
08. juni 2007 - 08:19 #21
hehe, ja så var der jo html før <?php som vi havde gættet :)

0xffff's eksempel burde virke...
Avatar billede kellesen Nybegynder
08. juni 2007 - 14:06 #22
upsi - blanko her.. tænkte ikke det var html *gg*
smid et svar så får du point ikke og jeg får dummebank..
Avatar billede kellesen Nybegynder
29. juli 2007 - 13:15 #23
..
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