header(), kapier ich nicht....

Dein erster Fehler: Siehe Post 17 von SilentWarrior.
Dein zweiter Fehler: Siehe so ziemlich alle anderen Posts dieses Threads.
Dritter Fehler: Die Location im Header benötigt einen absoluten URI.

Und was klappt, was klappt nicht?
Es wird doch mit ziemlicher Sicherheit bei jedem Seitenaufruf das Formular angezeigt.

Wenn Fehler eins korrigiert ist sollte eine Fehlermeldung auftauchen, wenn sie nicht unterdrückt wird (PHP-Einstellungen!).
Wenn Fehler zwei korrigiert ist, sollte es in einigen Browsern funktionieren und in anderen nicht.
 
Doch habe ich...
Aber was genau meinst du von dem Teil des Postes. Das mit dem "ob_.." oder wie? Heißt das, das mein Quelltext nicht funktioniern kann?

mfg
Markus
 
hpvw hat gesagt.:
Dein erster Fehler: Siehe Post 17 von SilentWarrior.
Dein zweiter Fehler: Siehe so ziemlich alle anderen Posts dieses Threads.
Dritter Fehler: Die Location im Header benötigt einen absoluten URI.

Und was klappt, was klappt nicht?
Es wird doch mit ziemlicher Sicherheit bei jedem Seitenaufruf das Formular angezeigt.

Wenn Fehler eins korrigiert ist sollte eine Fehlermeldung auftauchen, wenn sie nicht unterdrückt wird (PHP-Einstellungen!).
Wenn Fehler zwei korrigiert ist, sollte es in einigen Browsern funktionieren und in anderen nicht.

Das heißt also auf gut deutsch, dass ich ein hoffungsloser fall bin?

mfg
markus
 
Servus Markus,
Also zu deinem Problem:

diese Code wird NIE funktionieren, aus dem Simplen grund ein PHP Script beginnt mit der ersten Zeile die bei dir HTML code ist, dieser Wird dann mal Spontan an den Browser gesendet.
was zurfolge hat, das dein header Befehl nicht mehr funktioniert...
das liegt an dem schon oft genannten Problem. ein PHP-Script mit eingebetteetem PHPCode beginnt ab der ersten Zeile nicht ab den ersten <?

Dieses hier funktioniert, da nur in dem Fall das die Variable nicht gesetzt ist, html Quelltext an den Browser sendet.

PHP:
<?
if (!isset($eintragen)){
{
echo('<html>
<body>
<form action="" method="post">
<input type="text" name="new_name" maxlength="30"><br>
<input type="submit" name="eintragen" value="Eintragen">
</form>

</body>
</html>
');
}else{
  # Speichere Daten in einer db
  # Nun soll der Browser wieder auf die Einträge weiterleiten
  header("Location: index.php?action=gbook");
}
?>
 
Hmm..... *kurz überleg*
Geht das auch wenn ich es so mache?:
PHP:
<?php
echo "
<form action='' method='post'>
<input type='text' name='new_name' maxlength='20'><br>
<input type='submit' name='eintragen' value='Eintragen>
</form>";
if (isset($eintragen))
{
  # Speicher Daten in einer db
  # Leite weiter zu den Einträgen
  header("Location: index.php?action=gbook");
}
?>
 
Es geht nicht, dann musst du wieder ob_start() und Ob_end_flush() verwenden und nur mal so ganz nebenbei würde ich auf alle Fälle $_POST['eingetragen'] benutzen.

der_maiki
 
Oh mei oh Mei.............

Ganz simples Beispiel:
PHP:
html-tags....
<?php
header("Location: index.php");
?>

Funktioniert, aber warum? ich habe trotzdem vorher html ausgegeben

mfg
markus
 
Um noch einmal auf die Funktionen zur Ausgabesteuerung zu kommen:
Mit den Funktionen zur Ausgabesteuerung können Sie die Ausgabe eines Skripts steuern. Dies kann in verschiedenen Situationen ganz nützlich sein, besonders, wenn Sie header an den Browser schicken müssen, nachdem Ihr Skript bereits etwas ausgegeben hat. Die Ausgabesteuerungsfunktionen gelten nicht für header, die mit header() oder setcookie() geschickt wurden, sondern nur für Daten, die mit echo() gesendet wurden oder für Daten zwischen PHP-Codeblöcken.
Somit können die Funktionen zur Ausgabesteuerung helfen, dass zuerst alle HTTP-Header gesendet werden können, bevor der tatsächliche Inhalt gesendet wird. (Siehe meinen Beitrag über HTTP-Header)
 
Zuletzt bearbeitet:
Gumbo hat gesagt.:
Um noch einmal auf die Funktionen zur Ausgabesteuerung zu kommen:Somit können die Funktionen zur Ausgabesteuerung helfen, dass zuerst alle HTTP-Header gesendet werden können, bevor der tatsächliche Inhalt gesendet wird. (Siehe meinen Beitrag über HTTP-Header)

Ich muss das also so machen:

PHP:
<?php
ob_start();
?>
html-tags... (Formular, usw...)
<?php
if (isset($_POST[eintragen]))
{
  # Daten speichern
  header("Location: index.php?action=gbook");
}
ob_end_flush();
?>

oder wie
 
Zurück