Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [php] - Überprüfen ob Datei existiert (https://www.delphipraxis.net/97315-%5Bphp%5D-ueberpruefen-ob-datei-existiert.html)

xZise 8. Aug 2007 13:12


[php] - Überprüfen ob Datei existiert
 
Hallo DP :)

Ich möchte überprüfen ob eine Datei auf einen fernen Server existiert.

Ich habe schonmal gegooglet.
Und
Code:
file_exists
funktioniert schonmal ;)

Hier der Link:
http://xzise.xz.ohost.de/test2.html

Und hier der Quelltext:
Code:
<html>
<head>
<title>php test file exists</title>
</head>
<body>
Existiert eine Datei?


<?
  $root = "http://xzise.xz.ohost.de/";
  $url = "inhalt.html";
  echo "[b]$root$url[/b]
";
 
  if (file_exists($url)) {
    echo "Ja";
  } else {
    echo "Nein";
  }

  echo "
";

  $url="index.html";
  echo "[b]$root$url[/b]
";

  if (file_exists($url)) {
    echo "Ja";
  } else {
    echo "Nein";
  }

  echo "
";

  $url = "http://www.google.de/index.html";
  echo "[b]$url[/b]
";

  $file = fopen($url, "r");

  if(!$file) {
    echo "Ja";
  } else {
    echo "Nein";
  }

  fclose($file);

?>
</body>
</html>

angos 8. Aug 2007 13:16

Re: [php] - Überprüfen ob Datei existiert
 
Welche frage hast du?

Mark90 8. Aug 2007 20:04

Re: [php] - Überprüfen ob Datei existiert
 
mit deiner frage ist deine Antwort doch eigentlich geklärt!

Delphi-Quellcode:

 if (file_exists($Path || website usw..))

alcaeus 8. Aug 2007 20:12

Re: [php] - Überprüfen ob Datei existiert
 
Damit der Code funktioniert muessen die URL-wrappers fuer fopen aktiviert sein - jeder halbwegs vernuenftige Hoster deaktiviert dieses Feature allerdings, da dadurch auch Remote-File-Inclusion-Luecken moeglich werden. Der sicherste Weg ist also eine Kombination aus file_exists() (falls allow_url_fopen aktiviert ist), und als Fallback die Socket-Funktionen (einfach nen HTTP-Request an den Server jagen und pruefen ob ein 404 zurueckkommt).

Greetz
alcaeus

xZise 9. Aug 2007 18:33

Re: [php] - Überprüfen ob Datei existiert
 
Zitat:

Zitat von xZise
Ich möchte überprüfen ob eine Datei auf einen fernen Server existiert.

Wie genau brauchst du die Frage noch?


Zitat:

Zitat von Mark90
mit deiner frage ist deine Antwort doch eigentlich geklärt!

Delphi-Quellcode:

 if (file_exists($Path || website usw..))

Nein! file_exists funktioniert nur für das eigene Dateisystem. Also != ferner Server.

Zitat:

Zitat von alcaeus
Damit der Code funktioniert muessen die URL-wrappers fuer fopen aktiviert sein - jeder halbwegs vernuenftige Hoster deaktiviert dieses Feature allerdings, da dadurch auch Remote-File-Inclusion-Luecken moeglich werden.

Aha...

Zitat:

Zitat von alcaeus
Der sicherste Weg ist also eine Kombination aus file_exists() (falls allow_url_fopen aktiviert ist), und als Fallback die Socket-Funktionen (einfach nen HTTP-Request an den Server jagen und pruefen ob ein 404 zurueckkommt).

Okay. Ich soll also einfach als $url http://www.google.de/index.html angeben?

Den Request müsstest du mir erklären.

[edit]Nur mit file_exists funktionierts nicht[/edit]

alcaeus 9. Aug 2007 20:16

Re: [php] - Überprüfen ob Datei existiert
 
Nein - wenn es nicht funktioniert verwendest du die Socket-Funktionen und machst es "von Hand", sprich:

du willst wissen ob h**p://www.foobar.com/test.txt existiert.

Also:
Code:
if (!$fp = fsockopen('www.foobar.com', 80, $errno, $errstr, 5))
{
  die('Error connecting to foobar.com');
}
fwrite($fp, "GET /test.txt HTTP/1.1\r\n");
fwrite($fp, "HOST: www.foobar.com\r\n");
fwrite($fp, "Connection: close\r\n");
$header = '';
$status = 404;
while ($data = fgets($fp, 1024))
{
  if (substr($data, 0, 9) !== 'HTTP/1.0 ')
  {
    continue;
  }
 
  $status = (int) substr($data, 9, 3);
}
fclose($fp);
return ($status == 200) ? true : false;
Das wars eigentlich...beachte aber dass der Code grad eben im Browserfenster zusammengeschrieben wurde und deshalb nicht getestet ist. Einfach mal die Funktionen angucken, überlegen und evtl. korrigieren ;)

Greetz
alcaeus

3_of_8 9. Aug 2007 20:20

Re: [php] - Überprüfen ob Datei existiert
 
Viele Freehoster haben die Socket-Funktionen übrigens deaktiviert. Könnte mir gut vorstellen, dass das bei Ohost auch so ist.

xZise 10. Aug 2007 19:06

Re: [php] - Überprüfen ob Datei existiert
 
Ist aus sicherheitsgründen deaktiviert.

jokerfacehro 12. Aug 2007 11:24

Re: [php] - Überprüfen ob Datei existiert
 
wenn socket und so aus sind, kannst du das ganze über html und php lösen:

du machst einfach ein iframe wo du die datei reinlädst die du testen willst,
dann schauffelst du den quelltext in ne textvariable und prüfst ob 404 forhanden ist

oder ein bestimmter tetx datei nicht gefunden.

das sollte ganz gut funktionieren außer bei seiten die gleich nen link auf die haupseite setzen

anderer weg wäre dir nen ordentlichen webspace zu holen ^^

edit: man könnte auch noch was mit js machen allerdings ist das abhängig ob der benutzer das aktiviert hat, ansonsten hilft dir ein java applet ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz