كود PHP:
<?php
#---------------------------------------------------------------------
# Mytemplate Engine version 1.3.1
# Authors: Bruce & Saanina
# http://Dev-ly.com || E-mail:Prof.Bruce@yahoo.it || Saanina@gmail.com
#---------------------------------------------------------------------
# --------------------LAST CHANGES-------------------
#fix deleted prosess (unlink)
# added new idea for loop { i tested , its worrk with arays and sql)
# added !=
# fix loop (just its experssion )
# fix if (use global variable with == > < )
#--------------------------------------------------------------
# change assign
#fix include
# fix loop ( it was give any things inside loop a numbers )
# add include_tpl ( doesnt work now ... )
# added if
# aded php inside template ..
# added else
#added elseif
# change method of else ..etc
# seperated loop to function
#fix assign
#-------------------------------------------------------------
# last change 09:39 ص 06/11/28
class MyTemplate{
var $Tempdir;
var $cachedir;
var $cachetime = 0; //by hour
var $pageTemp;
var $page;
var $php_compile = 'on';
function compile($content) { //was display function here
//include_tpl
preg_match('#{include_tpl (.*?)\}#i', $content, $match_inc);
if ($match_inc[1]){$s = @file_get_contents("$this->Tempdir$match_inc[1]"); $content = preg_replace('#{include_tpl(.*?)\}#i',$s, $content); }
//include_scrpit
$content = preg_replace('#{include_script (.*?)\}#i','<? include("\\1"); ?>', $content);
//if .. else ... elseif ..etc
$content = preg_replace('#{if[^>](.*?)[^>](==|>|<|!=)[^>](.*?)\}#i','<? if($GLOBALS[\'\\1\']\\2\\3): ?>', $content);
$content = preg_replace('#{if (.*?)\}#i','<? if($GLOBALS[\'\\1\']): ?>', $content);
$content = preg_replace('#{elseif (.*?)[^>](==|>|<|!=)[^>](.*?)\}#i','<? elseif($GLOBALS[\'\\1\']\\2\\3): ?>', $content);
$content = preg_replace('#{elseif (.*?)\}#i','<? elseif(\\1): ?>', $content);
$content = preg_replace('#{else\}#i','<? else: ?>', $content);
$content = preg_replace('#{\/if\}#i','<? endif; ?>', $content);
//loop
$content = preg_replace_callback('#{loop ([a-zA-Z0-9\_\-\+\./]+)\}(.*?){\/loop\}#is',array(&$this,'loop_bt'), $content);
//php
if ($this->php_compile == 'on'){ $content = preg_replace('#{php\}(.*?){\/php\}#is','<? \\1 ?>', $content);}
// assigning
$content = preg_replace('#{([a-zA-Z0-9\_\-\+\./]+)}#','<?=$GLOBALS[\'\\1\'];?>',$content);
return $content;
}
function assign_r($array){ foreach($array as $key=>$value){$GLOBALS["$key"] = $value;} }
function assign($name,$value){$GLOBALS["$name"] = $value; }
function loop_bt ($match_loop) {
$s_loop = preg_replace('#{([a-zA-Z0-9\_\-\+\./]+)}#','<?=$GLOBALS[\'\\1\'][$i];?>',$match_loop[2]);
return ('<? foreach($GLOBALS['.$match_loop[1].'] as $key=>$value){?>'.$s_loop.'<?}#endloop?>');
}
function show($content,$name_c=''){ //nofile .. use for thos contents without files . like sql templates
//at first ..
$this->page = ($name_c!='') ? $name_c : $content;
//check step
if (empty($this->cachedir)) { $this->cachedir = $_ENV["TEMP"]; }
if (!is_writeable( $this->cachedir ) ) { echo "<i>ERROR :</i> could not be write in cach folder!"; }
//delete step
$npage = 'mytpl_' . $this->page . ".php";
$tpage = @filemtime("$this->cachedir/$npage");
if($tpage >= ($tpage+(3600*$this->cachetime))){ @unlink("$this->cachedir/$npage"); }
//including step
if(!file_exists("$this->cachedir/$npage")){
if ($name_c==''){ // on development
if(!file_exists("$this->Tempdir$this->page")){ echo "<i>ERROR :</i> <b>$this->page</b> Template Not Found!"; exit();}
ob_start();
include("$this->Tempdir$this->page");
$this->pageTemp= ob_get_clean();
}else {
$this->pageTemp =$content;
}
//compile content
$this->pageTemp = $this->compile($this->pageTemp);
//then
$filenum = @fopen("$this->cachedir/$npage", 'w');
flock($filenum, LOCK_EX);
@fwrite($filenum, $this->pageTemp);
fclose($filenum);
}
//get
ob_start();
include("$this->cachedir/$npage");
$this->pageTemp= ob_get_clean();
//now print
print $this->pageTemp;
}
} # end of class
?>
الملف الخاص بي :
كود PHP:
<?
session_start();
#| Every Page |#
$after="6";
$allow_metas = "2";
$header = "1";
include("include/config.php");
include("include/connect.php");
include("include/rows.php");
$page_meta_open = "$meta_open";
$page_meta_desc = "$meta_desc";
if($close==1){
$title="الموقع مغلق";
}
else
{
$title ="لوحة التحكم";
}
include("common_up.php");
#| Every Page |#
print '<font face="Tahoma">';
if (isset($_SESSION['links_user_session']) ) {
$UserID = $_SESSION['links_user_id'];
if($_GET['step'] == index){
$Query = mysql_query("SELECT * FROM `shortlinks_links` WHERE `user_id`='$UserID' LIMIT 5");
while($row = mysql_fetch_array($Query)){
$row[] = row;
}
if(!is_array($row)) {
$row[] = $row;
}
$url_num = mysql_num_rows(mysql_query("SELECT `id` FROM `shortlinks_links` WHERE `user_id`='$UserID'"));
$User = mysql_fetch_array(mysql_query("SELECT * FROM `shortlinks_users` WHERE `id`='$UserID'"));
print mysql_error();
$last_login = $User['last_login'];
$login_times = $User['login_times'];
$reg_date = $User['reg_date'];
$mail = $User['mail'];
$name = $User['username'];
$tpl->show("usercp_index.htm");
@mysql_free_result($Query);
@mysql_free_result($Num);
$date = date("d-m-Y");
$UpLogInTimes = @mysql_query("UPDATE `shortlinks_users` SET `login_times`='$login_times+1' AND `last_login`='$date' WHERE `id`='$UserID'");
}
if($_GET['edit'] == 1){
$ID = intval($_GET['id']);
$check = @mysql_num_rows(@mysql_query("SELECT `id` FROM `shortlinks_links` WHERE `id`='$ID'"));
// نتأكد من ان الرابط موجود اصلاً
if($check == 1){
$Query = mysql_fetch_array(mysql_query("SELECT * FROM `shortlinks_links` WHERE `id`='$ID'"));
if($Query['user_id'] !== $UserID){
// إذا كان الرابط المراد تعديله ليس ملكاً للعضو
print "<font face='Tahoma'><div align='center'><b> خطأ ! </b></div></font>";
include("common_down.php");
exit;
}
else
{
// هنا في حالة كان كل شئ صحيحاً
$tpl->show("edit_links.htm");
}
}
else
{
// إذا كان الرابط المراد تعديله غير موجود
print "<font face='Tahoma'><div align='center'><b> خطأ ! </b></div></font>";
include("common_down.php");
exit;
}
}
// حذف رابط
if($_GET['delete'] == 1){
$id = intval($_GET['id']);
$Query = @mysql_query("SELECT * FROM `shortlinks_links` WHERE `id`='$id'");
// إذا كان الرابط موجود
if(@mysql_num_rows($Query) == 1){
$Inf = mysql_fetch_array($Query);
// إذا كان الرابط ملكاً للعضو
if($Inf['user_id'] == $UserID){
}
else
{
// إذا كان الرابط ليس ملكاً للعضو
}
}
else
{
// إذا كان الرابط غير موجود
}
}
}
else
{
// في حال لم يـُسجل الدخول
$tpl->show("login.htm");
}
include("common_down.php");
?>
القالب
كود PHP:
<html dir="rtl">
<head>
<meta http-equiv="Content-Language" content="en-us">
</head>
<p> </p>
<table border="1" width="100%" id="table1" cellspacing="1" style="border-collapse: collapse" bordercolor="#C0C0C0">
<tr>
<td class="Nv"><font face="Tahoma" style="font-size: 10pt"> <span lang="ar-sa">السلام
عليكم ورحمة الله وبركاته يا </span><b>{name}</b><span lang="ar-sa">
</span>/<span lang="ar-sa"> بريدك الإلكتروني المـُسجل لدينا هو : </span>
<i>{mail}</i> <span lang="ar-sa">.</span></font></td>
</tr>
<tr>
<td><font face="Tahoma" style="font-size: 9pt"> <span lang="ar-sa">
مرحباً بك في لوحة التحكم , تستطيع من هنا التحكم بروابطك ومعلوماتك , بعض
المعلومات عنك :<br>
-<b> تاريح تسجيلك</b> : </span>{reg_date} | <span lang="ar-sa"><b>آخر
تسجيل دخول لك كان في</b> : </span>{last_login} | <span lang="ar-sa"><b>
عدد الروابط التي إختصرتها</b> </span>: {url_num} <span lang="ar-sa">| <b>
عدد مرات تسجيل دخولك</b> : </span>{login_times}<span lang="ar-sa">.</span></font></td>
</tr>
</table>
<table border="0" width="100%" id="table2" cellpadding="0" style="border-collapse: collapse">
<tr>
<td width="261">
<table border="1" width="100%" id="table3" cellspacing="1" style="border-collapse: collapse" bordercolor="#C0C0C0">
<tr>
<td class="tcat">
<p align="center"><font face="Tahoma" style="font-size: 9pt">
<span lang="ar-sa"><b>معلوماتك</b></span></font></td>
</tr>
<tr>
<td><font face="Tahoma" style="font-size: 9pt">
<span lang="ar-sa"> - <a href="cp.php?step=changepassword">
<span style="text-decoration: none">تغيير كلمة المرور / البريد
الإلكتروني</span></a> .</span></font></td>
</tr>
<tr>
<td class="tcat">
<p align="center"><font face="Tahoma" style="font-size: 9pt">
<span lang="ar-sa"><b>التحكم بالروابط</b></span></font></td>
</tr>
<tr>
<td><font face="Tahoma" style="font-size: 9pt">
<span lang="ar-sa"> -<a href="cp.php?step=new"><span style="text-decoration: none">
إضافة رابط جديد</span></a> .</span></font></td>
</tr>
<tr>
<td><font face="Tahoma" style="font-size: 9pt">
<span lang="ar-sa"> - <a href="cp.php?step=control">
<span style="text-decoration: none">التحكم بالروابط</span></a> .</span></font></td>
</tr>
</table>
</td>
<td><br>
<table border="1" width="100%" id="table4" cellspacing="1" style="border-collapse: collapse; border: 1px dotted #C0C0C0; padding: 3px">
{loop row}
<tr>
<td class="tcat">
<p align="center"><b><font face="Tahoma" size="2">
<span lang="ar-sa">آخر خمس روابط قمت بتقصيرها :</span></font></b></td>
</tr>
<tr>
<td><font face="Tahoma" style="font-size: 9pt">
<span lang="ar-sa"> - </span>{title}</font></td>
</tr>
{/loop}
</table>
</td>
</tr>
</table>
</html>
وشكراً لك اخوي saanina