mathefritz: neue Seite unmittelbar aus phpSkritp starten

ist es möglich aus einem phpSkript heraus direkt eine neu url aufzurufen ? Im gleichen Browserfenster ?

  1. Tach!

    ist es möglich aus einem phpSkript heraus direkt eine neu url aufzurufen ?

    Nein. Du kannst lediglich dem Browser eine Weiterleitung vorschlagen. Das geht über Location-Header mit Statuscode 30x oder zur Not im HTML-Dokument über ein Meta-Element.

    dedlfix.

  2. Hallo

    ist es möglich aus einem phpSkript heraus direkt eine neu url aufzurufen ? Im gleichen Browserfenster ?

    Ja. Liefere über das PHP-Skript einen HTTP-Header für eine Weiterleitung aus. Aber bedenke, dass das Skript vor einem HTTP-Header keinerlei Ausgabe an den Browser gesendet haben darf. Das ist also nur praktikabel, wenn du im Skript eine pure Verarbeitung ohne Ausgabe durchführst.

    Wenn du doch eine Ausgabe in Form eines HTML-Dokuments generierst, kannst du im Header des HTML-Dokuments eine Meta-Weiterleitung notieren. Die wird aber stumpf nach einer gewissen Zeit ausgeführt, egal, ob man den Inhalt des Dokuments fertig aufgenommen hat, oder nicht. Alternativ kannst du ganz klassisch und so richtig Web-1.0-mäßig einen Link anbieten, dem man als Anwender folgen kann.

    Tschö, Auge

    --
    Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
    Toller Dampf voraus von Terry Pratchett
  3. Klar geht das. Du kannst aus einem PHP-Script jede beliebige URL aufrufen, mit CURL, file_get_contents() oder fopen() z.B., so weit fopen_wrappers aktiviert, bzw. CURL mit einkompiliert ist, das siehst du dann in phpinfo(). Mit der Quelle des Requests, z.B. mit dem Browserfenster, hat das aber erstmal nichts zu tun.

    1. Hallo

      Klar geht das. Du kannst aus einem PHP-Script jede beliebige URL aufrufen, mit CURL, file_get_contents() oder fopen() z.B., so weit fopen_wrappers aktiviert, bzw. CURL mit einkompiliert ist, das siehst du dann in phpinfo(). Mit der Quelle des Requests, z.B. mit dem Browserfenster, hat das aber erstmal nichts zu tun.

      Und damit, den hinter der URL steckenden Inhalt (ohne weitere Handstände) im Browser anzuzeigen, hat das auch nichts zu tun.

      … aus einem phpSkript heraus direkt eine neu url aufzurufen? Im gleichen Browserfenster?

      (Entfernung der Plenks von mir)

      Der Aufruf einer URL war die Anforderung in der Ausgangsfrage.

      Tschö, Auge

      --
      Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
      Toller Dampf voraus von Terry Pratchett
      1. Ja genau, das alles macht z.B. file_get_contents. Es ruft die URL im PHP Script auf. Anzeige im Browser war keine Anforderung.

        1. Hallo

          Ja genau, das alles macht z.B. file_get_contents. Es ruft die URL im PHP Script auf. Anzeige im Browser war keine Anforderung.

          Auch wenn ich es bereits zitiert hatte (Entplenkung und Hervorhebung durch mich):

          … direkt eine neu url aufzurufen? Im gleichen Browserfenster?

          Wenn ich eine URL im Browserfenster aufrufe, rechne ich mit einer Ausgabe in selbigem. du nicht?

          Tschö, Auge

          --
          Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
          Toller Dampf voraus von Terry Pratchett
          1. Nein, wozu? Dann sehe ich doch nur HTML-Matsch, wenn alle externen Medien fehlen. FALLS da überhaupt HTML rauskommt, wer weiss was hinter der URL steckt... Also wenn, dann will ich das intern weiterverarbeiten. Aber es geht nicht um dich und nicht um mich. Wenn er das nicht sagt, fange ich nicht an rum zu raten. Wenn er das will, wird er das schon sagen.

            1. Hallo

              Nein, wozu? Dann sehe ich doch nur HTML-Matsch, wenn alle externen Medien fehlen. FALLS da überhaupt HTML rauskommt, wer weiss was hinter der URL steckt...

              De OP sollte das wissen.

              Also wenn, dann will ich das intern weiterverarbeiten.

              Dann will ich das aber auch nicht im Browser aufrufen.

              Aber es geht nicht um dich und nicht um mich. Wenn er das nicht sagt, fange ich nicht an rum zu raten. Wenn er das will, wird er das schon sagen.

              Er hat es gesagt und ich habe das zweimal zitiert. Er will aus einem laufenden Skript heraus eine neue URL im Browser aufrufen. Das mache zumindest ich nur, wenn ich da auch etwas anzeigen lassen will, sonst nicht.

              Tschö, Auge

              --
              Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
              Toller Dampf voraus von Terry Pratchett
              1. Dann hast du es zwei mal falsch zitiert. Er will eine URL im PHP-Script aufrufen. Dass sein Browserfensters für den Request offen bleibt ist was völlig anderes. Von Ausgabe steht da nichts.

                1. Melde Dich, Oh Fritz, und mache diesem unseligen Streit ein Ende!

                  Bis dahin sehe ich es genau wie Auge...

                  Rolf

              2. Das mache zumindest ich nur, wenn ich da auch etwas anzeigen lassen will, sonst nicht.

                Du. Manche machen das um wild Cookies zu setzen und um den Browser dann wieder weiterzuschicken.

                Ihr habt neben header() und <meta > noch Javascript vergessen:

                <script>
                window.location.href="NeueUrl";
                </script>
                
                1. Hallo,

                  Javascript vergessen:

                  du meinst das phpSkritp.js?

                  Gruß
                  Kalk

                  1. du meinst das phpSkritp.js?

                    mit

                    <script>
                    window.location.href="<?=$NeueUrl;?>";
                    </script>
                    

                    ist es genau das... Du musst nur dafür sorgen, dass 'phpSkritp.js' auch PHP abgearbeitet und der korrekte Mime-Typ (in dem Fall HTML) gesendet wird.

  4. hallo und danke allen, war inzwischen anderweitig in Anspruch genommen . Hab vergessen dazuzusagen, das ich die aufzurufende Seite nicht xbeliebig sein soll sondern sie selbst gestalten kann.
    Inwzischen werde ich es wohl anders lösen.
    Aber,
    vielleicht ginge es, noch nicht probiert, die Seite mit include aufzurufen, bevor die Ruferin code erzeugt hat,
    und
    nach dem include einen goto ende und vor </body></html>

    <?php end:
    ?>
    
    1. Tach!

      Inwzischen werde ich es wohl anders lösen.

      Es wäre sehr schön, wenn du noch aufklären könntest, was du nun wirklich gemeint hast.

      Aber, vielleicht ginge es, [...]

      Was genau willst du erreichen?

      dedlfix.

      1. was ich genau erreichen will kann ich noch nicht sagen, aber was ich jetzt probiert habe
        funktionier wie ich es wollte.

        Datei Rufer, Minimalbeispie, entscheidet wie's weitergeht

        <?php error_reporting(E_ALL);
        
         if  (TRUE) include 'FuRCR.php';
        
         if (TRUE) goto ziel;
        ?>
        <!DOCTYPE html><html><meta chaset="utf-8">
        <body>
         das soll nicht zu sehen sein<br>
        
        <?php
        ziel:;
        ?>
        
        </body></html>
        

        Datei FuRCR.php

        <?php 
          echo 'zzz das soll sichtbar sein<br>';
        ?>
        <!DOCTYPE html><html><meta chaset="utf-8"><head></head>
        <body>
         das soll auch zu sehen sein<br>
        </body></html>
        
        1. Tach!

          was ich genau erreichen will kann ich noch nicht sagen, aber was ich jetzt probiert habe funktionier wie ich es wollte.

          Das ergibt aber ungültiges HTML. Mir scheint eher, dass du deine Ausgabe zu steuern versuchst, anhand von bestimmten Bedingungen. Und mir scheint, dass du es mal mit dem EVA-Prinzip probieren solltest. Eingabe, Verarbeitung, Ausgabe. Du holst dir zunächst deine Engabedaten - dafür ist in PHP nichts weiter zu tun, die sind ja bereits in $_POST und Konsorten zu finden. Dann verarbeitest du diese Daten, ohne dir um die konkrete Art der Ausgabe Gedanken zu machen. Erst wenn alle Daten fertig berechnet vorliegen, erstellst du die Ausgabe. Du wirst dazu vielleicht die eine oder andere Hilfsvariable benötigen, mit der du steuern kannst, ob diese oder jene Sektion in der Ausgabe erscheinen soll. Das musst du im Verarbeitungsteil berücksichtigen, solange sich diese Information nicht aus den sowieso schon vorliegenden Daten ergibt.

          Zum Beispiel prüfst du eine Formulareingabe. Dabei stellst du fest, dass der Anwender Fehler gemacht hat. Du erzeugst dafür nicht sofort eine Ausgabe, sondern sammelst diese Meldungen erst einmal im Array $errors.

          <?php
          
          $errors = [];
          if (fehler1)
            $errors[] = 'Fehlermeldungstext 1';
          if (fehler2)
            $errors[] = 'Fehlermeldungstext 2';
          

          Wenn du dann im Ausgabe-Teil angekommen bist, kannst du mit !empty($errors) entscheiden, ob du den Block für die Fehlermeldungen anzeigen musst und gehst dann mit einer Schleife über das Array, um die Meldungen auszugeben.

          ?>
          <!doctype html>
          <html>
          <head>
            <title>EVA-Prinzip-Beispiel</title>
          </head>
          <body>
          <?php if (!empty($errors)): ?>
            <ul>
            <?php foreach ($errors as $error): ?>
              <li><?=$error ?></li>
            <?php endforeach; ?>
            </ul>
          <?php endif; ?>
          </body>
          </html>
          

          Du kannst auch im V-Teil die Entscheidung berechnen, welches Template geladen werden soll, wenn es mehrere Möglichkeiten gibt.

          $entscheidung = soll_template1_verwendet_werden();
          
          …
          
          ?>
          <!doctype html>
          <html>
          <head>...</head>
          <body>
          <?php
          if ($entscheidung)
            include 'template1';
          else
            include 'template2';
          ?>
          </body>
          </html>
          
          

          dedlfix.