[PHP] htmlentities() expects parameter 1 to be string, resource given

Diese Fehlermeldung kommt bei mir, wenn ich das Skript ausführe.
PHP:
<?php
error_reporting(E_ALL);
if(!$_POST):
  echo "<center>";
  echo "Dateipfad: ";
  echo "<form action=\"\" method=\"post\">";
  echo "<input type=\"file\" name=\"path\"> <br><input type=\"submit\" value=\"laden\">";
  echo "</form>";
  echo "</center>";
endif;
if($_POST):
  $datei = $_POST["path"];
  copy($datei, "./temp/".$datei.".tmp");
  $open = fopen("./temp/".$datei."tmp", "r");
  echo "<textarea cols=\"80\" rows=\"20\">";
  echo htmlentities($open);
  echo "</textarea>";
  //echo $datei;
endif;
?>
 
also wenn du den Inhalt einer Text-Datei einlesen willst, dann entweder mit fopen()/feof()/fgets()/fclose():
PHP:
$filename="/path/to/file.txt";
$content="";

if($file=fopen($filename,"r"))
{
  while(!feof($file))
  {
    $content.=fgets($file,1024);
  }
}
fclose($file);

oder mit file_get_contents():
PHP:
$filename="/path/to/file.txt";
$content=file_get_contents($filename);


aber dein Script haut vorne und hinten nicht hin...
Für Datei-Uploads mit POST musst du das Formular enctype="multipart/form-data" setzen und dann läuft der Datei-Zugriff über die Superglobale $_FILES.

denn mit $_POST["path"] bekommst du ja nur den Pfad zurück, wo die Datei beim Nutzer liegt - und wenn Server != Client, dann funktioniert das nicht mehr...

lies dir also bitte mal das hier durch:
http://www.php.net/manual/de/features.file-upload.post-method.php
 
Statt fopen(), fread(), fwrite() zu nehmen könntest du auch schreiben:
echo htmlentities(implode("", file("./temp/".$datei."tmp")));

file() liest den Inhalt der Datei ein und gibt ein Array zurück(Zeile für Zeile),
implode macht das wieder Rückgängig -> Inhalt der Datei.
 
Zurück
Oben