Ergebnis 1 bis 11 von 11

Thema: PHP Redirects

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1

    PHP Redirects

    Ich hab folgendes Problem:

    Seite A redirected am schluss automatisch auf Seite B

    PHP-Code:
    //Code der Seite A:
    <?php
    header
    ("Location: ?site=_shoutbox&reload=1");
    ?>
    Da, aber Seite B trozd des Reloads nicht auf dem aktuellen stand ist will ich Seite B auch relaoden, klappt aber nicht

    PHP-Code:
    //Code der Seite B:
    <?php
    header
    ("Location: ?site=_shoutbox");
    ?>
    P.S. das erste site=... wird für den Include benötigt.

    edit
    Die Fehlermeldung:
    Warning: Cannot modify header information - headers already sent by (output started at /srv/www/htdocs/index.php:7) in /srv/www/htdocs/inc/_shoutbox.inc on line 6

    Geändert von Latency (04.06.2004 um 20:17 Uhr)

  2. #2
    der header() befehl darf nur benutzt werden, wenn noch keine einziege andere ausgabe an den browser gesendet wurde, d.h. befehle wie print(),echo() etc oder nicht php-bereiche (html).

    ich nehme an, dass hier
    Zitat Zitat
    (output started at /srv/www/htdocs/index.php:7)
    schonmal irgendetwas gesendet wurde.

    das ganze kann man am besten durch output buffering verhindern.
    dafür machst du am anfang deines scripts einfach ein ob_start(). (auch vor jeder ausgabe)
    dadurch wird alles, was gesendet wird, zwischengespeichert und erst ganz am ende des scripts wirklich gesendet. ist auch lustig in zusammenarbeit mit ob_get_contents() und ob_end(). aber das ist eine andere geschichte. ^^ kannst ja einfach mal bei www.php.net schaun. ist imho immer sehr hilfreich und informativ. ^^"

    btw, ein tipp.
    ich empfehle dir im location-header die volle addresse anzugeben, da manche browser relative angaben nicht verstehen. d.h. mach "Location: http://www.dein-host.de/index.php?shoutbox".
    einfacher kannst dus dir z.B. durch die server-variablen machen, wie $_SERVER['irgendwas_mit_host']. den namen weiß ich jetzt nicht genau. mach einfach mal phpinfo(). dann siehst du die ganzen variablen.


    und ich empfehle außerdem auch den reload nicht mit nem location-header zu machen sondern durch einen der das caching verhindertn. mal schaun... ah, hier.
    Code:
      header("Pragma: no-cache");
      header("Cache-Control: no-store, no-cache, must-revalidate");
    dadurch wird die seite nicht gecacht. ich denke dann wird sie immer up-to-date sein...
    das ist doch dein problem... oder? ^^"


    whee.
    ich habs auf php.net gefunden:
    der beste location-code ist so:
    Code:
    header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/".$relative_url);


    hth. ich hab diesen post jetzt bestimmt mehr als 10mal editiert. xD

    Geändert von Dingsi (04.06.2004 um 21:04 Uhr)

  3. #3
    Mhm... ich hab mal versucht was du gesagt hast:

    Code der Seite a wurde so verändert:
    PHP-Code:
    header("Location: ?site=_shoutbox"); 
    Seite B sieht nun so aus:
    PHP-Code:
    <?php
        header
    ("Pragma: no-cache");
        
    header("Cache-Control: no-store, no-cache, must-revalidate");
    ?>
    <html>
    .
    .
    .
    Fehlermeldung:
    Warning: Cannot modify header information - headers already sent by (output started at /srv/www/htdocs/index.php:7) in /srv/www/htdocs/inc/_shoutbox.inc on line 2

    Warning: Cannot modify header information - headers already sent by (output started at /srv/www/htdocs/index.php:7) in /srv/www/htdocs/inc/_shoutbox.inc on line

    Es hat also nicht wirklich etwas gebracht

    edit:
    Achja Index.php Zeile 7 Bindet nur eine externe .js datei ein, mehr nicht.

    Geändert von Latency (04.06.2004 um 21:07 Uhr)

  4. #4
    der no-cache code war auch nicht da um den fehler zu beheben. ^^"
    der war nur da, um diesen imho etwas unschönen location-header zu ersetzen.

    sorry, wenn das etwas blöd rüberkam. ^^"

    das problem kannst du durchs OB (ob_start(), s.o.) oder durchs überprüfen deines codes in index.php:7 lösen.

    das ist ja auch schon.
    die externe js datei wird an den browser gesendet, welcher dadurch auch schon feste header erhält. die können jetzt nichtmehr durch header() geändert werden.

  5. #5
    Ich hab die Cache einstellungen auf die gesamte Seite erweitert, dass diese sich nicht mehr Cachen lässt, die Fehler sind weg, das automatische aktualisieren klappt trozdem nicht

  6. #6
    Joho! Ich hab mal wieder ne doofe Frage ^^°
    Wie kann ich die aktuelle URL auslesen? Ich habe herausgefunde wie man sie in ihre einzelteile Zerlegen kann, aber nicht wie man sie ausliest

    Nun, wäre recht wichtig das mal zu erfahren, zudem bräuchte ich dann noch eine Möglichkeit, Variablen an meine URL anzuhängen, so dass die Seite auf die Verlinkt wird die Variablen ausließt. Gibt es da irgend eine Möglichkeit?

  7. #7
    mach einfach mal ein php script:
    PHP-Code:
    <? phpinfo(); ?>
    dann siehst du ganz unten alle server-variablen (http,env,etc)
    ua. eben auch: $_SERVER["HTTP_HOST"]._SERVER["SCRIPT_NAME"]

    2.
    einfach an die url ein ?seite=inhalt anhängen (es ergibt sich http://www.host.de/index.php?seite=inhalt)

    im script liest du des denn mit $_GET['seite']. ôô

    aber das kannst du doch schon o-O°

  8. #8
    @Dingsi: Aha, danke ich werde es nachher gleich mal ausprobieren
    Und mein Können und Wissen von PHP tendiert doch ziemlich stark gegen null, deswegen frage ich ja immer so blöde Fragen ^^°

    Aber ich hoffe, das sobald alle Startschwierigkeiten überwunden sind, das ganze besser läuft. Die meisten Probleme ergeben sich ja daraus, dass ich keine gute Docu habe. SelfPHP und php.net sind IMHO irgendwie nicht das ware, für anfänger wie mich

  9. #9
    mh.. ich weiß ja jetzt net genau was du schon alles kannst, aber www.schattenbaum.net hat mir am anfang recht gut geholfen. ^_~

  10. #10
    Zitat Zitat
    Original geschrieben von Dingsi
    mh.. ich weiß ja jetzt net genau was du schon alles kannst, aber www.schattenbaum.net hat mir am anfang recht gut geholfen. ^_~
    Jo, den Link kenn ich auch schon, nur glaube ich, dass ich über dieses Level schon hinaus bin, oder einfach alles zu kompliziert angehe, und deswegen mit dem kleinen Tut nix weiter anfangen kann

    Ich suche ja auch nicht wirklich ein Tutorial, eine Functionsübersicht in der ich mich zurechtfinde würde reichen. Jedoch kenne ich keine deswegen suche ich immer lang nach Funktionen um danach doch im Forum nach hilfe zu fragen ^^°

  11. #11
    also wenn du sowas suchst ist selfphp doch die beste wahl. da kann man ganz einfach das jeweilige gebiet raussuchen (ggf. sogar mit der internen suchmaschiene) und die einfach nach der funktion gucken... o_o
    das ist doch eigentlich recht einfach, imho, und was besser wirst du, denke ich, nicht finden... ich benutze zuviele einschübe wie glaube ich oder denke ich, glaube ich)

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •