siziwi: pdf-Datei von fremden Server kopieren und per Mail verschicken

Hallo zusammen

Ich stehe wieder mal an, resp. weiss gar nicht ob das realisierbar ist. Bei uns an der Universität stellen die Professoren jeweils Übungsaufgaben als pdf-Dateien ins Netz. Nun möchte ich ein (php)Skript schreiben, welches mir automatisch per Mail die neuen Aufgaben zustellt.

Habe mir folgendes überlegt was das Skript können sollte:

  • Überprüfen ob neue Datei vorhanden, wenn ja dann:
       - mit Datenbank abgleichen ob die Datei schon versandt wurde
       - Kopie auf eigenem Server ablegen
       - Dateipfad in Datenbank schreiben
       - Mail mit Anhang verschicken
  • wenn nicht, dann:
       - Pech gehabt, später wieder überprüfen

Um zu überprüfen ob eine neue Datei online ist, habe ich mir überlegt, dass man einerseits direkt das Verzeichnis nach der neuen Datei (Dateinamen haben Muster: zB. blatt1.pdf, blatt2.pdf) durchsuchen könnte, oder aber die HTML-Datei nach neuen Links durchsuchen könnte und so auf die URL der Datei kommen würde.
Habe auch in diesem Punkt schon erfolge mit fsockopen:

  
  function check_url($url) {  
    $url_parts = parse_url($url);  
    if (!$fp = @fsockopen ($url_parts['host'], isset($url_parts['port']) ? $url_parts['port'] : 80))  
       return FALSE;  
    $request = 'HEAD '.  
      (isset($url_parts['path']) ? $url_parts['path'] : '/').  
      (isset($url_parts['query']) ? '?'.$url_parts['query'] : '').  
      ' HTTP/1.1'."\r\n".  
      'Host: '.$url_parts['host']."\r\n\r\n";  
    fputs ($fp, $request);  
    stream_set_timeout($fp, 5);  
    $status = explode(' ', fgets($fp,128), 2);  
		$ziel="";  
    fclose($fp);  
    return (isset($status[1]) ? $status[1] : FALSE);  
  }  

Mein eigentliches Problem ist aber folgendes: Wie kann man mit php (zB) von einem fremden Server Dateien kopieren? Denn wenn man den Link über den Browser aufruft kann man die Datei ja auch downloaden - irgendwie sollte das doch machbar sein.

Für den Mailversand hätte ich auch schon eine Lösung.

Vielen Dank
siziwi

  1. Hi,

    Habe auch in diesem Punkt schon erfolge mit fsockopen:

    $request = 'HEAD '.

    Ein HEAD-Request dient zum Fragen, "gibt es unter dieser Adresse etwas, dass du mir geben könntest?"

    Mein eigentliches Problem ist aber folgendes: Wie kann man mit php (zB) von einem fremden Server Dateien kopieren? Denn wenn man den Link über den Browser aufruft kann man die Datei ja auch downloaden - irgendwie sollte das doch machbar sein.

    Ein GET-Request zum Beispiel schiebt obiger Frage noch "und wenn ja, dann gebe es mir bitte" hinterher.

    MfG ChrisB

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

      »» Habe auch in diesem Punkt schon erfolge mit fsockopen:

      »»     $request = 'HEAD '.

      Ein HEAD-Request dient zum Fragen, "gibt es unter dieser Adresse etwas, dass du mir geben könntest?"

      Genau, so habe ich mir das auch gedacht, zur Überprüfung ob diese Datei existiert.

      Nun ist es aber so, dass ich z.T. das nicht anwenden kann, da nicht alle Dateien einem Schema folgen. Dann müsste man ja vielmehr den Link aus der HTML-Datei extrahieren, oder gäbe es da noch eine alternative?

      Ein GET-Request zum Beispiel schiebt obiger Frage noch "und wenn ja, dann gebe es mir bitte" hinterher.

      In welcher "Form" wird dann die Datei übermittelt, resp. wie kann ich sie dann mit php weiterverarbeiten?

      vielen Dank für die schnelle Antwort
      siziwi

      1. Hi,

        Nun ist es aber so, dass ich z.T. das nicht anwenden kann, da nicht alle Dateien einem Schema folgen. Dann müsste man ja vielmehr den Link aus der HTML-Datei extrahieren, oder gäbe es da noch eine alternative?

        Wenn du den Namen der Ressource nicht kennst, bleibt dir eigentlich nur an einer Stelle nachzuschauen, wo sie verlinkt ist, ja.

        Ein GET-Request zum Beispiel schiebt obiger Frage noch "und wenn ja, dann gebe es mir bitte" hinterher.
        In welcher "Form" wird dann die Datei übermittelt, resp. wie kann ich sie dann mit php weiterverarbeiten?

        In dem du dir mal irgendeinen Beispiel zu fsockopen anschaust, bspw. das im PHP-Manual. Erstaunlich, nicht wahr?

        MfG ChrisB

        --
        „This is the author's opinion, not necessarily that of Starbucks.“
        1. Hallo
          vielen Dank für die Hilfe bis jetzt.

          »» > Ein GET-Request zum Beispiel schiebt obiger Frage noch "und wenn ja, dann gebe es mir bitte" hinterher.
          »» In welcher "Form" wird dann die Datei übermittelt, resp. wie kann ich sie dann mit php weiterverarbeiten?

          In dem du dir mal irgendeinen Beispiel zu fsockopen anschaust, bspw. das im PHP-Manual. Erstaunlich, nicht wahr?

          Ja habe ich aber auch schon gemacht bevor ich diesen Post hier geschrieben habe, denn ich versteh das immer noch nicht so ganz. Das ganze mit http-request und mit GET ist neu für mich. Darum wäre ich um eine etwas ausführlicher Hilfe froh.

          Grüsse
          siziwi

          1. Hi,

            In dem du dir mal irgendeinen Beispiel zu fsockopen anschaust, bspw. das im PHP-Manual. Erstaunlich, nicht wahr?
            Ja habe ich aber auch schon gemacht bevor ich diesen Post hier geschrieben habe,

            Und?
            Welche Schlüsse ziehst du aus dem Beispiel?

            denn ich versteh das immer noch nicht so ganz.

            Und wo genau liegt das Verständnisproblem?

            MfG ChrisB

            --
            „This is the author's opinion, not necessarily that of Starbucks.“
    2. Habe auch in diesem Punkt schon erfolge mit fsockopen:
           $request = 'HEAD '.
      Ein HEAD-Request dient zum Fragen, "gibt es unter dieser Adresse etwas, dass du mir geben könntest?"

      Ob er dazu dient, ist sekundär. Die Frage ist, ob der Server darauf auch eingeht, oder sowieso den Content nachschiebt
      Der HTTP Standard wird nirgendwo lückenlos implementiert.
      Bei heutiger Serverseitigem Script-Handling sowieso nicht.
      Deshalb erst mal den Server testen ob man nicht besser gleich einen GET sendet.

      mfg Beat

      --
      Woran ich arbeite:
      X-Torah
      ><o(((°>           ><o(((°>
         <°)))o><                     ><o(((°>o
      Der Valigator leibt diese Fische