PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Header() bringt Fehlermeldung



p.rasch
02-08-2001, 15:59
Hi,

ich möchte mit der Header - Funktion in ein anderes Skript springen,

header("Location: platforms.php?SID=$sid");

nur leider kommt immer diese Fehlermeldung :

Cannot add header information - headers already sent by ........ in (und dann steht hier die Datei und die Zeile, wo die header Funktion drin steht)

Was mache ich falsch. Der Header Befehl ist doch zum springen gedacht oder ?

Danke,
Piet

Pingu
02-08-2001, 17:06
Hi,

die Antwort steht doch schon in der Fehlermeldung: <BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>headers already sent by[/quote]denn das <a href="http://www.php.net/manual/de/function.header.php" target="_blank">Manual</a> schreibt dazu ausdrücklich: <BLOCKQUOTE><font size="1" face="Arial,Helvetica,Geneva">Zitat:</font><HR>Hinweis: Beachten sie, dass die header()-Funktion aufgerufen werden muss, bevor
irgendeine Ausgabe durch normale HTML-Tags oder PHP erzeugt wird. Es ist ein häufig anzutreffender Fehler, per include() Programm-Code einzubinden (bzw. per auto_prepend) oder Leerzeichen oder -zeilen vor dem Code stehen zu haben, die bereits Ausgaben bewirken (auch wenn diese leer sind) bevor header() aufgerufen wird.[/quote]

Fehler erkannt?

Du wirst wohl vorher irgend eine Ausgabe haben und wenn es auch einfach nur ein RETURN nach einem ?&gt; ist oder gar der Anfang nicht am Dateianfang ist.

Gruß

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;-= Pingu =-

linsysop
03-08-2001, 08:31
deine php-seite muß so ausschauen:


<
php
?>
header("Location: platforms.php?SID=$sid");
?>
<
html
>
...
<
/html
>



also
php vor html


linsysop

[ 03. August 2001: Beitrag editiert von: linsysop ]

p.rasch
03-08-2001, 10:58
hmmm, danke für eure Hilfen, dass habe ich auch noch nicht gewusst, das
vorher keine Ausgabe erfolgen darf, aber ich habe keine Ausgabe vorher.
Hier ist mein gesamtes Skript. Auf dem Server im Internet funktioniert es komischer Weise aber auf meinem LAMP System nicht.
Skript:
<?php
include_once("$DOCUMENT_ROOT/inc/inc_db.php");
$row = db_query_row("SELECT id, password FROM users WHERE email='$email'");
if ($row[password] == crypt($password, $row[password])) {
$sid = createSID();
$ipaddr = getenv("REMOTE_ADDR");
$count = db_query_value("count", "SELECT COUNT(*) AS count FROM login WHERE user_id='$row[id]' AND ipaddr='$ipaddr'");
if ($count == "1")
db_query("UPDATE login SET time=NOW(), sid='$sid', ipaddr='$ipaddr' WHERE user_id='$row[id]'");
else
db_query("INSERT INTO login (user_id, time, sid, ipaddr) VALUES ('$row[id]', NOW(), '$sid', '$ipaddr')");

header("Location: platforms.php?SID=$sid");
} else {
header("Location: index.php?msg=-1");
}
?>

wie man sieht , erfolgen überhaupt keine Ausgaben,
Gruß,
Piet

p.rasch
04-08-2001, 00:44
oooppssss der Code wurde nicht mitangezeigt, aber jetzt hoffe ich :



<?php
include_once("$DOCUMENT_ROOT/inc/inc_db.php");
$row = db_query_row("SELECT id, password FROM users WHERE email='$email'");
if ($row[password] == crypt($password, $row[password])) {
$sid = createSID();
$ipaddr = getenv("REMOTE_ADDR");
$count = db_query_value("count", "SELECT COUNT(*) AS count FROM login WHERE user_id='$row[id]' AND ipaddr='$ipaddr'");
if ($count == "1")
db_query("UPDATE login SET time=NOW(), sid='$sid', ipaddr='$ipaddr' WHERE user_id='$row[id]'");
else
db_query("INSERT INTO login (user_id, time, sid, ipaddr) VALUES ('$row[id]', NOW(), '$sid', '$ipaddr')");

header("Location: platforms.php?SID=$sid");
} else {
header("Location: index.php?msg=-1");
}
?>

stefaan
04-08-2001, 14:33
Servus!

Hast du vielleicht ein Leerzeichen/Zeile vor
&lt;?PHP ?

Grüße, Stefan

[ 04. August 2001: Beitrag editiert von: stefaan ]

[ 04. August 2001: Beitrag editiert von: stefaan ]