Avatar billede sebster Nybegynder
03. december 2004 - 13:39 Der er 32 kommentarer og
1 løsning

Få en forklaring poå headers

Hej Eksperter,
Er der ikke en der kan give mig en forklaring på headers. det jeg gerne vil vide er hvordan jeg løser en fejl der hedder:

Warning: Cannot modify header information - headers already sent by

Hvad skyldes det og hvordan kan det rettes således at jeg kan benytte headers.

jeg er sku helt på vildspor!!!
Avatar billede schaefner Juniormester
03. december 2004 - 13:41 #1
Du må ikke udskrive noget før din header("");

http://php.net/header
Avatar billede schaefner Juniormester
03. december 2004 - 13:42 #2
Som de skriver:

"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."

<html>
<?php
/* This will give an error. Note the output
* above, which is before the header() call */
header('Location: http://www.example.com/');
?>
Avatar billede sebster Nybegynder
03. december 2004 - 13:45 #3
Vi det  give en fejl pga at der står <html>???

Det vil sige det er på den siden hvor der står header('location:side.htm') at der ikke må anføres noget inden???
Avatar billede sebster Nybegynder
03. december 2004 - 13:47 #4
Det skyldes så måske mine include filer med variabler??? På startsiden? Hvad hvis der kun er definerest variabler eller funktioner giver det også ged i den???
Avatar billede overchord Nybegynder
03. december 2004 - 13:48 #5
du kan have php-kode foer header- men ikke noget som producerer output til siden.
Avatar billede thb Nybegynder
03. december 2004 - 13:48 #6
Du kan skrive ob_start(); aller øverst på din side, og så kan du sende headers når du har lyst...

Thomas
Avatar billede sebster Nybegynder
03. december 2004 - 13:49 #7
Det vil sige at det kan godt skyldes et line space?? Men jeg har fejl i den linje hvro body starter???
Avatar billede schaefner Juniormester
03. december 2004 - 13:49 #8
Der må godt stå variabler og ligende - bare ikke noget der udskrives til browseren/brugeren.
Avatar billede schaefner Juniormester
03. december 2004 - 13:50 #9
Prøv at vise den kode du får fejl i.
Avatar billede hmortensen Nybegynder
03. december 2004 - 13:50 #10
Det gir heller ingen mening at sende output til brugeren, for at skifte side :)
Avatar billede sebster Nybegynder
03. december 2004 - 14:00 #11
Fejlen ser således ud:

Warning: Cannot modify header information - headers already sent by (output started at /customers/sebdesign.dk/sebdesign.dk/httpd.www/new.php:22) in /customers/sebdesign.dk/sebdesign.dk/httpd.www/doc/kontakt.php on line 56

De linjer det drejer sig om er præsenteret for overskulighedensskyld. Håber det giver mening.


news.php (22+23)------------
<?php
include ("dbconnect.php");
include ("variabler.php");

$page=$_GET[page];
if ($page=="") { $page="forside"; }

$re = mysql_query("SELECT * FROM $sitemenu WHERE page='$page'") or die ("Could not connect to the Database");
while ($hent=mysql_fetch_array($re))  {
$header=$hent['name'];
}
?>


<!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>
<title>Sebdesign</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<body bgcolor="#EDEDED" marginheight="0"> (her er fejlen)
<table align="center" cellpadding="0" cellspacing="0" border="0" class="text">

kontakt.php ()-----------------
Efter at have tilføjet noget i en database skriver jeg følgende

header('location:new.php');
exit;
Avatar billede sebster Nybegynder
03. december 2004 - 14:01 #12
Grunden til sideskift skyldes at når der er tilføjet noget i en databse skal brugen ikke kunne trykke f5 hvorefter det genindsættes!!!
Avatar billede schaefner Juniormester
03. december 2004 - 14:01 #13
Din header skal jo så stå før du udskriver noget.

header("location: new.php");
Avatar billede sebster Nybegynder
03. december 2004 - 14:04 #14
Skifter den så ikke side inden den tilføjer i databasen???
Avatar billede schaefner Juniormester
03. december 2004 - 14:06 #15
Du skal som udgangspunkt have rokeret rundt i din kode.

Du kan også vælge at lave en seperat fil der tager sig af indsættelsen i databasen og som dernæst sender brugeren videre.
Avatar billede hmortensen Nybegynder
03. december 2004 - 14:07 #16
Mest normale opbygning:

Side med design og form --> Side der indsætter postet data, og vidrestiller til --> Side med design
Avatar billede sebster Nybegynder
03. december 2004 - 14:09 #17
Hvor vil i så ligge en serversite validering henne? Jeg har nemlig fået at vide at de skulle ske på samme side!!!!
Avatar billede schaefner Juniormester
03. december 2004 - 14:09 #18
Det behøver det ikke nødvendigvis.
Avatar billede hmortensen Nybegynder
03. december 2004 - 14:10 #19
På siden der indsætter, og ved evt fejl i indtastning, sender du brugeren tilbage til siden med fx.: header("location: side.php?fejl=1");
Avatar billede sebster Nybegynder
03. december 2004 - 14:11 #20
Hvordan vil du så stille det op.
Jeg POSTer først hvorefter der bliver valideret derefter sendt til databasen g viderstillet på samme side. Kan det deles op??? og hvordan???
Avatar billede sebster Nybegynder
03. december 2004 - 14:14 #21
ja det er nok måden at gøre det på! Hmortensen smid lige et svar så splitter jeg pointene er det ikke fair!!!
Avatar billede sebster Nybegynder
03. december 2004 - 14:16 #22
Lige et sidste spørgsmål. Når jeg validere på noget, og et emne er forkert. Så skal den selvfølgelig vende tilbage til siden, men value for de indtastningsfelter der er rigtige skal bevare deres input, hvordan gøres det på denne måde???
Avatar billede schaefner Juniormester
03. december 2004 - 14:16 #23
Et simpelt eksempel:

[form.php]

<form method="post" action="form.handle.php">
<input type="text" name="phonenumber" /><br /><br />

<input type"=submit" value="Send" />
</form>

[form.handle.php]

<?php
if (preg_match("/^\d+$/", $_POST['phonenumber'])) {
    /*
    Gør hvad der skal gøres
    */
        /* Sender brugeren til en valgt side */
    header("Location: news.php");
} else {
    print "Indtast et telefonnummer!";
}
?>
Avatar billede hmortensen Nybegynder
03. december 2004 - 14:17 #24
Lad bare schaefner få dem.

Mit var blot en side kommentar.


thb: ob_start() er ganske unødvendigt med en ordentlig kode. Kan dog godt bruges til andre ting, bare ikke til at snyde headers igennem.
Avatar billede hmortensen Nybegynder
03. december 2004 - 14:19 #25
(schaefner, altid en god idé med exit efter header location)
Avatar billede sebster Nybegynder
03. december 2004 - 14:22 #26
Mne printes indtast et tlf så ikke på form.handle.php??? Hvordan gemmer man nogle variabler værdier ved flere side skrift???
Avatar billede sebster Nybegynder
03. december 2004 - 14:44 #27
Det kun jeg måske ikke få svar på.????
Avatar billede schaefner Juniormester
03. december 2004 - 14:53 #28
Jo, fejlbeskeden vil blive printet på form.handle.php
Avatar billede sebster Nybegynder
03. december 2004 - 15:02 #29
Hvordan føre man så variblerne med indhold tilbage til den første side??
Avatar billede hmortensen Nybegynder
03. december 2004 - 15:19 #30
Er det hvis der er fejl i indtastning, så skal brugeren stilles tilbage, og felterne udfyldes igen med det der allerede var skrevet ?
Avatar billede sebster Nybegynder
03. december 2004 - 15:29 #31
Ja det er det jeg mener!!!!
Avatar billede sebster Nybegynder
05. december 2004 - 16:31 #32
Hvordan gør man det? Jeg fik tidligere at vide at det hele skulle generes på en side, da der på den måde ikke opstod fejl.
Avatar billede sebster Nybegynder
06. december 2004 - 11:36 #33
Ville nu gerne vid ehvrodan det gøre men lukker nu!!!
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