Thomas L.: HTTP 1.1 Header auslesen

Hallo zusammen!!

Ich habe leider nichts gefunden, deshalb poste ich mein Thema mal bei euch im Forum. Ich hoffe ihr könnt mir helfen:

Ich möchte für den Webserver in unserer Firma ein Programm machen, dass wie dieses "MSN Search" funktioniert, also sagen wir mal, der Kunde gibt eine URL falsch ein, z.B. www.hinkelbein,de, dann soll halt eine Seite erscheinen die sagt,
"Sie haben die URL falsch eingegeben, bitte korrigieren sie diese und tragen Sie eine neue ein."
Dann ein textfeld wo die URL falsch drin steht und ein Button wo er draufdrücken kann, wenn er die URL korrigiert hat.
Bei MSN sieht das so aus: http://search.msn.de/results.asp?cfg=DNSERROR&v=1&FORM=DNSERR&q=www%2Ejale%2Cde
Hat irgendjemand eine Ahnung, wie ich das machen soll?
Wäre echt nett!

Danke im Voraus
Gruß, Thomas

  1. Das Script muß einen Socket mit der Funktion fsockopen() zum Zielserver öffnen und auf diesem Socket dann einen HTTP POST-Request simulieren.

    Anbei ein vollständiges Beispiel, das mit CGI-PHP auf der Unix-Kommandozeile verwendet werden kann. Das Script fälscht Einträge in einer Abstimmung auf dem Host www.linux.com, wo es für PHP als beste Scriptsprache stimmt.

    <?php

    function PostToHost($host, $path, $referer, $data_to_send) {
      $fp = fsockopen($host,80);
      printf("Open!\n");
      fputs($fp, "POST $path HTTP/1.1\n");
      fputs($fp, "Host: $host\n");
      fputs($fp, "Referer: $referer\n");
      fputs($fp, "Content-type: application/x-www-form-urlencoded\n");
      fputs($fp, "Content-length: ".strlen($data_to_send)."\n");
      fputs($fp, "Connection: close\n\n");
      fputs($fp, "$data_to_send\n");
      printf("Sent!\n");
      while(!feof($fp)) {
          $res .= fgets($fp, 128);
      }
      printf("Done!\n");
      fclose($fp);

    return $res;
    }

    $data = "pid=14&poll_vote_number=2";

    printf("Go!\n");
    $x = PostToHost(
                  "www.linux.com",
                  "/polls/index.phtml",
                  "http://www.linux.com/polls/index.phtml?pid=14",
                  $data
    );

    trace

    Hallo zusammen!!

    Ich habe leider nichts gefunden, deshalb poste ich mein Thema mal bei euch im Forum. Ich hoffe ihr könnt mir helfen:

    Ich möchte für den Webserver in unserer Firma ein Programm machen, dass wie dieses "MSN Search" funktioniert, also sagen wir mal, der Kunde gibt eine URL falsch ein, z.B. www.hinkelbein,de, dann soll halt eine Seite erscheinen die sagt,
    "Sie haben die URL falsch eingegeben, bitte korrigieren sie diese und tragen Sie eine neue ein."
    Dann ein textfeld wo die URL falsch drin steht und ein Button wo er draufdrücken kann, wenn er die URL korrigiert hat.
    Bei MSN sieht das so aus: http://search.msn.de/results.asp?cfg=DNSERROR&v=1&FORM=DNSERR&q=www%2Ejale%2Cde
    Hat irgendjemand eine Ahnung, wie ich das machen soll?
    Wäre echt nett!

    Danke im Voraus
    Gruß, Thomas

    1. Hi Trace!!
      Erstmal vielen vielen dank für deine Antwort und dem Script!!
      Kann ich es so abändern, dass ich es in eine HTML Seite einbinden kann?
      Ich bin nämlich ehrlich gesagt blutiger PHP-Newbie...
      Gruß, Thomas

      1. Hi Trace!!
        Erstmal vielen vielen dank für deine Antwort und dem Script!!
        Kann ich es so abändern, dass ich es in eine HTML Seite einbinden kann?

        also du kannst die html seite als php umwandeln und dann mit der routine prüfen ob es die seite gibt

        Ich bin nämlich ehrlich gesagt blutiger PHP-Newbie...
        Gruß, Thomas

        1. OK hab vielen Dank!!!
          Gruß, Thomas

  2. Moin,

    Ich möchte für den Webserver in unserer Firma ein Programm machen, dass wie dieses "MSN Search" funktioniert, also sagen wir mal, der Kunde gibt eine URL falsch ein, z.B. www.hinkelbein,de, dann soll halt eine Seite erscheinen die sagt,
    "Sie haben die URL falsch eingegeben, bitte korrigieren sie diese und tragen Sie eine neue ein."

    Du willst also, dass wenn jemand in eurerer Firma einen Netznamen falsch eingibt, er eine schönere Fehlermeldung kriegt?

    Da gibt es erstmal 3 Eingriffspunkte:
    1. Wenn alle in eurer Firma über einen DNS-Server gehen, und du diesen kontrollieren kannst, dann könntest du ihn dahingehend modifizieren, dass er für alle DNS-Anfragen die er nicht auflösen kann, eine bestimmte internet IP-Addresse (mit sehr kurzer Lebenszeit) rausgibt und dort sollte dann ein Webserver lauschen der alle Anfragen entgegennimmt und auf ein PHP-Skript umleitet. Das kann dann den ursprünglich eingegebenen Hostnamen (zum Beispiel aus $HTTP_HOST) und URI (zum Beispiel aus $REQUEST_URI) auslesen und damit machen was du willst.
    2. Wenn alle über einen Proxy gehen, kannst du diesen in ähnlicher Weise konfigurieren, so dass alle nicht beantwortbaren Anfragen (möglichst transparent, also so dass der alte URL noch in der Addresszeile stehenbleibt) auf einen entsprechend konfigurierten Webserver umgeleitet werden.
    3. Wenn du das genauso wie MSN Search haben willst, musst du den Browser den eure Mitarbeiter benutzen modifieren. Hinweise dazu findest du beim Browserhersteller.

    --
    Henryk Plötz
    Grüße aus Berlin

    1. Hallo!
      Vielen Danke auch für deine Antwort!! Das hat mir ebenfalls sehr geholfen! Ich sitze grade an dem Script und es läuft besser, als ich erwartet habe :-D
      Also danke nochmal!!
      Thomas

    2. Hi!
      Wie kann man wie bei MSN eine "ähnliche" url finden?  Ich kenne entweder =, >, <, !=, aber wie kann eine Maschine was ähnliches finden? Naja, muß wohl irgendein Algorytmus sein, aber weiß jemand im Prinzip wie sowas funktioniert? Mir würde es schon für die eigene Homepage reichen. Wenn ich das machen würde, würde ich alle Dateinamen der Seite in einen Array laden, und dann? Wie kann ich denn jetzt eine "ähnlichen" (bzw. "den ähnlichsten") Eintrag in einem Array ermitteln?

      Vor allem bei den vielen Mio URLs die es so gibt wird das ganze ja wieder komplizierter, vermutlich bräuchte man eine DB, bzw. eine eigene Suchmaschine, um in annehmbarer Zeit so eine Anfrage auszuführen, oder? Also für uns otto-normal-profis entweder für eine Lokale Homepage, oder gar nicht, oder?

      Viele Grüße
      Andreas

      1. Moin,

        Wie kann man wie bei MSN eine "ähnliche" url finden?  Ich kenne entweder =, >, <, !=, aber wie kann eine Maschine was ähnliches finden?

        Man sollte meinen du wärest mittlerweile in der Lage, mal ein bisschen in der PHP-Anleitung zu blättern: http://www.php.net/manual/de/ref.strings.php. (Es schadet übrigens nichts, das Manual mal von vorne bis hinten zu lesen, um jede Funktionsbeschreibung wenigstens einmal gesehen zu haben.)

        --
        Henryk Plötz
        Grüße aus Berlin

        1. Hallo!

          Man sollte meinen du wärest mittlerweile in der Lage, mal ein bisschen in der PHP-Anleitung zu blättern: http://www.php.net/manual/de/ref.strings.php.

          vermutlich meinst Du:http://www.php.net/manual/de/function.similar-text.php
          (Es schadet übrigens nichts, das Manual mal von vorne bis hinten zu lesen, um jede Funktionsbeschreibung wenigstens einmal gesehen zu haben.)
          Naja, das ganze Manual auf einmal? Das dauert ja Tage/Wochen?! Aber Du hast Recht, und ich lese immer öfter auch einfach mal so... und finde meist erstaunliche neue Möglichkeiten. Aber die Funktionsreferenz habe ich bestimmt schon 50 mal von oben bis unten gelesen(meist aber auf der Suche nach einer Funktion), zwar nicht genau jede Funktion, aber Name und Kurzbeschreibung sagen ja schon einiges aus. Das was mich interessierte habe ich dann genauer angeguckt, habe similar-text bestimmt schonmal gesehen aber leider nicht für immer "gespeichert" ;-)
          Bei meiner letzten Suche habe ich mich leider auf Array-Funktionen beschränkt und da nichts gefunden.
          Aber danke für den Denkanstoß!

          Aber der Rest? Habe ich doch recht das man das nicht so einfach für das ganze www machen kann, oder? Ist ja schon aufwendig genug alle Dateien einer Präsenz in einen Array zu laden!

          Grüße
          Andreas