السلام عليكم
اسف لعدم التوضيح اليك الملفات
اولا التالي هو كود الكلاس (كلاس البحث عن القوالب واستبدال المتغيرات واستبدال ملفات المدرجة)
كود PHP:
<?php
include("functions.php");
class Template{
var $content= array();
var $vars;
var $tempname;
var $lunix_dir_temp="/home/user/public_html/dir/";
function GetTemplate($tempname)
{
$this->tempname = "$tempname";
$get_main_style=mysql_query("SELECT * FROM styles WHERE main='1'");
$row_style=mysql_fetch_array($get_main_style);
$get_temp=mysql_query("SELECT * FROM templates WHERE name='$tempname' AND styleid=".$row_style[id]." AND status=1") OR die(echodie());
$row_temp=mysql_fetch_array($get_temp);
$body = $row_temp['template'];
$body = stripslashes($body);
$this->content[$this->tempname] = stripslashes($body);
mysql_free_result($get_main_style);
mysql_free_result($get_temp);
unset($row_style);
unset($row_temp);
unset($body);
}
//Function to FixTemplate the Template Tags
function FixTemplate()
{
//start loop
$this->content[$this->tempname] = preg_replace("'<LOOP NAME=\"([A-Za-z0-9_]+)\">'i",
"<? foreach(\$this->vars[\\1] as \$key=>\$var){ ?>",$this->content[$this->tempname]);
//end loop
$this->content[$this->tempname] = preg_replace("'</LOOP>'i","<? } ?>",
$this->content[$this->tempname]);
//Start IF Statement
$this->content[$this->tempname] = preg_replace("'<IF NAME=\"([A-Za-z0-9_]+)\">'i",
"<? if(\$this->vars[\\1] == 1){ ?>",$this->content[$this->tempname]);
//end IF Statment
$this->content[$this->tempname] = preg_replace("'</IF>'i","<? } ?>",
$this->content[$this->tempname]);
// >>>>>>> انتبه هنا لكود ادراج الملف
//Include Statement
$this->content[$this->tempname] = preg_replace("'<INCLUDE FILENAME=\"([A-Za-z0-9_./]+)\">'i",
"<? include(\"$this->lunix_dir_temp/\\1\"); ?>",$this->content[$this->tempname]);
//Foreach Variables
$this->content[$this->tempname] = preg_replace("'{{([A-Za-z0-9_]+)}}'","<? echo \$var[\\1] ?>",
$this->content[$this->tempname]);
//Variables
$this->content[$this->tempname] = preg_replace("'{([A-Za-z0-9_]+)}'","<? echo \$this->vars[\\1] ?>",
$this->content[$this->tempname]);
}
//Function to Display template
function DisplayTemplate()
{
$this->vars = &$GLOBALS;
$this->FixTemplate();
ob_start();
//eval('?'.'>'.trim($this->content[$this->tempname]).'<'.'?');
eval('?'.'>'.trim($this->content[$this->tempname]).'<'.'?');
$this->content[$this->tempname] = ob_get_contents();
ob_end_clean();
print $this->content[$this->tempname];
}
}
?>
الكود التالي هو كود ملف ال function.php
كود PHP:
<?php
// ------------------------------------------ //
//////////////// deny direct access to a file
function deny_direct_access($file_name)
{
if (!eregi($file_name , $PHP_SELF))
{
$die_message = "<div align=\"center\"><strong>عفوا - لقد اتبعت رابطا غير صحيحاً بالدخول الى هنا</strong><br /><form><input type=\"button\" onclick=\"history.go(-1)\" value=\"العودة الى الخلف\"></form></div>";
$tpl->GetTemplate("diepage");
$tpl->DisplayTemplate();
include("footer.php");
exit();
}
}
?>
واخيرا كود القالب الذي يتم استبدال محتواه
كود HTML:
<div id="{column_size}">
<INCLUDE FILENAME="columns/index_test.php">
</div>
ملف ال index_test.php
موجود فيه التالي
كود PHP:
deny_direct_access("some_file.php");
النتيجة تظهر بان الدالة deny_direct_access لا تنتمي الى الكلاس Template
انشاء الله الان وضحت المشكلة؟