تبلیغات در پرشین تولز

PDA

View Full Version : سایت خود را استاتیک بسازید - آموزش!


byvafa
01-16-2007, 07:31 PM
این مقاله بر اساس مطالب موجود در انجمنهای شاه کلید بوجود آمده و باز هم مرام دوستان در انجمن های شاه کلید را ستایش می کنم.

بهتره قبل از مطالعه این مقاله، اول مقاله علیرضا ( در این آدرس (http://forum.shahkey.com/showthread.php?tid=115) ) را نگاه کنید.

دوباره تاکید می کنم این یه مثاله واسه مقاله علیرضا، به کمک کدهایی که در زیر مشاهده می کنید میتونید سایت خودتونو استاتیک کنید ! تا از فشار های اضافه دیتابیس ها به سرورتون جلوگیری کنید .


فایل classname.php :

این کلاس نسبت به اونی که داخل فایل ها علیرضاهست یه تغییر کرده اونم در فنکشن tmp_parser هستش. کد قبلی می تونست تنها یک تک جای گزین کنه که اگر بخواهید با یک بار اجرای str_replace دو یا چند تگ را تغییر بدید باید از یه آرایه استفاده کنید ( همین طوری که در کد زیر مشاهده می کنید ).

<?php
class tmp {

function load_tmp_file( $file )
{
if( empty( $file ) )
{
return FALSE;
}

$open = fopen($file, "r");
if(!$open)
{
print 'Could not read the template file!';
return FALSE;
}
else
{
while($buffer = fread($open, 1000))
{
@$template .= $buffer;
}
return $template;
}
}

function tmp_parser($tmp, $fname, $fdata)
{
$find = array( "<shahkey-file-name>", "<shahkey-data>" );
$replace = array( $fname, $fdata );
$i = str_replace($find, $replace, $tmp);
return $i;
}

}
?>

فایل index.php :

تو این فایل ما دوتا فیلد داریم که اولی نام فایلی است که قرار ساخته بشه و دومی هم یه فیلد که اطلاعات اون بعدا به نمایش در میاد . اینجا ما اطلاعات رو از کاربر می گیریم بعد به کمک تابع fwrite و.. اونا رو بر اساس قالبمون داخل یه فایل ذخیره می کنیم . دقت کنید اگر فایلاتون رو روی سرور لینوکساجرا می کنید باید دسترسی های مربوط به فایل رو تنظیم کرده باشید ..

<html dir="rtl">

<head>
<!--
/**************************************
/ create by Alireza & mehdi
/ shahkey.com froums
/**************************************/
-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>shahkey.com</title>
</head>

<body>
<?php

/**************************************
/ create by Alireza & mehdi
/ shahkey.com froums
/**************************************/

include('classname.php');

$fname = $_POST[fname] . '.html';
$fdata = $_POST[fdata];

if ( isset ( $fdata ) ) {
$php = new tmp;
$tmp = $php->load_tmp_file('tmp.html');

$new_file = $php->tmp_parser($tmp, $fname, $fdata);

$open = fopen ($fname, "w");
if ($open) {
fwrite ($open, $new_file);
fclose ($open);
$worked = true;
} else $worked = false;

if ( $worked ) echo "you can see file in <a href=\"$fname\">Here</a>";
else echo "can't create file!";
}

?>
<form method="POST" action="index.php" name="form">
<p dir="rtl"><font face="Tahoma" style="font-size: 9pt">اسم فایل مورد نظر (
اسم فایل رو فارسی ندین ) :</font> <input type="text" name="fname" size="20"></p>
<p dir="rtl"><font face="Tahoma" style="font-size: 9pt">اطلاعاتی که می خواین توش ذخیره بشه
(فارسی، انگلیسی فرقی نداره) :</font> <textarea rows="6" name="fdata" cols="30"></textarea></p>
<p dir="rtl"><input style="font-family:tahoma" type="submit" value="ارسال"></p>
<p dir="rtl" align="center"><font face="Tahoma" style="font-size: 9pt">این
فایل به کمک دوستان در انجمن های <a href="http://www.shahkey.com">
http://www.shahkey.com</a> ایجاد شده است</font></p>
</form>

</body>

</html>

و بالا خره فایل tmp.html :

این فایل هم فایل تمپلیت ما هستش که ما از دوتا تک برای جایگزینی اطلاعات در اون استفاده کرده ایم ( <shahkey-file-name> و <shahkey-data> )

<html>

<head>
<!--
/**************************************
/ create by Alireza & mehdi
/ shahkey.com froums
/**************************************/
-->
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>New Page 3</title>
</head>

<body>

<div align="center">
<center>
<table border="1" cellspacing="1" width="76%" id="AutoNumber1" height="159">
<tr>
<td width="100%" height="155">
<p align="center">file name : <shahkey-file-name><p align="center">
file data : <font face="Tahoma" style="font-size: 9pt"><shahkey-data></font>
<p dir="rtl" align="center">&nbsp;</p>
<p dir="rtl" align="center"><font face="Tahoma" style="font-size: 9pt">این فایل
به کمک دوستان در انجمن های <a href="http://www.shahkey.com">
http://www.shahkey.com</a> ایجاد شده است</font></p>
</td>
</tr>
</table>
</center>
</div>

</body>

</html>

منابع : shahkey.com
وبلاگ سالار کابلی
راهنما php

byvafa
01-16-2007, 07:49 PM
بدردتون خورد ؟

Shahed
01-16-2007, 08:04 PM
ایول. پس کارت راه افتاد؟
عالیه. :)

shahkey
01-16-2007, 10:15 PM
دستت درد نکنه که کاملش کردی

byvafa
01-17-2007, 02:08 PM
ایول. پس کارت راه افتاد؟
عالیه. :)

آره دیگه، دست شما هم درد نکنه :)
دستت درد نکنه که کاملش کردی
Wow!
این چه حرفیه؟ ما هنوز باهم کار داریم ... هنوز باید شارگردیتونو کنیم ... :wub: :heart:

shahkey
01-17-2007, 05:17 PM
Wow!
این چه حرفیه؟ ما هنوز باهم کار داریم ... هنوز باید شارگردیتونو کنیم ... :wub:
ما مخلصیم!

hba
01-18-2007, 05:41 PM
بابا به این کار می گند templateparser بهترینش با قدرت smarty هست

balabala
01-18-2007, 05:48 PM
درواقع استاتیک نمیکنه بلکه استفاده از قالب رو راحتتر میکنه!
بازم ممنون، خیلی جالب بود.

byvafa
01-21-2007, 08:10 PM
زیاد گیر ندین بابا، ما تازه کاریم....
خیلی دنبالش بودم تازه یادش گرفتم ! یه سئوال دیگه در این زمینه، میتونین کمکم کنید ؟ ...


چه طوری میتونم یه حلقه تو متن بوجود بیارم ؟
برای مثال هر یک از ارسال ها رو براش یه سری کدها رو تکرار کنه !

به کدهای یکی از قالب های موویل تایپ که سر زدم دیدم اینجوریه :

<mt-entries>
<tr>
<-mt-title->
</tr>
</mt-entries>

یعنی برای هر نتیجه که از دیتابیس میگیره همه کدهای بین <mt-entries> و </mt-entries> رو تکرار کنه ...

میتونی کمکم کنی ؟
ممنون

Shahed
01-21-2007, 09:30 PM
زیاد گیر ندین بابا، ما تازه کاریم....
خیلی دنبالش بودم تازه یادش گرفتم ! یه سئوال دیگه در این زمینه، میتونین کمکم کنید ؟ ...


چه طوری میتونم یه حلقه تو متن بوجود بیارم ؟
برای مثال هر یک از ارسال ها رو براش یه سری کدها رو تکرار کنه !

به کدهای یکی از قالب های موویل تایپ که سر زدم دیدم اینجوریه :

<mt-entries>
<tr>
<-mt-title->
</tr>
</mt-entries>

یعنی برای هر نتیجه که از دیتابیس میگیره همه کدهای بین <mt-entries> و </mt-entries> رو تکرار کنه ...

میتونی کمکم کنی ؟
ممنون
تگ <mt-entries> نداریم تو ام تی ها ! :D

byvafa
01-22-2007, 06:02 PM
شما هی تحویل بگییر ها ...!

کسی جواب نمیده .... ؟ خیلی نیازش دارم ...

balabala
01-22-2007, 06:11 PM
شما هی تحویل بگییر ها ...!

کسی جواب نمیده .... ؟ خیلی نیازش دارم ...
حلقه؟ خب با for بساز. اولش تگ رو با echo بده بیرون بعد چیزی که از دیتابیس میگیری، و بعد تگ رو ببند.

vaheb
10-19-2007, 02:36 PM
جالبه ! اما من class و oop یاد ندارم . دارم دیوونه می شم یه پروژه دارم اما هنوز oop یاد ندارم .