Macangelo: PHP-Funktion zum Aufruf einer URL

Hi,

bin PHP-Anfänger. Ich will, das am Ende eines Scriptes automatische (ohne klicken) eine URL aufgerufen wird. Mit welcher Funktion geht das?

Herzlichen Dank

  1. Hi,

    bin PHP-Anfänger. Ich will, das am Ende eines Scriptes automatische (ohne klicken) eine URL aufgerufen wird. Mit welcher Funktion geht das?

    das ist zu ungenau. Bitte beischreibe war Du machen möchtest.

    Soll das Script (der Server) eine bestimmte Adresse kontaktieren?
    Soll das Script durch HTTP-Header den Client bitten eine andere Adresse aufzusuchen?

    Gruß aus Berlin!
    eddi

    --
    Manchmal trifft es einen doch ganz unverhofft t86591:
    > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
    Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
    1. Danke für die schnelle Antwort

      Zunächst wird im Browser ein Kontaktformular angezeigt. Nachdem ein Script abgearbeitet ist, das mir eine Mail mit den eingetragenen Info schickt, soll im Browser eine andere Seite (z.B. www.beimir.de/danke.html) angezeigt werden.

      gruß

      Macangelo

      1. Hallo Macangelo,

        Zunächst wird im Browser ein Kontaktformular angezeigt. Nachdem ein Script abgearbeitet ist, das mir eine Mail mit den eingetragenen Info schickt, soll im Browser eine andere Seite (z.B. www.beimir.de/danke.html) angezeigt werden.

        FrankieB hatte Dich schon auf header() hingewiesen, für das was Du dort vorhast findes ich zunächst ausreichend, wenn Du einfach aus Deiner danke.html einfach eine danke.php machst.

        Gruß aus Berlin!
        eddi

        --
        Manchmal trifft es einen doch ganz unverhofft t86591:
        > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
        Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
        1. Hi Eddi,

          Danke für Deine Hilfe. Ich war mal wieder nicht präzise genug. Die Url, die ich aufrufe ist ein Seitenaufruf innerhalb eines CMS über die Abfrage eines Alias. Ich habe es wie bei Frankie geschrieben hingekriegt. Das ganze Script und eine weitere Frage ist da.

          Ganz herzlichen Dank

          macangelo

  2. Hallo,

    bin PHP-Anfänger. Ich will, das am Ende eines Scriptes automatische (ohne klicken) eine URL aufgerufen wird. Mit welcher Funktion geht das?

    Alles was Du dazu wissen musst, steht hier:

    http://de3.php.net/manual/de/function.header.php

    Grüsse
    Frankie

    1. Danke für den Link! ( Wenn man weiß, wie das heißt, wonach man sucht ...)

      Ich habe gelesen und dann

      header("Location: http://www.eyelikeit.de/");

      geschrieben - allerdings funktioniert das nicht. Was mache ich falsch?

      Herzlichen Dank

      1. Hallo,

        header("Location: http://www.eyelikeit.de/");

        geschrieben - allerdings funktioniert das nicht. Was mache ich falsch?

        Aus der Doku:
        "[...]
        Beachten Sie, dass header() aufgerufen werden muss, bevor eine Ausgabe gesendet wurde, egal ob normale HTML Tags, leere Zeilen in einer Datei oder von PHP. Ein weit verbreiteter Fehler ist mittels include(), require(), oder anderen Dateizugriffsmethoden Code zu lesen, und so unbewusst Leerzeichen oder Leerzeilen auszugeben, bevor header() aufgerufen wird. Das gleiche Problem besteht auch bei Verwendung einer einzigen PHP/HTML Datei.
        [...]"

        Hast Du das ganz genau durchgelesen und auch verstanden?

        Nachdem ich deine Anwort auf XaraXs Posting gelesen habe, denke ich, dass es vielleicht einfacher wäre, schon beim Absenden des Formulars auf die Dankesseite umzuleiten ...

        Grüsse
        Frankie

        1. Hi Frankie,

          Gelesen habe ich es jetzt. Verstanden? ich bin nicht sicher.

          Ich habe meine Zeile ganz an den Anfang des Scriptes gesetzt - und mit der Weiterleitung zum "Danke" funktioniert das.

          Jetzt will ich aber noch weiter: ich habe 3 Fehlermeldungen mit if-Abfragen. Ich möchte statt der (hässlichen) echo-Ausgaben auch auf eigene Fehlerseiten weiterleiten, z.B. z www.badort.com/index.php?de_error_email

          Ich hänge mal das ganze Script an um den Nebel zu lupfen. Ganz herzlichen Dank für Deine Hilfe!

          <?php
          header("Location: http://www.badort.com/index.php?de_danke");
          echo
          '<head>
          <title>KONTAKTFORMULAR</title>
          <meta name="author" content="Uwe Twelker">
          <link href="phpwcms_template/inc_css/frontend.css" rel="stylesheet" type="text/css">
          </head>';
          echo '<table align="center" height="200"><tr><td align="center" valign="center">';
          //Fehlerbehandlung
          if($konfirstname==''){$fehler=1;
          echo'Sie haben keinen Vornamen eingegeben.<br><br>';}
          if($konname==''){$fehler=1;
            echo'Sie haben keinen Namen eingegeben.<br><br>';}
          if (!eregi("[1]+@([0-9a-z][0-9a-z-]+.)+[a-z]{2,3}$",$konemail)){$fehler=1;
          echo 'Die von Ihnen angegebene Mailadresse ist ungültig.<br><br>';}
          if($fehler==1){echo '<br><a class=link href=javascript:history.back()>Zurück</a>';}
          echo'</td></tr></table>';
          if($fehler!=1){
          $konbetreff1='Anfrage von Web-Site www.badort.com';//$konbetreff;
          // Tragen Sie hier Ihre E-Mailadresse ein

          mail("uwe.twelker@eyelikeit.de",
               "$konbetreff1",
          "Vorname: $konfirstname\n
          Name: $konname\n
          Straße: $konstreet\n
          PLZ / Ort: $konplz $koncity\n
          Land: $koncountry\n
          Email: $konemail\n
          Nachricht: $konnotice\n",
               "From: $konemail ($konfirstname $konname)",
               "-f $konemail");
          //echo'<body>';

          // Hier können Sie den Text, welcher nach dem Abschicken erscheinen soll, eintragen
          header("Location: http://www.eyelikeit.de/");
          exit;
          echo'<br><br><center><table border="0">
          <tr><td>Vielen Dank für Ihre Anfrage, wir werden Sie  so schnell wie möglich bearbeiten. </br></br> Ihr Badort-Team</font></br></br><center><a class=link href=javascript:history.go(-1)>Zurück</a></td></tr></table>';
          }
          ?>


          1. _.0-9a-z- ↩︎

          1. Hi,

            Wenn es Funktioniert, wie Du mir unten <./?t=87928&m=523432> geschrieben hattes, dann besteht kein Grund zur Annahme, das es auch in den if-Anweisungen nicht funktionert.

            Statt alles mit echo zu prompten, solltest Du puffern - Du füllst beispielsweise eine Variabele $text.='' und läßt sie erst am Ende ausgeben (echo $text;).
            Günstig ist in diesem Zusammenhang auf exit() http://de3.php.net/manual/de/function.exit.php zurückzugreifen, sodaß der PHP-Prozess sofort geschlossen wird.

            Gruß aus Berlin!
            eddi

            --
            Manchmal trifft es einen doch ganz unverhofft t86591:
            > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
            Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
            1. Ich glaube, ich habe ein logisches Problem. Wenn ich die Header-Funktion an den Anfang des Scriptes schreibe, klappt es. Aber, wenn ich sie nach der If-Abfrage schreibe - und da macht es ja erst Sinn, weil sich da erst entscheidet, ob ich die Danke-Seite oder eine der Fehlerseiten ausgeben will - klappt es nicht...

              Danke für Deine Geduld

              Macangelo

              1. Hallo Macangelo.

                ######### DOKUMENTENANFAN IM EDITOR ################
                <?php

                hier prüfst Du ab

                ?>
                <!Doctype ~>
                <html>
                 <!--- usw. -->

                ######### DOKUMENTENANFAN IM EDITOR ################

                <?php

                Das alleine reicht schon aus. Eine wir auch immer geartetes Zeichen oder auch eine Ausgabe von PHP (eine Fehlermeldung oder echo) reicht aus, um die ausgabe von header() zunichte zu machen.

                Gruß aus Berlin!
                eddi

                --
                Manchmal trifft es einen doch ganz unverhofft t86591:
                > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
                Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
                1. (Ich glaube ich habe heute ein Brett vor dem Kopf): Wo käme den in Deinem Modell meine Header-Funktion hin? Gibt es eine alternative der Weiterleitung zu Header? Und - dürfte ich Dich anrufen? Vielleicht ist das ja einfacher... (twelker@web.de)

                  Gruß Macangelo

                  ######### DOKUMENTENANFAN IM EDITOR ################
                  <?php

                  hier prüfst Du ab

                  ?>
                  <!Doctype ~>
                  <html>
                   <!--- usw. -->

                  ######### DOKUMENTENANFAN IM EDITOR ################

                  <?php

                  Das alleine reicht schon aus. Eine wir auch immer geartetes Zeichen oder auch eine Ausgabe von PHP (eine Fehlermeldung oder echo) reicht aus, um die ausgabe von header() zunichte zu machen.

                  Gruß aus Berlin!
                  eddi

                  1. Moin Macangelo,

                    ######### DOKUMENTENANFAN IM EDITOR ################
                    <?php

                    hier prüfst Du ab

                    Was könnten Dir diese vier Worte sagen, wenn wir vorhin von if-Anweisungen geredet haben, die bedinkte hHTTP-Header setzen sollen?

                    ?>
                    <!Doctype ~>
                    <html>
                    <!--- usw. -->

                    Gruß aus Berlin!
                    eddi

                    --
                    Manchmal trifft es einen doch ganz unverhofft t86591:
                    > '..."Vorläufig abgebrochen" ist ungefähr so sinnvoll formuliert, wie "einstweilig erschossen" oder "temporär verbrannt"...'
                    Ich danke Sven für diese Erkenntnis - Gott, was habe ich gelacht ;)
                  2. Hello,

                    (Ich glaube ich habe heute ein Brett vor dem Kopf): Wo käme den in Deinem Modell meine Header-Funktion hin? Gibt es eine alternative der Weiterleitung zu Header? Und - dürfte ich Dich anrufen? Vielleicht ist das ja einfacher... (twelker@web.de)

                    Hier ist heute großes Grillfest und ich bin mit der Trompete unterwegs. Aber schreib doch einfach ein eMail mit Deinen Daten und wenn ich mit dem Blasen fertig bin und noch einigermaßen nüchtern, dann rufe ich Dich an. Sonst eben morgen ;-)

                    Tom

                    --
                    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                    Nur selber lernen macht schlau
                  3. Hallo,

                    so, jetzt bin ich wieder da und wollte mal nachfragen ob's schon klappt ;-)

                    (Ich glaube ich habe heute ein Brett vor dem Kopf): Wo käme den in Deinem Modell meine Header-Funktion hin? Gibt es eine alternative der Weiterleitung zu Header? Und - dürfte ich Dich anrufen? Vielleicht ist das ja einfacher... (twelker@web.de)

                    Natürlich gibt es alternative Möglichkeiten dein Unterfangen umzusetzen, welche vielleicht für den Einstieg auch besser geeignet sind.

                    Schreib einfach mal wie weit Du schon bist bzw. wie Du es gelöst hast. Das wäre für andere, die diesen Thread irgendwann mal lesen sicher auch interessant.

                    Grüsse
                    Frankie

              2. Hello,

                Ich glaube, ich habe ein logisches Problem. Wenn ich die Header-Funktion an den Anfang des Scriptes schreibe, klappt es. Aber, wenn ich sie nach der If-Abfrage schreibe - und da macht es ja erst Sinn, weil sich da erst entscheidet, ob ich die Danke-Seite oder eine der Fehlerseiten ausgeben will - klappt es nicht...

                Wenn Du mit header() arbeiten willst, darfst du einfach keine Ausgaben "freilassen", bevor alles entschieden ist. Das erreicht nman am besten dadurch, dass man sich für die eigentliche Ausgabe ein HTML-Template baut, in dem alle Ausgaben drinstehen:

                <?php  ### scriptaufbau.php ###

                #-----------------------------------------------

                Include & Declaration Ssection

                #-----------------------------------------------

                $title = '';
                $keywords = '';
                $description = '';
                $bodyclass = '';
                $pagecontent = '';

                #-----------------------------------------------

                Process Section

                #-----------------------------------------------

                $title = 'logischer Scriptaufbau';
                $bodyclass = 'green';
                $pagecontent .= '<p>klarer geht es nicht</p>';

                #-----------------------------------------------

                Last Decision Section

                #-----------------------------------------------

                if(isset($_GET['url']) and !headers_sent())
                {
                  header("Location: http://".$_GET['url']);
                  exit;               ## keine weiteren Ausgaben
                }

                ################################################

                HTML Output Section

                ################################################
                ?>
                <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
                <HTML>
                <HEAD>
                  <TITLE><?php echo $title; ?></TITLE>
                  <META NAME="Keywords" CONTENT="<?php echo $keywords; ?>">
                  <META NAME="Description" CONTENT="<?php echo $description; ?>">

                <style type="text/css">
                  <!--
                  .green
                  {
                    background-color:#CCFFCC;
                    margin:10px;
                    color:#008000;
                    font-family:Century Gothic, Arial, sans-serif;
                    font-size:150%;
                  }
                  -->
                  </style>

                </HEAD>

                <BODY class="<?php echo $bodyclass; ?>">

                <?php echo $pagecontent; ?>

                </BODY>
                </HTML>

                Vor der HTML-Output-Section darf es kein echo() oder print() geben.
                Wenn man sich konsequent an diesen Aufbaunhält, kann nichts mehr schief gehen.

                Ruf das Script mal normal auf mit

                scriptaufbau.php

                und dann mal mit dem Paramter

                scriptaufbau.php?url=bitworks.de

                Dann siehst Du den Unterschied.

                Wichtig ist noch, dass VOR dem '<?php' weder irgend ein Zeichen noch ein Zeilumbruch stehen darf.
                Wenn Du Dateien mit include() oder require() einbindest, dürfe diese keinerlei Zichen VOR dem '<?php' und NACH dem '?>' mehr haben.

                Harzliche Grüße aus http://www.annerschbarrich.de

                Tom

                --
                Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
                Nur selber lernen macht schlau