Weiterleiten funktioniert nicht
Hermann-Udo Schmidt
- php
Guten Tag,
Header("Location: http://www.beispiel.de") klappt bei mir nicht.
Ich weiß auch den Grund, weil ich index.php includet habe, also dass ich nicht immer wieder Index kopierne muss, sondern einfach Dateien erstellen kann und mein textreinschreiben kann, die dann im content angezeigt werden.
Zurück zur Header Funktion...
Die muss ja immeroben im header stehen, aber wenn ichjetzt in einer anderen Datei diesen Befehl schreibe kommt folgender Fehler:
Warning: Cannot modify header information - headers already sent by (output started at /var/www/customers/webs/wsexperte/webpages/kingspace/index.php:20) in /var/www/customers/webs/wsexperte/webpages/kingspace/kundenlogin.php on line 20
gibt es eine andere möglichkeit von einer Seite weiterzuleiten?
Script:
if($_GET[b]=="")
{
if(isset($_SESSION["beispiel"]))
{
Header("Location: http://www.kingspace.de/index.php?s=kundenlogin&b=2");
}
else {
echo "
Hallo ";
}
}
Die muss ja immeroben im header stehen, aber wenn ichjetzt in einer anderen Datei diesen Befehl schreibe kommt folgender Fehler:
Nein, es ist völlig egal wo die Funktion aufgerufen wird - das kann auch in der vorletzten Zeile deines Scripts sein.
Warning: Cannot modify header information - headers already sent by (output started at /var/www/customers/webs/wsexperte/webpages/kingspace/index.php:20) in /var/www/customers/webs/wsexperte/webpages/kingspace/kundenlogin.php on line 20
gibt es eine andere möglichkeit von einer Seite weiterzuleiten?
Ja genug, aber das ist die vernünftigste Variante - wenn du nach der Fehlermeldung in der Suchmaschine deiner Wahl suchst, wirst du schnell herrausfinden warum das so ist und was man dagegen tun kann.
Um deine Suche ggf. schneller zum Erfolg zu bringen, solltest du dich ggf. mit Output-Buffering beschäftigen.
Die muss ja immeroben im header stehen, aber wenn ichjetzt in einer anderen Datei diesen Befehl schreibe kommt folgender Fehler:
Nein, es ist völlig egal wo die Funktion aufgerufen wird - das kann auch in der vorletzten Zeile deines Scripts sein.
Warning: Cannot modify header information - headers already sent by (output started at /var/www/customers/webs/wsexperte/webpages/kingspace/index.php:20) in /var/www/customers/webs/wsexperte/webpages/kingspace/kundenlogin.php on line 20
gibt es eine andere möglichkeit von einer Seite weiterzuleiten?
Ja genug, aber das ist die vernünftigste Variante - wenn du nach der Fehlermeldung in der Suchmaschine deiner Wahl suchst, wirst du schnell herrausfinden warum das so ist und was man dagegen tun kann.
Um deine Suche ggf. schneller zum Erfolg zu bringen, solltest du dich ggf. mit Output-Buffering beschäftigen.
Zitat:
Es sollte bei der Verwendung der header() Funktion darauf geachtet werden das vor dem Aufruf dieser Funktion noch keine Daten vom Server zum Browser gesendet wurden.
Es sollte bei der Verwendung der header() Funktion darauf geachtet werden das vor dem Aufruf dieser Funktion noch keine Daten vom Server zum Browser gesendet wurden.
Ja - und das gilt es deinerseits zu vermeiden.
Und das geht ja nicht, da ich den Header befehl ja von index.php?s=beispiel aufrufe. bzw. ich wüsst nicht wie ich das machen sollte, weil bei google steht immer nur das gleiche
Auf Leerzeichen gucken, bevor html befehl im head ist machen
Und das geht ja nicht, da ich den Header befehl ja von index.php?s=beispiel aufrufe.
Den Zusammenhang verstehe ich nicht, da ich nicht riechen kann, wie deine Scripte aussehen.
Aber darum gab ich dir auch den Hinweis mit dem Output-Buffering ;)
Und das geht ja nicht, da ich den Header befehl ja von index.php?s=beispiel aufrufe.
Den Zusammenhang verstehe ich nicht, da ich nicht riechen kann, wie deine Scripte aussehen.
Aber darum gab ich dir auch den Hinweis mit dem Output-Buffering ;)
Dieses ?s= in dem Link gibt doch schon den hinweis das ich den befehl nicht von index.php aufrufe :P
Output buffering erklärt mir keine deutsche seite
Hallo,
Und das geht ja nicht, da ich den Header befehl ja von index.php?s=beispiel aufrufe.
Dieses ?s= in dem Link gibt doch schon den hinweis das ich den befehl nicht von index.php aufrufe :P
ja und? Das hat absolut nichts mit der Ausgabe zu tun.
Ciao,
Martin
Dieses ?s= in dem Link gibt doch schon den hinweis das ich den befehl nicht von index.php aufrufe :P
Nein, gibt es nicht - da kann stehen was will, es hat 0 Aussagekraft:
index.php?foo=bar
funzt:
<?php
header();
exit;
echo $_GET['foo'];
?>
funzt nicht:
<?php
echo $_GET['foo'];
header();
exit;
?>
Output buffering erklärt mir keine deutsche seite
In der Suchmaschine meiner Wahl nach "PHP Output-Buffering" gesucht finde ich _sofort_ als ersten Treffer folgende Seite in der offiziellen PHP-Dokumentation:
PHP: Output-Control-Funktionen
Für mich sieht das ziemlich deutschsprachig aus ;)
In der Google-Büchersuche finde ich z.B. das hier:
Professionelle PHP 5-programmierung: Output Buffering
Hi,
Dieses ?s= in dem Link gibt doch schon den hinweis das ich den befehl nicht von index.php aufrufe :P
nein, es ist ein Hinweis darauf, dass ein URL-Parameter namens "s" existiert. Mehr nicht. Der Umstand, dass in der URL "index.php" steht, ist übrigens nicht mal ein Hinweis darauf, dass eine Datei namens "index.php" überhaupt existiert - oder dass Du mit PHP arbeitest. Und nichts, aber auch wirklich gar nichts von dem, was hier gesagt wurde, ändert etwas an der schlichten Tatsache, dass Du verdammt noch mal die Ausgabe vor dem header()-Befehl entfernen musst.
Cheatah
@@Cheatah:
nuqneH
Der Umstand, dass in der URL "index.php" steht, ist übrigens nicht mal ein Hinweis darauf, dass eine Datei namens "index.php" überhaupt existiert - oder dass Du mit PHP arbeitest.
Ein Indiz ist kein Hinweis?
Qapla'
Grüße,
randnotiz von n00b zu n00b - wenn es utf8 ist, achte dass es "ut8 ohne bom" ist.
MFG
bleicher
Grüße,
randnotiz von n00b zu n00b - wenn es utf8 ist, achte dass es "ut8 ohne bom" ist.
MFG
bleicher
bom sagt mir nicht viel aber ist ohne^^
bom sagt mir nicht viel aber ist ohne^^
Wenn dir "BOM" nichts sagt, wie kannst du dann behaupten, es wäre nicht vorhanden? ;)
bom sagt mir nicht viel aber ist ohne^^
Wenn dir "BOM" nichts sagt, wie kannst du dann behaupten, es wäre nicht vorhanden? ;)
"Hyperglykämie sagt mir nichts, kann ich nicht haben!" - du wärst der Traum aller Ärzte :D
Gibts eigentlich einen Fachbegriff für negative Hypochonder - also Personen, die jede Krankheit die man ihnen attestiert, verleugnen?
Hi,
Gibts eigentlich einen Fachbegriff für negative Hypochonder - also Personen, die jede Krankheit die man ihnen attestiert, verleugnen?
ja: Workoholic. Ich bleibe da lieber ehrlich: Hypochondrie ist die einzige Krankheit, die ich nicht habe ... *röchel* *keuch*
Cheatah
@@udo:
nuqneH
bom sagt mir nicht viel
↗Was ist die UTF-8-Signatur (BOM)? [UTF8-BOM]
aber ist ohne^^
↗Das BOM erkennen [ibid.]
Qapla'
Hallo,
Und das geht ja nicht, da ich den Header befehl ja von index.php?s=beispiel aufrufe.
was ändert das? Du kannst includieren, soviel du lustig bist; solange du dabei noch keine Ausgabe an den Browser machst, kannst du immer noch an beliebiger Stelle HTTP-Header setzen. Ob das im Sinne der Wartbarkeit und Übersichtlichkeit ist, wäre eine andere Frage.
bzw. ich wüsst nicht wie ich das machen sollte, weil bei google steht immer nur das gleiche
Aha ...
Auf Leerzeichen gucken, bevor html befehl im head ist machen
Ist deutscher das Satz kein. Kann niet verstaan!
Ciao,
Martin
Moin,
Du musst eben drauf achten, dass da in der Zeile 20 kein Output geschieht, wenn Deine if-Kaskade später zutrifft.
Alternativ könntest Du natürlich auch bis dahin den Output-Buffer abfangen, aber das wäre ein ziemlich schmutziger Workaround.
Grüße,
Kim
Alternativ könntest Du natürlich auch bis dahin den Output-Buffer abfangen, aber das wäre ein ziemlich schmutziger Workaround.
Warum ist kontrolliertes Output-Buffering schmutzig?
Hi,
Zurück zur Header Funktion...
Die muss ja immeroben im header stehen, aber wenn ichjetzt in einer anderen Datei diesen Befehl schreibe kommt folgender Fehler:
sie kann an beliebiger Stelle stehen. Nur darf noch keine Ausgabe durchgeführt worden sein.
gibt es eine andere möglichkeit von einer Seite weiterzuleiten?
Keine sinnvolle. Verzichte also auf Ausgaben, bevor Du weißt, dass etwas ausgegeben werden soll.
if($_GET[b]=="")
"b" ist ein schlechter Name für eine Konstante, da er sehr wenig aussagekräftig ist. Ich würde eher den URL-Parameter "b" nennen, nicht jedoch die Konstante, die den Namen des URL-Parameters enthält.
Cheatah