Groggy: SelfHTML Formmailer funktioniert nicht mit Include

Hallo erstmal,

naja, meine Frage steht im Titel, der Formmailer funktioniert mit meinem Includescript nicht, d.h. es wird nix gesendet. Wenn ich ihn aber so aufrufe geht es.

Hier das Script (mit einem ganz normalen Include geht es):

<?php
   $page = $_GET["page"];

$homepage = "page/home.htm";

if($page == '')
   {
    include $homepage;
   }
   else
   {
    $pagehtm = $page.".htm";
    $pagephp = $page.".php";

if(file_exists($pagehtm))
    {
     include $pagehtm;
    }
    else if(file_exists($pagephp))
    {
     include $pagephp;
    }
    else
    {
     include $homepage;
    }
   }
  ?>

  1. Hi,

    naja, meine Frage steht im Titel,

    ich gehe davon aus, Du meinst diesen Formmailer.

    der Formmailer funktioniert mit meinem Includescript nicht, d.h. es wird nix gesendet.

    was ganz klar ist... das Script ist nicht für eine solche Einbindung konzipiert, was zu folgenden Problemen führt:

    <form action="<?php print $_SERVER['PHP_SELF']; ?>" method="post">
    wird die Daten an Deine Index-Datei senden, die damit nichts anfangen kann.

    header("Location: $strReturnhtml");
    funktioniert auch nur, wenn zuvor keinerlei HTML-Output erfolgt ist. Ich vermute aber, dass Deine Indexdatei vor dem include schon irgendwas ausgegeben hat. Falls ja, dann wäre natürlich auch das HTML-Grundgerüst aus dem Formmailer-Quelltext zu entfernen.

    Davon abgesehen solltest Du Dein "Include-Script" überarbeiten:

    $page = $_GET["page"];

    das wirft ggfls. eine Fehler-Notice aus.

    $homepage = "page/home.htm";

    wozu das Verzeichnis und dann noch im Query-String? Was passiert beim direkten Aufruf von "page/home.htm" und was bei "page/"?

    include $homepage;

    enthält diese Datei überhaupt PHP-Code, so dass ein include erforderlich ist?

    $pagehtm = $page.".htm";

    dito. readfile() dürfte sinnvoller sein.

    else
        {
         include $homepage;
        }

    was soll denn das? In diesem Fall sollte doch wohl eine ordentliche Fehlerseite ausgegeben werden!

    freundliche Grüße
    Ingo

    1. Davon abgesehen solltest Du Dein "Include-Script" überarbeiten:

      $page = $_GET["page"];
      das wirft ggfls. eine Fehler-Notice aus.

      $homepage = "page/home.htm";
      wozu das Verzeichnis und dann noch im Query-String? Was passiert beim direkten Aufruf von "page/home.htm" und was bei "page/"?

      bei page passiert nix, beim direkten aufuf wird eben page/home.htm angezeigt

      include $homepage;
      enthält diese Datei überhaupt PHP-Code, so dass ein include erforderlich ist?

      Nö, aber es muss ja nicht erforderlich sein, um es zu benutzen.

      $pagehtm = $page.".htm";
      dito. readfile() dürfte sinnvoller sein.

      Inwiefern? Beispielcode?

      else
          {
           include $homepage;
          }
      was soll denn das? In diesem Fall sollte doch wohl eine ordentliche Fehlerseite ausgegeben werden!

      Hmm stimmt, werde ich bei Gelegenheit überarbeiten.

      freundliche Grüße
      Ingo

      aber wie könnte man den Formmailer so überarbeiten, dass es klappt? Headerweiterleitung brauch ich eigentlich nicht, hab ich bei mir auch rausgemacht.

      MFG
      Groggy

      1. Hi,

        bei page passiert nix, beim direkten aufuf wird eben page/home.htm angezeigt

        wieso nix? Und page/home.htm anzeigen zu lassen ist Murks bzgl. Suchmaschinen.

        enthält diese Datei überhaupt PHP-Code, so dass ein include erforderlich ist?
        Nö, aber es muss ja nicht erforderlich sein, um es zu benutzen.

        Du kannst auch mit dem Auto zum Supermarkt um die Ecke fahren... Ich mache das jedoch nur, wenn ich z.B. ein Paar Wasserkästen zu schleppen hätte.

        aber wie könnte man den Formmailer so überarbeiten, dass es klappt? Headerweiterleitung brauch ich eigentlich nicht, hab ich bei mir auch rausgemacht.

        Du musst das Formular zum einen an die richtige URL mit query-String schicken und zum anderen die Bestätigung direkt ausgeben anstatt weiter zu leiten.

        freundliche Grüße
        Ingo

        1. Hi,

          bei page passiert nix, beim direkten aufuf wird eben page/home.htm angezeigt
          wieso nix? Und page/home.htm anzeigen zu lassen ist Murks bzgl. Suchmaschinen.

          »»

          wieso soll da was passieren? die datei page.htm/page.php gibts nicht, also wird $homepage angezeigt

          enthält diese Datei überhaupt PHP-Code, so dass ein include erforderlich ist?
          Nö, aber es muss ja nicht erforderlich sein, um es zu benutzen.
          Du kannst auch mit dem Auto zum Supermarkt um die Ecke fahren... Ich mache das jedoch nur, wenn ich z.B. ein Paar Wasserkästen zu schleppen hätte.

          wie soll ich denn sonst eine html-datei dynamisch einbinden?

          Du musst das Formular zum einen an die richtige URL mit query-String schicken und zum anderen die Bestätigung direkt ausgeben anstatt weiter zu leiten.

          hast du da mal beispielcode?

          1. Hi,

            bei page passiert nix, beim direkten aufuf wird eben page/home.htm angezeigt
            wieso nix? Und page/home.htm anzeigen zu lassen ist Murks bzgl. Suchmaschinen.

            wieso soll da was passieren? die datei page.htm/page.php gibts nicht, also wird $homepage angezeigt

            Also werde weder ich als Nutzer noch ein Suchmaschinenrobot vernuenftig darueber informiert, dass das angeforderte Dokument nicht (mehr) vorhanden ist - sondern kommentarlos auf die Startseite weitergeleitet.

            Das *ist* Murks. In so einem Falle sollte eine 404-Fehlerseite kommen, die mich darueber informiert.

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
          2. Hi,

            enthält diese Datei überhaupt PHP-Code, so dass ein include erforderlich ist?
            Nö, aber es muss ja nicht erforderlich sein, um es zu benutzen.
            Du kannst auch mit dem Auto zum Supermarkt um die Ecke fahren... Ich mache das jedoch nur, wenn ich z.B. ein Paar Wasserkästen zu schleppen hätte.

            wie soll ich denn sonst eine html-datei dynamisch einbinden?

            readfile();

            Du musst das Formular zum einen an die richtige URL mit query-String schicken und zum anderen die Bestätigung direkt ausgeben anstatt weiter zu leiten.
            hast du da mal beispielcode?

            Du solltest doch selbst wissen, wie die URL zur "Seite" auszusehen hat.

            freundliche Grüße
            Ingo

            1. Hi,

              enthält diese Datei überhaupt PHP-Code, so dass ein include erforderlich ist?
              Nö, aber es muss ja nicht erforderlich sein, um es zu benutzen.
              Du kannst auch mit dem Auto zum Supermarkt um die Ecke fahren... Ich mache das jedoch nur, wenn ich z.B. ein Paar Wasserkästen zu schleppen hätte.

              wie soll ich denn sonst eine html-datei dynamisch einbinden?
              readfile();

              Du musst das Formular zum einen an die richtige URL mit query-String schicken und zum anderen die Bestätigung direkt ausgeben anstatt weiter zu leiten.
              hast du da mal beispielcode?
              Du solltest doch selbst wissen, wie die URL zur "Seite" auszusehen hat.

              freundliche Grüße
              Ingo

              naja aber wie man das dann macht weiß ich nicht

              MFG
              Groggy

              1. Hi,

                Du solltest doch selbst wissen, wie die URL zur "Seite" auszusehen hat.

                naja aber wie man das dann macht weiß ich nicht

                wo siehst Du ein Problem, die URL aus der Browserzeile der angezeigten Seite in das action-Attribut zu übertragen?

                freundliche Grüße
                Ingo

                1. Hi,

                  Du solltest doch selbst wissen, wie die URL zur "Seite" auszusehen hat.

                  naja aber wie man das dann macht weiß ich nicht
                  wo siehst Du ein Problem, die URL aus der Browserzeile der angezeigten Seite in das action-Attribut zu übertragen?

                  freundliche Grüße
                  Ingo

                  In dem Code xD

                  ich kann nicht so gut PHP

                  1. Hi,

                    wo siehst Du ein Problem, die URL aus der Browserzeile der angezeigten Seite in das action-Attribut zu übertragen?

                    In dem Code xD

                    ich kann nicht so gut PHP

                    brauchst Du dazu auch gar nicht. Du suchst den <form>-Tag und trägst in action="" die im Browser angezeigte URL ein.

                    freundliche Grüße
                    Ingo