Problem mit Templatesystem

eternitysoft

Mitglied
Also irgendwie stehe ich momentan auf dem Schlauch <.<
ich schreibe gerade ein script mit einem template system die templatefunction sieht so aus

template.php
PHP:
  <?php
  class CTemplate
  {
  var $strTemplate; // speichert Template-Datei
  
  function Load($file_path) // Lädt Template-Datei und speichert sie ab
  {
    $fp = fopen($file_path,"r"); // Datei zum Lesen öffnen
    $this->strTemplate = fread($fp,filesize($file_path)); // und einlesen
    fclose($fp); // Danach den File-Stream wieder schließen
  }
  
  function Replace($needle,$replacement) // ersetzt $needle durch $replacement
  {
    $this->strTemplate =  str_replace("{".$needle."}",$replacement,$this->strTemplate);
  }
  
  function Display() // gibt Template aus
  {
    echo $this->strTemplate;
  }
  }
  
  ?>
so und hier mal eine bsp seite in der das template eingebaut ist:
(die variable $pfad enthält den pfad zum hpsystem der bei der installation angegeben wird z.B http://www.url.de/hpsystem)

news.php
PHP:
  <?
  include('config.php');
  include('template.php');
  include('function.php');
  
  
  		  $connect = mysql_connect($dbhost, $dbuser, $dbpass);
  			if (!$connect)
  			 {
  			   die('Verbindung nicht möglich : ' . mysql_error());
  			 }//if connect
  			 else
  			 {
 				 $select = mysql_select_db($dbname);
  			   if(!$select)
  			   {
 		 	die('konnte datenbank nicht auswählen: ' . mysql_error());
  			   mysql_close($connect);
  			   }//select
  			   else
  			   {
  				  $zeigen = $news_pro;
 				 if(!isset($_POST['hiddenfeldname']))
  				   {
 					$start = "0";
  				   }
  				   else
  				   {
 				 $start = $_POST['hiddenfeldname'];
  				   }
 				 $anzahl = mysql_num_rows(mysql_query("SELECT * from hp_news"));
 				 $result = mysql_query("SELECT * from hp_news ORDER BY id DESC LIMIT $start, $zeigen");
  
  					
  			 while($row = mysql_fetch_array($result))
  			 {
  			  include('inc/bbcode.php');
  			  $Body = new CTemplate();
  			  $Body->Load($pfad."/template/news.html");
 			 $Body->Replace("userpic","<img src=$pfad/ava/".$row['pic'].">");
  			  $Body->Replace("author"," von ".$row['autor']);
  			  $Body->Replace("topic",$row['topic']);
  			  $Body->Replace("content",$row['content']);
  			  $Body->Replace("date","am " .$row['date']);
  			  $Body->Replace("time"," um " .$row['time']);
 			 $Body->Replace("comments"," <a href=$pfad/comments_read.php?id=".$row['id']." target=\"_blank\">Kommentare</a>" );
 			 $Body->Replace("writecomments","<a href=$pfad/comments.php?id=".$row['id']." target=\"_blank\">Kommentar schreiben</a>" );
  			  $Body->Display();
  
  			 }
  
  
  
 					//linkleiste
  				    if($anzahl>$zeigen)
  					{
 					 $ausgabe = ceil($anzahl/$zeigen);
 					 echo "<form action=\"".$PHP_SELF."\" name=\"news_formular\" method=\"POST\">\n";
 					 echo "<input type=\"hidden\" value=\"0\" name=\"hiddenfeldname\">\n";
 					 echo "<br>\n<center>\n";
 					 for($i=1;$i<=$ausgabe;$i++)
  					 {
 					 $links_anzeigen = $zeigen * $i - $zeigen;
 					 if($start==$links_anzeigen)
  					   {
 					 echo "<a href=\"#\" style=\"color:#FF9900\" onClick=\"news_formular.hiddenfeldname.value='" .$links_anzeigen. "';document.news_formular.submit();\"> ".$i."</a>\n";
  					   }
  					   else
  					   {
 					 echo "<a href=\"#\" onClick=\"news_formular.hiddenfeldname.value='".$links_anzeigen."';document.news_formular.submit();\"> ".$i."</a>\n";
  					   }
  					}
  				
  				  }
  				  mysql_close($connect);
  			   }//ende else select
  			 }//ende else connect
  ?>
so beim includen der datei oder direktem aufruf der datei kommt folgender fehler:

Warning: filesize() [function.filesize.php]: Stat failed for http://www.rpgstation.de/hpsystem/template/news.html (errno=2 - No such file or directory) in /var/www/web51/html/hpsystem/template.php on line 10

Warning: fread() [function.fread.php]: Length parameter must be greater than 0. in /var/www/web51/html/hpsystem/template.php on line 10

bloß ich kriege den fehler irgendwie nicht behoben kann mir mal jemand helfen?
mfg
et

 
Da der Pfad "http://" enthält, wird versucht über das HTTP-Protokoll auf die Datei zuzugreifen. Die Funktion [phpf]filesize[/phpf] unterstützt den zugriff aber auf Remote-Dateien nicht, sondern die Datei muss sich im Filesystem des Servers befinden. Wenn dem so ist, musst du statt dem "http://..." den Pfad zur einzulesenden Datei angeben.

Im Übrigen gibt es noch andere Funktionen, um Dateien einzulesen. Zum Beispiel [phpf]file_get_contents[/phpf]. Damit umgehst du die Funktion filesize. Allerdings sollte man dennoch den Zugriff über das Filesystem, dem remoten vorziehen.

Sven
 
hm hab das jetzt so gemacht

PHP:
  <?php
  class CTemplate
  {
  var $strTemplate; // speichert Template-Datei
  
  function Load($file_path) // Lädt Template-Datei und speichert sie ab
  {
    $fp = fopen($file_path,"r"); // Datei zum Lesen öffnen
    $this->strTemplate = fread($fp,file_get_contents($file_path)); // und einlesen
    fclose($fp); // Danach den File-Stream wieder schließen
  
  }
  
  function Replace($needle,$replacement) // ersetzt $needle durch $replacement
  {
    $this->strTemplate =  str_replace("{".$needle."}",$replacement,$this->strTemplate);
  }
  
  function Display() // gibt Template aus
  {
  
    echo $this->strTemplate;
  
  }
  }
  
  ?>

jetzt kommt nurnoch eine fehlermeldung
Warning: fread() [function.fread.php]: Length parameter must be greater than 0. in /var/www/web51/html/hpsystem/template.php on line 9
 
boah bin ich blöd <.< hau mich mal bitte hab es jetzt und zwar so

PHP:
  <?php
  class CTemplate
  {
  var $strTemplate; // speichert Template-Datei
  
  function Load($file_path) // Lädt Template-Datei und speichert sie ab
  {
  
    $this->strTemplate = file_get_contents($file_path); //
  
  
  }
  
  function Replace($needle,$replacement) // ersetzt $needle durch $replacement
  {
    $this->strTemplate =  str_replace("{".$needle."}",$replacement,$this->strTemplate);
  }
  
  function Display() // gibt Template aus
  {
  
    echo $this->strTemplate;
  
  }
  }
  
  ?>
ich danke dir
 
Habe ein ähnliches Problem und komme einfach nicht weiter...

Folgender Hinweis kommt immer wieder:

Warning: fread(): Length parameter must be greater than 0

Code:
// DATEI EINLESEN UND DEN INHALT ZURÜCKGEBEN


function kpl_read_file($FILENAME) {
	if(file_exists($FILENAME)) {
		$FILE_R = fopen($FILENAME, "r");
		$TMP_DATA = fread($FILE_R, filesize($FILENAME));
		fclose($FILE_R);
		return $TMP_DATA;
	} else {
		global $config;
		echo "<b>Fehler:</b> $FILENAME konnte nicht geladen werden!<br>Entweder ist diese Datei nicht auf dem Server vorhanden, oder der Absolute-Pfad ist falsch!<br>Sollte der Fehler erneut auftreten, dann wenden Sie sich an: ".$config['admin_email'];
		exit;
	}
}

Was muss ich hier ändern, damit der Hinweis nicht mehr kommt?
Danke
 
Zurück