13. maj 2003 - 00:44Der er
52 kommentarer og 1 løsning
Problem med brug af include() og header() på samme tid.
Jeg har ved at lave en som er bygget vha. css og tabeller. Så for at kunne flette en script ind i min kode bliver jeg nød til at bruge include.
Scriptet generere nogle links. Det bruger header() til at sende URL til browseren. Men det virker ikke efter at jeg bruge include. Jeg får flg fejl.
Warning: Cannot add header information - headers already sent by (output started at c:\apache\sites\tftinfo\includes\header.php:12) in c:\apache\sites\tftinfo\linkster\linkster.php on line 37
Jeg har fundet dette på nettet. ------------------- 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. ---------------------- Og det har jo nok noget med dette at gøre. Men jeg fatter ikke helt hvad de mener mener med mellemrum og tomme linier?!?
Opnå den bedste ydeevne med din computer, og overtag føringen i de nyeste spil uden at gå over budgettet.
30. oktober 2024
Slettet bruger
13. maj 2003 - 00:48#1
Welll, der må i det korte og det lange ikke være generet noget output før et header() kald! Følgende er f.eks output og header vil fejle: <?php echo " "; header(); ?>
Du må ikke sende noget som helst html-output til browseren inden dine header kald - det med mellemrum og tomme linier er bare for at gøre opmærksom på, at det også kan opfattes som html og dermed være nok til at ødelægge det for header()
fuck....Findes der et alternativ til at bruger header? Ellers kan jeg ,,uha..kun lave det ved at lave scriptet i en IFRAME istedet for hente det med include
Synes godt om
Slettet bruger
13. maj 2003 - 00:53#4
Det kommer nok lidt an på hvordan du bruger din header()... Men måske skulle du se lidt på din programstruktur... jeg kunne forestille mig at du har noget i stil med: <?php include("header.php"); echo "Et eller andet....";//Og en masse parsing... include("footer.php"); ?> I så fald skal du overveje at skifte til: <?php //En masse parsing så du har variablen $content include("header.php"); echo $content; include("footer.php"); ?>
OK. Jeg kan se jeg ikke fattede hvad header() krævede. Jeg buger et php script der hedder linkster. Dette ganere en liste over links som giver bruger mulighed for at selv at tilføje links osv. Scriptet lægger i en fil der hedder linkster.php. Hvis den køres alene virker det fint. Men hvis den includes midt i et html dokument virker den ikke mere. Men så er der jo også sendt en masse til browseren.
Du skal vel bare gå direkte til linkster.php - det er en anden site der skal vises, og derfor kommer der alligevel ikke noget af din html ud tril brugeren.
Nej linkster.php skal indgå som en del af layoutet med header.php og footer.php. Men hvordan kan jeg flytte header() kaldet OVENOVER den funktion som bestemmer hvad header() skal kalde? Kan kan kun skrive header("Location: $URL"); hvor URL er tom.....
outputtet det har jeg også læst lidt om . Men der blev jeg sgu sat af sporet. Noget med at fylde den og flushe den tildsidst. Men da det er et "færdog" lavet script vil det umiddlebart være urimeligt meget arbejde at lave om. Er IFRAME forøvrigt XHTML 1.1 ? ELler er det IE only
Jo, der er en anden vej du bør overveje nøje: drop ideen med at den anden site skal være en del af dit layout. Det er ikke særlig venligt overfor din bruger, og har kun den ene virkning, at han synes du er anmassende. Det virker næppe heller altid
Forstår stadig ikke, hvad header() egentlig bruges til - og om det rent faktisk er nødvendigt... - men udover det er det helt korrekt, at man kan bruge outputbuffering til at omgå problemerne - se mere på: http://dk.php.net/manual/en/ref.outcontrol.php
Nu tror jeg du har misforstået noget. (måske) scriptet er IKKE et andet site men en del af min egen side. Det jeg vil (og som scriptet gør) er at når jeg trykker på de links linkster.php genere bliver der åbnet et NYT vindue med linket i. (ref. http://tftinfo.dk/links.php
Synes godt om
Slettet bruger
13. maj 2003 - 01:12#19
Lige et skud i tågen... men prøv det her: <?php ob_start("callback");?> <?include ("includes/top_menu.php");?> <div id="rh-col"> <?require("linkster/linkster.php");?> </div> <?include ("includes/bottom.php");?> <?php ob_end_flush(); ?>
links.php henter altså linkter.php som laver de 2 links der ses. Men linkster kan ikke sende header() da jeg jo har skrevet en masse i browseren allerede.
Nej jeg forstår nok ikke. Man trykker på Acer-linket. Jeg forventer at der åbner et nyt vindue med http://www.acer.dk - men du mener, så vist jeg forstår, at der åbner et vindue med dine menuer og logoer, og med http://www.acer.dk som en del af dette ??
linkster scriptet sender bruger afsted sådan her. if ($QUERY_STRING && $LID && $URL) { mysql_query("UPDATE $link_table SET Clicks = Clicks+1 WHERE ID = $LID"); // add 1 to click count header("Location: $URL"); // send user to website }
Men måske er det bare fordi jeg er for træt jeg ikke fatter noget. Tror nærmest jeg holder mig til den anden løsning. Nu bliver det heller ikke et 10K hits site jeg laver. ;) Men jeg lader lige ? stå 15 min. hvis der nogen der har en opfølgning. Så sider jeg klar.
Nej, LID-en er "Løbenummeret" i tabellen - bruges til at opdatere hvor mange gange der er klikket på linket.' Du skal hente URL-en OG id-en ud ved udskrift af links
hvis jo så SVAR lige på spørgsmåler. Så bliver det det der "vinder". Det er sgu fedt i gider hjælpe herinde forøvrigt. Meget motiverende når man skal igang med noget nyt. Har programmeret i C++ i 3 år nu. Men det hjælper jo ikke meget med PHP´s finurligheder.
anders: C++ hjælper meget på PHPs finurligheder - det har sandsynligvis stor indflydelse på hvor hurtigt du lærer det og hvor godt du forstår det!
Synes godt om
Ny brugerNybegynder
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.