WinFuture-Forum.de: Apache-server Sendet Header(); Trotz Leerzeile - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

Apache-server Sendet Header(); Trotz Leerzeile


#1 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 08. Juni 2005 - 11:10

Hallo zusammen.

Ich habe da ein kleines Problem.
Und zwar benutze ich XAMPP für Windows Version 1.4.11 und da programmiere und teste ich auch alle meine Skripte.
Ich bin total mit diesem Apache-Server zufrieden.
Nur irgendwie gibt er keinen Fehler aus, wenn ich bei PHP einen header(); senden will, obwohl davor schon mindestens eine Leerzeile entstanden ist.
Genau so bei Sessions und Cookies.
Nehmen wir mal an, es sieht so aus:

<?php
echo "Klicken Sie <a href=\"?test\">hier</a> um fortzufahren.";

if(isset($_GET['test']))
{
  $_SESSION['test'] = true;
  header("Location: index.php");
}
?>

Dann dürfte es so eigentlich nicht funktionieren, das tut es online auch nicht.
Aber beim Apache funktioniert es ohne Fehlermeldung.

Mir wäre es ganz recht, wenn mein Apache auch richtig simuliert.
Was müsste man einstellen/ändern, damit dieser "Fehler" behoben ist?

Danke schon mal im Voraus für eure Hilfe!

Dieser Beitrag wurde von Slayer bearbeitet: 08. Juni 2005 - 11:11

Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

Anzeige



#2 Mitglied ist offline   daarg 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.212
  • Beigetreten: 30. November 11
  • Reputation: 4
  • Geschlecht:Männlich

geschrieben 08. Juni 2005 - 11:39

hast du den code in einer einzigen seite eingebettet?
as wolves among sheep we have wandered [bathory, dis irae]
0

#3 Mitglied ist offline   Meatwad 

  • Gruppe: aktive Mitglieder
  • Beiträge: 784
  • Beigetreten: 07. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bad Vilbel
  • Interessen:Computer, Inliner, Chatten...

geschrieben 08. Juni 2005 - 11:42

mach mal am anfgang
error_reporting(E_ALL);

rein und dann müsste es auch gehen...
I am away to look for my self. If I am back before I return keep me here. | Mein Server
0

#4 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 08. Juni 2005 - 13:02

Oder ini_set('display_errors','On'); falls die Fehler komplett unterdrückt werden.
0

#5 Mitglied ist offline   daarg 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.212
  • Beigetreten: 30. November 11
  • Reputation: 4
  • Geschlecht:Männlich

geschrieben 08. Juni 2005 - 13:06

versuchs mal so:

seite1.php:
<html>
<head>
<title>{hier titel}</title>
</head>
<body>
<?php echo "Klicken Sie <a href=\"seite2.php?test=true\">hier</a> um fortzufahren.";?>
</body>
</html>


seite2.php:
<?php
if ($_GET["test"])
  {
  $_SESSION['test'] = $_GET["test"];
  header("location:/index.php");
  }
?>
<html>
<head>
<title>{hier titel}</title>
</head>
<body>
{hier text
</body>
</html>


// ch
as wolves among sheep we have wandered [bathory, dis irae]
0

#6 Mitglied ist offline   Meatwad 

  • Gruppe: aktive Mitglieder
  • Beiträge: 784
  • Beigetreten: 07. August 04
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Bad Vilbel
  • Interessen:Computer, Inliner, Chatten...

geschrieben 08. Juni 2005 - 14:32

@ch: es geht ihm nicht um den fehler, sondern, dass er nicht ausgegeben wird!
I am away to look for my self. If I am back before I return keep me here. | Mein Server
0

#7 Mitglied ist offline   Yalamand 

  • Gruppe: aktive Mitglieder
  • Beiträge: 101
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 08. Juni 2005 - 17:24

Wenn ich das richtig verstehe geht es um die verschiedenen Verhaltensweisen?

Es ist kein Fehler wenn das output_buffering aktiviert ist in der php.ini oder am Anfang eines Dokuments ob_start() aufgerufen wird (noch vor der ersten Ausgabe an den Browser).

Auf manchen Servern wird es standardmäßig aktiviert (und dort produziert es natürlich keine Fehlermeldung, weil kein Fehler auftritt) und auf anderen Servern nicht (was einen Fehler produziert).

Dieser Beitrag wurde von Yalamand bearbeitet: 08. Juni 2005 - 17:25

0

#8 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 08. Juni 2005 - 20:14

Zitat (Meatwad: 08.06.2005, 12:42)

mach mal am anfgang
error_reporting(E_ALL);

rein und dann müsste es auch gehen...
<{POST_SNAPBACK}>

Habe ich immer drin, geht aber trotzdem (und es soll ja nicht gehen).

Zitat (Floele: 08.06.2005, 14:02)

Oder ini_set('display_errors','On'); falls die Fehler komplett unterdrückt werden.
<{POST_SNAPBACK}>

Werde ich mal versuchen, an so eine Einstellung dachte ich auch <_<

Zitat (Meatwad: 08.06.2005, 15:32)

@ch: es geht ihm nicht um den fehler, sondern, dass er nicht ausgegeben wird!
<{POST_SNAPBACK}>

Genau, danke!

Zitat (Yalamand: 08.06.2005, 18:24)

Wenn ich das richtig verstehe geht es um die verschiedenen Verhaltensweisen?

Es ist kein Fehler wenn das output_buffering aktiviert ist in der php.ini oder am Anfang eines Dokuments ob_start() aufgerufen wird (noch vor der ersten Ausgabe an den Browser).

Auf manchen Servern wird es standardmäßig aktiviert (und dort produziert es natürlich keine Fehlermeldung, weil kein Fehler auftritt) und auf anderen Servern nicht (was einen Fehler produziert).
<{POST_SNAPBACK}>

Was bedeutet ob_start(); genau und was bringt es mir auf dem Online-Server?
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#9 Mitglied ist offline   Floele 

  • Gruppe: aktive Mitglieder
  • Beiträge: 919
  • Beigetreten: 22. Juni 04
  • Reputation: 0

geschrieben 08. Juni 2005 - 20:19

ob_start() "puffert" die Ausgabe und sendet die Seite erst zum Benutzer wenn sie komplett fertig ist.
0

#10 Mitglied ist offline   Yalamand 

  • Gruppe: aktive Mitglieder
  • Beiträge: 101
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 08. Juni 2005 - 20:56

Zitat (Slayer: 08.06.2005, 21:14)

Was bedeutet ob_start(); genau und was bringt es mir auf dem Online-Server?
<{POST_SNAPBACK}>


Wie mein Vorredner schon sagte. Heisst technisch gesehen:

Ohne Output-Buffer werden Dokumente gleich an den Browser gesendet.
Mit ob_start(); wird es erst gesendet wenn das Script fertig ist oder ob_flush(); geschieht. D.h. header können auch mitten im Script gesetzt werden, sinnvoll für Sicherheitsabfragen wo man sich doch noch für einen header('Location: xxx');

Nachteil ist bei sehr grossen Seiten das die Anzeige erst später geschieht, weil alles erst am Ende gesendet wird.

Siehe auch http://www.php.net/m....outcontrol.php
0

#11 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 08. Juni 2005 - 21:07

Das ist ja mal praktisch...
Für Notfälle kann ich damit also auch bestimmte Dinge erreichen, die ich sonst nicht erreichen kann.
Und wenn die Dateigröße unter 10KB ist, dann dürfte das kaum bemerkbar sein!
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#12 Mitglied ist offline   Yalamand 

  • Gruppe: aktive Mitglieder
  • Beiträge: 101
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 08. Juni 2005 - 21:14

Zitat (Slayer: 08.06.2005, 22:07)

Das ist ja mal praktisch...
Für Notfälle kann ich damit also auch bestimmte Dinge erreichen, die ich sonst nicht erreichen kann.
Und wenn die Dateigröße unter 10KB ist, dann dürfte das kaum bemerkbar sein!
<{POST_SNAPBACK}>


Selbst 100kb sind nicht tragisch... Schlimm wird es erst wenn man z.B. ne Datei ausliest die 1MB gross ist, diese ausgeben will per echo und am Ende noch 'ENDE' ausgeben will. PHP muss dann 1MB im speicher halten und das ist ein hoher Preis für den output buffer.
0

#13 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 08. Juni 2005 - 21:19

Alles klar, dankeschön.
Dann weiß ich jetzt auch, wo ich das genau anwenden kann.
Hast mi damit sehr weitergeholfen, so eine Funktion habe ich schon lange gesucht <_<

Zitat (Floele: 08.06.2005, 14:02)

Oder ini_set('display_errors','On'); falls die Fehler komplett unterdrückt werden.
<{POST_SNAPBACK}>

Ich kann das Attribut für "display_errors" in der php.ini nicht finden und somit auch nichts umstellen...

Dieser Beitrag wurde von Slayer bearbeitet: 08. Juni 2005 - 21:21

Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

#14 Mitglied ist offline   Yalamand 

  • Gruppe: aktive Mitglieder
  • Beiträge: 101
  • Beigetreten: 19. Mai 05
  • Reputation: 0

geschrieben 08. Juni 2005 - 21:35

Zitat (Slayer: 08.06.2005, 22:19)

Alles klar, dankeschön.
Dann weiß ich jetzt auch, wo ich das genau anwenden kann.
Hast mi damit sehr weitergeholfen, so eine Funktion habe ich schon lange gesucht :P
Ich kann das Attribut für "display_errors" in der php.ini nicht finden und somit auch nichts umstellen...
<{POST_SNAPBACK}>


einfach display_errors = On einfügen <_< php merkt das
0

#15 Mitglied ist offline   Slayer 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.476
  • Beigetreten: 12. Dezember 03
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Baden-Württemberg
  • Interessen:&gt; Internet<br />&gt; Musik<br />&gt; Filme<br />&gt; Events

geschrieben 08. Juni 2005 - 21:41

Habe gerade gesehen, dass es doch On war.
Hier mal ein Auszug meiner php.ini

; Print out errors (as a part of the output).  For production web sites,
; you're strongly encouraged to turn this feature off, and use error logging
; instead (see below).  Keeping display_errors enabled on a production web site
; may reveal security information to end users, such as file paths on your Web
; server, your database schema or other information.
display_errors = On

; Even when display_errors is on, errors that occur during PHP's startup
; sequence are not displayed.  It's strongly recommended to keep
; display_startup_errors off, except for when debugging.
display_startup_errors = Off

; Log errors into a log file (server-specific log, stderr, or error_log (below))
; As stated above, you're strongly advised to use error logging in place of
; error displaying on production web sites.
log_errors = Off

; Set maximum length of log_errors. In error_log information about the source is
; added. The default is 1024 and 0 allows to not apply any maximum length at all.
log_errors_max_len = 1024

; Do not log repeated messages. Repeated errors must occur in same file on same
; line until ignore_repeated_source is set true.
ignore_repeated_errors = Off

; Ignore source of message when ignoring repeated messages. When this setting
; is On you will not log errors with repeated messages from different files or
; sourcelines.
ignore_repeated_source = Off

; If this parameter is set to Off, then memory leaks will not be shown (on
; stdout or in the log). This has only effect in a debug compile, and if
; error reporting includes E_WARNING in the allowed list
report_memleaks = On

; Store the last error/warning message in $php_errormsg (boolean).
track_errors = Off

; Disable the inclusion of HTML tags in error messages.
html_errors = On


Vieleicht muss ich daran etwas ändern, um den header(); Fehler einzuschalten wie oben beschrieben?!
Der Mensch hat drei Wege, klug zu handeln.
Erstens durch Nachdenken: Das ist der Edelste.
Zweitens durch Nachahmen: Das ist der Leichteste.
Drittens durch Erfahrung: Das ist der Bitterste.

(Konfuzius)
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0