Neue datei in Fenster laden



  • Hi Leute,

    habe eigentlich eine ganz simple Frage, aber komm irgendwie nicht drauf!

    Ich möchte, dass bei einem bestimmten Ereignis eine neue Datei geladen wird.
    Also so:

    if ($bla==bla)
    {
       //Seite mit neuer Datei laden
      <a href="seite.php?bla">Das hier soll automatisch passieren</a>
    }
    

    Wie geht das?
    thx, MFG



  • Das geht per HTTP, du mußt nur ein Location Header mit der URL senden:

    http://www.php.net/manual/en/function.header.php



  • Also habs so versucht:

    if ($bla==bla)
        {
            header("Location: http://bla/bla.php"); /* Redirect browser */
    
            /* Make sure that code below does not get executed when we redirect. */
            exit;
        }
    

    Bekomme aber folgenden Fehler:
    Warning: Cannot modify header information - headers already sent by (output started at C:\Inetpub\wwwroot\index.php:79) in C:\Inetpub\wwwroot\index.php on line 91
    Das ist genau die header (usw. Zeile.

    Ok, hab den Fehler gefunden. Mit dieser Funktion geht das was ichw ill gar nicht, denn es darf kein content vor dem aufruf platziert sein. Ich will aber sogar was per URL übergeben! Kennt jemand noch ne andere Funktion???



  • gibt ne javascript weiterleitung. *hinweis* oder du nimmst den header und pufferst den output davor mit ob handlern



  • Oder

    <meta http-equiv="refresh" content="10; URL=www.gentoo.org" />
    

    in <head></head> hinzufügen. In "10 Sekunden" wird nach www.gentoo.org weitergeleitet. Du kannst auch statt 10 20 oder 30 oder was du willst schreiben.

    headers kannst du benutzen, wenn die headers noch nicht gesendet worden sind (sonst ob_start() und ob_flush() benutzen) , und man sollte nach header("Location ... immer exit; schreiben (Sicherheit). D.h. bevor du echo oder print oder print_r oder HTML Code ausgibst, musst du headers() benutzen, sonst bekommst solche Fehlermeldungen wie "Cannot modify header information", weil die headers bereits gesendet worden sind!



  • Danke für den Hinweis, habs jetzt folgendermaßen gemacht:

    <SCRIPT LANGUAGE="JavaScript">
                timedouturl = "http://pfad/datei.php";
                window.location.href = timedouturl;
            </SCRIPT>
    


  • dope_dope schrieb:

    Mit dieser Funktion geht das was ichw ill gar nicht, denn es darf kein content vor dem aufruf platziert sein. Ich will aber sogar was per URL übergeben!

    Ich verstehe jetzt dein Problem nicht so ganz - was hindert dich daran, die Überprüfung ganz zu Beginn durchzuführen?! Und was genau meinst du mit "Ich will aber sogar was per URL übergeben!" 😕



  • Wenn es dich nicht stört, wenn bei vielen Usern keine Weiterleitung stattfindet, weil JavaScript deaktiviert ist, dann kannst du deinen Code nehmen. :p Sonst würde ich die sehr zu header() raten, oder eben per Meta-Tag 🕶



  • soviel zum thema javascript ?
    http://www.w3schools.com/browsers/browsers_stats.asp

    😉 .. niemals ohne fakt argumentieren 😉 kennst mich doch flenders.

    Meistens ist der meta tag jedoch schlechter stil da man meistens innerhalb eines templates redirected durch einen include oder anderes und ein meta tag laut standard in den head soll und nicht wo anderst hin 😉



  • Mein Problem war, dass der header schon gesendet wurde, da ich ja z.b. text ausgegeben habe und ne variable mit nem wert belegt habe, die ich dann an die url ranhänge.
    Wie geht das mit dem ob_start() usw. denn?



  • <?php
    ob_start();
    
    // some code
    ?>
    <html>
    <head>
    ...
    <?php
    
    setcookie("bla","...)
    
    ob_flush(); // header werden gesendet und text wird ausgegeben
    ?>
    

Anmelden zum Antworten