header("Location: menu.php"); virker ikke???

Tags:    php

<< < 12 > >>
hej forum

Nedenstående script eksempel virker næsten 100 % !
Det vil sige, at scriptet stor set gør hvad det skal, nemlig at skrive "overskrift" og "indhold" i en tabel som hedder "indlaeg".
Men når scriptet når til kommandoen: header ("Location: menu.php) og derved skal returnere til menu side, går det helt i stå. Men informationerne er skrevet i de rigtige tabeller.
<?php include("database.php"); ?>
<?php include("adgangskontrol.php"); ?>

<?php
$overskrift = $_REQUEST["overskrift"];
$indhold = $_REQUEST["indhold"];

$sql = "INSERT INTO indlaeg (overskrift, indhold) VALUES ('" . $overskrift . "', '" . $indhold . "');";

mysql_query($sql);

header("Location: menu.php");
?>


Er der nogen der har stødt på et tilsvarende problem og evt. har en løsning?



17 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
php.net siger følgende om header():
"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. "



<?php include("adgangskontrol.php"); ?>

<?php


Fjern linjeskiftet og jeg vil tro at det virker.





Prøv nedenstående:

Fold kodeboks ind/udKode 


Som Søren Jensen nævner, så er det nok denne som skaber miseren:

Fold kodeboks ind/udKode 


Efter den anden include afslutter du med ?> og efter denne skabes der et output med \n og derved virker header() ikke rigtigt.



stiller så lige et hurtigt spørgsmål:
Må man gøre sådan her?
Fold kodeboks ind/udPHP kode 

Altså udskrive noget HVIS et eller andet, ellers header("location: fjasgjh.php");



Mit eksempel script er taget ud af et undervisningshæfte udgivet på Libris så jeg formoder at koden er rigtigt.

Med hensyn til den referencen til php.net forstår ikke helt hvad der menes. Jeg vil netop mene at der ikke er noget "output" Det er et rent script der udelukkende skriver i en database, med mindre der menes at man heller ikke må bruge include???

Kan I se nogen fejl i eksempel scriptet?





prøv at skrive indholdet af de php filer du includer i samme fil, så du ikke includer noget (så længe at der ikke er html-kode..) ;)



Jeg har forsøgt at skrive mig fra at include filerne, men det ændrede ikke noget.
Så pludseligt virkede det i et par minuter for derefter at falde tilbage på fejlen igen.

Det er som om at header kommandoen bliver overset. For hvis jeg forsøger at provokere en fejl, eksempelvis ved at skriver noget volapyk som; ffasdfasdfheader("Location osv.)i linjen er der heller ingen ændring ved kørsel af scriptet. Ikke en gang en fejlmelding???



Indlæg senest redigeret d. 28.03.2010 23:43 af Bruger #15789
mærkeligt..



Jeg har efterhånden forsøgt lidt af hvert.

Nu ser scriptet således ud, og så burde det da virker,ikke?
<?php
include("database.php");
include("adgangskontrol.php");

$overskrift = $_REQUEST["overskrift"];
$indhold = $_REQUEST["indhold"];

$sql = "INSERT INTO indlaeg (overskrift, indhold) VALUES ('" . $overskrift . "', '" . $indhold . "');";

mysql_query($sql);
echo "Data er registreret i databasen <br/>";

header("Location: menu.php");
?>


Scriptet virker stadig ikke???



Jeg kom i tanke om at jeg havde en ECHO linje liggende i scriptet som jeg havde lagt ind for at se hvor langt scriptet kom inden det stoppede.
Men den ECHO har jo også blokkeret for løsningen, er det ikke korrekt?

Nu ser scriptet således ud:
<?php
include("database.php");
include("adgangskontrol.php");

$overskrift = $_REQUEST["overskrift"];
$indhold = $_REQUEST["indhold"];

$sql = "INSERT INTO indlaeg (overskrift, indhold) VALUES ('" . $overskrift . "', '" . $indhold . "');";

mysql_query($sql);

header("Location: menu.php");
?>

altså identisk med før nævnte script. Den eneste forskel er at ECHO linjen er fjernet og nu virker det.

Betyder det at man ikke kan have et output i form af en ECHO kommando hvis man ønsker at bruge Header funktionen?




<< < 12 > >>
t