header(), nicht!

Hallo,
ich habe heute eine neue Seite programmieren, wollen. Doch als ich dabei war,
den Login-Bereich zu erstellen, ist mir aufgefallen das der Befehler header() nicht funktioniert.
Sobald ich z.B. auf einen Button klicke soll er in die Login-Prüf-Datei wechseln. Sollten
dann die Zugangsdaten nicht mit denen in der db übereinstimmen, soll er auf der
login-seite eine fehlermeldung bringen.
das mache ich mit dem befehl [ header("Location: index.php?action=login&fehler=1"); ]
Das macht er aber nicht sondern bringt eine Fehlermeldung!
Woran kann das liegen?
MfG
Markus Dobmann
 
Das heißt also ich darf es so schreiben:

Code:
<?php
header("Location: index.php?action=login&fehler=1")
?>
und nicht so:
Code:
<?php
Leer, Leer, Leer, Leer header("Location: index.php?action=login&fehler=1")
oder wie sonst?
nochmals danke für die schnelle antwort!
MfG
Markus
 
Hi

so
http://www.php-faq.de/q/q-http-redirect.html

musst Du es schreiben, das wäre korrekt.

Es darf vor Ausgabe eines Headers kein html ausgegeben werden. Das Leerzeichen oder die Leerzeile in dem geposteten Thread bezog sich bei mir auf

Leer
<?php
session_start();

[...]

Wenn Du Dir nicht sicher bist, dann poste doch mal den Scriptcode hier.
 
Der Quelltext sieht ungefähr so aus:
Code:
<table...>
<tr>
<td>
<?php
if ($isset($submit)) {
if ($user == $nuser && $pw == $npw) {
header("Location: index.php?action=intern");
} else {
header("Location: index.php?action=login&fehler=1");
}
}
?>
</td>
</tr>
</table>
Das ist nicht der genaue Quellcode (den echten hab ich grad nicht da).
MfG
Markus Dobmann
 
hi

aber das html über der header-Ausgabe sticht doch förmlich ins Auge ;)
Warum packst Du das in eine Tabelle?
Das läuft doch als Script auf dem Server ab. Da hat eine html-Tabelle nix zu suchen.
 
nein, mach einfach so:
Code:
<?php
if ($isset($submit)) {
if ($user == $nuser && $pw == $npw) {
header("Location: index.php?action=intern");
} else {
header("Location: index.php?action=login&fehler=1");
}
}
?>
<table...>
<tr>
<td>
</td>
</tr>
</table>
 
markusdobmann hat gesagt.:
ja, jetzt weiß ich was sie meinen!
ich sollte also einen echo() oder print() Befehl benutzen, oder?
MfG
Markus Dobmann

Hi

warum das?
mit echo oder print() gibst Du was auf dem Bildschirm aus. Mit dem header("location: leitest Du auf eine andere Seite weiter. Warum was ausgeben?

PHP:
<?php
// php-code evtl. Variablendeklaration, Datenbankaufruf etc. 
if ($isset($submit)) {
if ($user == $nuser && $pw == $npw) {
header("Location: index.php?action=intern");
} else {
header("Location: index.php?action=login&fehler=1");
}
}
?>

das dürfte ausreichen, wenn Du die Werte nicht in Sessions legen willst.
 
stimmt!
das kommt mir auch gerade!
Naja, egal. Auf jeden Fall weis ich jetzt wie ich es mache!
Vielen Dank für die Information
MfG
Markus Dobmann
 
Zurück