<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/features.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'de',
  ),
  'this' => 
  array (
    0 => 'features.remote-files.php',
    1 => 'Zugriff auf entfernte Dateien',
    2 => 'Zugriff auf entfernte Dateien',
  ),
  'up' => 
  array (
    0 => 'features.php',
    1 => 'Features',
  ),
  'prev' => 
  array (
    0 => 'features.file-upload.errors.seealso.php',
    1 => 'Siehe auch',
  ),
  'next' => 
  array (
    0 => 'features.connection-handling.php',
    1 => 'Verbindungssteuerung',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'de',
    'path' => 'features/remote-files.xml',
  ),
  'history' => 
  array (
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="features.remote-files" class="chapter">
  <h1 class="title">Zugriff auf entfernte Dateien</h1>


  <p class="para">
   Wenn <code class="parameter">allow_url_fopen</code> in der <var class="filename">php.ini</var> aktiviert ist,
   können <abbr title="Hypertext Transfer Protocol">HTTP</abbr>- und <abbr title="File Transfer Protocol">FTP</abbr>-URLs bei den
   meisten Funktionen verwendet werden, die einen Dateinamen als Parameter
   benötigen. Darüber hinaus können URLs in <span class="function"><a href="function.include.php" class="function">include</a></span>-,
   <span class="function"><a href="function.include-once.php" class="function">include_once</a></span>-, <span class="function"><a href="function.require.php" class="function">require</a></span>- und
   <span class="function"><a href="function.require-once.php" class="function">require_once</a></span>-Anweisungen verwendet werden
   (<strong class="option unknown">allow_url_include</strong> muss dafür aktiviert sein). Weitere
   Informationen zu den Protokollen, die von PHP unterstützt werden, finden
   Sie im Abschnitt <a href="wrappers.php" class="xref">Unterst&uuml;tzte Protokolle und Wrapper</a>.
  </p>
  <p class="para">
   Beispielsweise kann damit eine Datei auf einem anderen Webserver geöffnet
   und nach benötigten Daten analysiert werden. Diese Daten können zur Abfrage
   einer Datenbank verwendet werden oder passend zum Rest der eigenen Website
   ausgegeben werden.
  </p>
  <p class="para">
   <div class="example" id="example-1">
    <p><strong>Beispiel #1 Den Titel einer entfernten Seite auslesen</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$datei </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen </span><span style="color: #007700">(</span><span style="color: #DD0000">"http://www.example.com/"</span><span style="color: #007700">, </span><span style="color: #DD0000">"r"</span><span style="color: #007700">);<br />if (!</span><span style="color: #0000BB">$datei</span><span style="color: #007700">) {<br />    echo </span><span style="color: #DD0000">"&lt;p&gt;Datei konnte nicht geöffnet werden.\n"</span><span style="color: #007700">;<br />    exit;<br />}<br />while (!</span><span style="color: #0000BB">feof </span><span style="color: #007700">(</span><span style="color: #0000BB">$datei</span><span style="color: #007700">)) {<br />    </span><span style="color: #0000BB">$zeile </span><span style="color: #007700">= </span><span style="color: #0000BB">fgets </span><span style="color: #007700">(</span><span style="color: #0000BB">$datei</span><span style="color: #007700">, </span><span style="color: #0000BB">1024</span><span style="color: #007700">);<br />    </span><span style="color: #FF8000">/* Funktioniert nur, wenn Titel und title-Tags in einer Zeile stehen */<br />    </span><span style="color: #007700">if (</span><span style="color: #0000BB">preg_match </span><span style="color: #007700">(</span><span style="color: #DD0000">"@\&lt;title\&gt;(.*)\&lt;/title\&gt;@i"</span><span style="color: #007700">, </span><span style="color: #0000BB">$zeile</span><span style="color: #007700">, </span><span style="color: #0000BB">$treffer</span><span style="color: #007700">)) {<br />        </span><span style="color: #0000BB">$title </span><span style="color: #007700">= </span><span style="color: #0000BB">$treffer</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">];<br />        break;<br />    }<br />}<br /></span><span style="color: #0000BB">fclose</span><span style="color: #007700">(</span><span style="color: #0000BB">$datei</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   Auch eine Datei auf einem FTP-Server kann geschrieben werden, vorausgesetzt
   man ist als Benutzer mit entsprechenden Zugriffsrechten angemeldet. Auf
   diesem Weg können nur neue Dateien angelegt werden. Falls Sie versuchen
   eine schon existierende Datei zu überschreiben, wird der
   <span class="function"><a href="function.fopen.php" class="function">fopen()</a></span>-Aufruf fehlschlagen.
  </p>
  <p class="para">
   Um sich statt als &#039;anonymous&#039; als anderer Benutzer anzumelden, muss ein
   Benutzername (und möglicherweise ein Passwort) innerhalb der URL angegeben
   werden, z. B.
   &#039;<code class="literal">ftp://benutzer:passwort@ftp.example.com/pfad/zur/datei</code>&#039;.
   Dieselbe Syntax kann verwendet werden, um auf Dateien via
   <abbr title="Hypertext Transfer Protocol">HTTP</abbr> zuzugreifen, wenn diese eine
   Basic-Authentifizierung benötigen.
  </p>
  <p class="para">
   <div class="example" id="example-2">
    <p><strong>Beispiel #2 Daten auf einen entfernten Server speichern</strong></p>
    <div class="example-contents">
<div class="phpcode"><code><span style="color: #000000"><span style="color: #0000BB">&lt;?php<br />$datei </span><span style="color: #007700">= </span><span style="color: #0000BB">fopen </span><span style="color: #007700">(</span><span style="color: #DD0000">"ftp://ftp.example.com/incoming/outputfile"</span><span style="color: #007700">, </span><span style="color: #DD0000">"w"</span><span style="color: #007700">);<br />if (!</span><span style="color: #0000BB">$datei</span><span style="color: #007700">) {<br />    echo </span><span style="color: #DD0000">"&lt;p&gt;Datei konnte nicht zum schreiben geöffnet werden.\n"</span><span style="color: #007700">;<br />    exit;<br />}<br /></span><span style="color: #FF8000">/* Schreibe die Daten hier hin. */<br /></span><span style="color: #0000BB">fputs </span><span style="color: #007700">(</span><span style="color: #0000BB">$datei</span><span style="color: #007700">, </span><span style="color: #0000BB">$_SERVER</span><span style="color: #007700">[</span><span style="color: #DD0000">'HTTP_USER_AGENT'</span><span style="color: #007700">] . </span><span style="color: #DD0000">"\n"</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">fclose </span><span style="color: #007700">(</span><span style="color: #0000BB">$datei</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">?&gt;</span></span></code></div>
    </div>

   </div>
  </p>
  <p class="para">
   <blockquote class="note"><p><strong class="note">Hinweis</strong>: 
    <p class="para">
     Obiges Beispiel könnte dazu verleiten, dieses Verfahren zu verwenden, um
     in eine entfernte Log-Datei zu schreiben. Das würde aber leider nicht
     funktionieren, weil der <span class="function"><a href="function.fopen.php" class="function">fopen()</a></span>-Aufruf fehlschlagen
     würde, wenn die entfernte Datei bereits existiert. Für eine
     dezentralisierte Protokollierung sollten Sie sich die Funktion
     <span class="function"><a href="function.syslog.php" class="function">syslog()</a></span> anschauen.
    </p>
   </p></blockquote>
  </p>

 </div>
<?php manual_footer($setup); ?>