<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>پادشاه فلش &#187; پی اچ پی</title>
	<atom:link href="http://blog.iflashlord.com/category/%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c/%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.iflashlord.com</link>
	<description>دست نوشته های یک پادشاه فلش</description>
	<lastBuildDate>Wed, 11 Jan 2012 12:09:13 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>افزایش سرعت بارگزاری صفحات php و html با چند تکنیک ساده</title>
		<link>http://blog.iflashlord.com/1390/08/%d8%a7%d9%81%d8%b2%d8%a7%db%8c%d8%b4-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%a8%d8%a7%d8%b1%da%af%d8%b2%d8%a7%d8%b1%db%8c-%d8%b5%d9%81%d8%ad%d8%a7%d8%aa/</link>
		<comments>http://blog.iflashlord.com/1390/08/%d8%a7%d9%81%d8%b2%d8%a7%db%8c%d8%b4-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%a8%d8%a7%d8%b1%da%af%d8%b2%d8%a7%d8%b1%db%8c-%d8%b5%d9%81%d8%ad%d8%a7%d8%aa/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 01:15:04 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA[Caching]]></category>
		<category><![CDATA[flush]]></category>
		<category><![CDATA[head]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[speed]]></category>
		<category><![CDATA[style]]></category>
		<category><![CDATA[افزایش سرعت]]></category>
		<category><![CDATA[اچ تی ام ال]]></category>
		<category><![CDATA[بارگزاری]]></category>
		<category><![CDATA[تگ هد]]></category>
		<category><![CDATA[سرعت]]></category>
		<category><![CDATA[کش]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=1551</guid>
		<description><![CDATA[افزون بر تکنیک‌هایی که کارایی و سرعت تولید محتوا را زیاد می‌کنند، چند تکنیک بدون هزینه نیز وجود دارند که می‌توانند سبب کم‌شدن زمان انتظار مشتری برای بارگزاری صفحه شوند. محتوایی که توسط php تولید و به مرورگر ارسال می‌شود، پیش از ارسال به مرورگر در بسته‌هایی با حجم مشخص قرار می‌گیرند و اگر حجم [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2011/11/speed_up_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">افزون بر تکنیک‌هایی که کارایی و سرعت تولید محتوا را زیاد می‌کنند، چند تکنیک بدون هزینه نیز وجود دارند که می‌توانند سبب کم‌شدن زمان انتظار مشتری برای بارگزاری صفحه شوند.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">محتوایی که توسط php تولید و به مرورگر ارسال می‌شود، پیش از ارسال به مرورگر در بسته‌هایی با حجم مشخص قرار می‌گیرند و اگر حجم آن زیاد نباشد، معمولا پیش از پایان اسکریپت به مرورگر فرستاده نمی‌شوند.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1551"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">یکی از ساده‌ترین کارهایی که برای افزایش سرعت می‌توان به انجام رساند، استفاده از دستور «flush» پس از پایان تگ «head» در HTML است. دستور flush در php باعث می‌شود محتوای تولیدشده تا کنون فورا برای مرورگر فرستاده شود. با توجه به اینکه معمولا بخش head حاوی پیوند به فایل‌های دیگر مانند فایل‌های css و اسکریپت‌ها و … است. ارسال فوری آن باعث می‌شود تا مرورگر دریافت این فایل‌ها را زودتر آغاز کند و زمان انتظار برای دریافت محتوای صفحه به بهترین شکل ممکن مورد استفاده قرار گیرد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">برای پیاده‌سازی این تکنیک، قطعه کد زیر را درست بعد از تگ پایان «head» فراخوانی کنید</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php flush(); ?&gt;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">نکته‌ی ساده‌ی بعدی، قرار دادن تگ‌های «style» در بخش «head» است ( مگر در زمانی که این کار ممکن نباشد ). این کار سبب می‌شود، کارایی تکنیک قبلی به بیشینه‌ی خود برسد و علاوه بر آن، هنگامی که مرورگر خصوصیات css عناصر را از پیش بداند، محاسبات سنگین و زمان‌بر تعیین حالت نمایش به حداقل خود می‌رسد.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">برخلاف تگ‌های Style، بهتر است تا تگ‌های Script را در انتهای فایل خود قرار دهید( مگر زمانی که این کار ممکن نباشد ). علت این امر خاصیت ویژه‌ی اسکریپت‌ها است. مطابق استانداردهای موجود، تا زمانی که یک اسکریپت بارگزاری نشود، دریافت فایل‌های دیگر متوقف می‌ماند و ادامه‌ی دریافت و پردازش آن‌ها وابسته به پردازش فایل اسکریپت می‌شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">بهینه‌سازی بعدی استفاده از کمترین تعداد فایل‌های خارجی است. به این معنی که تا جایی که امکان دارد، از فایل‌های خارجی -مانند Styleها و Script- کمتری استفاده کنید. با یکی کردن محتوای این فایل‌ها، تعداد درخواست‌های http به حداقل می‌رسد و سرعت بارگزاری صفحه‌ی شما زیادتر می‌شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">از قرار دادن قالب‌بندی‌های درون‌خطی خودداری کنید و تمام قالب‌بندی‌ها را به فایل‌های css منتقل کنید. این‌کار علاوه بر حذف موارد تکراری، سبب کاهش حجم html اصلی و افزوده‌شدن قابلیت Caching به قالب‌بندی‌ها می‌شود.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><a href="http://amib.ir/weblog/?p=147" target="_blank">+منبع</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/08/%d8%a7%d9%81%d8%b2%d8%a7%db%8c%d8%b4-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%a8%d8%a7%d8%b1%da%af%d8%b2%d8%a7%d8%b1%db%8c-%d8%b5%d9%81%d8%ad%d8%a7%d8%aa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>آپلود فایل به کمک Air و PHP بر روی Server</title>
		<link>http://blog.iflashlord.com/1390/08/%d8%a2%d9%be%d9%84%d9%88%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d8%a8%d9%87-%da%a9%d9%85%da%a9-air-%d9%88-php-%d8%a8%d8%b1-%d8%b1%d9%88%db%8c-server/</link>
		<comments>http://blog.iflashlord.com/1390/08/%d8%a2%d9%be%d9%84%d9%88%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d8%a8%d9%87-%da%a9%d9%85%da%a9-air-%d9%88-php-%d8%a8%d8%b1-%d8%b1%d9%88%db%8c-server/#comments</comments>
		<pubDate>Sun, 23 Oct 2011 01:20:30 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[ادوبی ایر]]></category>
		<category><![CDATA[ادوبی فلش]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA[$_FILES]]></category>
		<category><![CDATA[$_POST]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[Adobe AIR]]></category>
		<category><![CDATA[AIR]]></category>
		<category><![CDATA[AS3]]></category>
		<category><![CDATA[Desktop]]></category>
		<category><![CDATA[Event]]></category>
		<category><![CDATA[event.bytesLoaded]]></category>
		<category><![CDATA[event.bytesTotal]]></category>
		<category><![CDATA[fclose]]></category>
		<category><![CDATA[FileFilter]]></category>
		<category><![CDATA[FileReference]]></category>
		<category><![CDATA[Flash]]></category>
		<category><![CDATA[fopen]]></category>
		<category><![CDATA[fwrite]]></category>
		<category><![CDATA[move_uploaded_file]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[ProgressEvent]]></category>
		<category><![CDATA[swf]]></category>
		<category><![CDATA[upload]]></category>
		<category><![CDATA[uploader_script.php]]></category>
		<category><![CDATA[URLRequest]]></category>
		<category><![CDATA[URLRequestMethod]]></category>
		<category><![CDATA[URLRequestMethod.POST]]></category>
		<category><![CDATA[URLVariables]]></category>
		<category><![CDATA[آپلود]]></category>
		<category><![CDATA[آپلود فایل]]></category>
		<category><![CDATA[ایر]]></category>
		<category><![CDATA[فلش]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=1394</guid>
		<description><![CDATA[در این مطلب نحوه برقراری ارتباط بین Air و PHP به منظور Upload فایل روی Server آموزش داده می‌شود. ابتدا یک فرم مخصوص آپلود می‌سازیم، سپس کدهای مربوط به PHP را نوشته و فایل‌های مورد نیاز را روی Server قرار می‌دهیم. در نهایت کدهای مربوط به نرم افزار را در Flash اضافه می‌کنیم. برای آپلود [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2011/10/php_upload_air_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در این مطلب نحوه برقراری ارتباط بین Air و PHP به منظور Upload فایل روی Server آموزش داده می‌شود. ابتدا یک فرم مخصوص آپلود می‌سازیم، سپس کدهای مربوط به PHP را نوشته و فایل‌های مورد نیاز را روی Server قرار می‌دهیم. در نهایت کدهای مربوط به نرم افزار را در Flash اضافه می‌کنیم. برای آپلود فایل‌ها از FileReference، URLRequest و URLVariables استفاده می‌کنیم.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-1394"></span></p>
<blockquote><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">دانلود سورس : <a href="http://flashcenter.ir/wp-content/uploads/2011/07/source1.zip">Source CS5.5.zip</a></p></blockquote>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">1- برای شروع یک پروژه جدید Air ایجاد کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۲- به کمک کامپوننت‌های Button , Text Input و به کمک ابزار Rectangle این فرم را بسازید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><img class="alignnone size-full wp-image-1395" title="upload_gui_iflashlord" src="http://blog.iflashlord.com/wp-content/uploads/2011/10/upload_gui_iflashlord.jpg" alt="" width="346" height="158" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۳- یک برنامه Editor باز کنید و این کدها را در آن بنویسید، سپس فایل را با نام uploader_script.php ذخیره کنید.</p>
<pre class="brush: php; title: ; notranslate">
&lt;?php $todayDate = $_POST['todayDate'];
$Name = $_POST['Name'];
$Email = $_POST['Email'];
$filename = $_FILES['Filedata']['name'];
$filetmpname = $_FILES['Filedata']['tmp_name'];
$fileType = $_FILES[&quot;Filedata&quot;][&quot;type&quot;];
$fileSizeMB = ($_FILES[&quot;Filedata&quot;][&quot;size&quot;] / 1024 / 1000);
move_uploaded_file($_FILES['Filedata']['tmp_name'], &quot;images/&quot;.$filename);
$myFile = &quot;logFile.txt&quot;;
$fh = fopen($myFile, ‘a’) or die(&quot;can’t open file&quot;);
$stringData = “\n\ntodayDate: $todayDate \n Name: $Name \n Email: $Email \n ssid: $ssid \n FileName: $filename \n TmpName: $filetmpname \n Type: $fileType \n Size: $fileSizeMB MegaBytes”;
fwrite($fh, $stringData);
fclose($fh);
?&gt;
</pre>
<ul>
<li>در این کدها ابتدا اطلاعات با متد POST دریافت می‌شود.</li>
<li>سپس فایل‌های آپلود شده به داخل فولدر images که در کنار همین فایل PHP باید بسازیم منتقل می‌شوند و نام اصلی فایل برای آن حفظ می‌شود.</li>
<li>در ادامه اطلاعات مربوط به فایل در یک فایل متنی به نام logFile.txt ذخیره می‌شود.</li>
</ul>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۴- حالا فایل PHP را در Server خود آپلود کنید. در کنار این فایل یک فولدر به نام images و یک فایل متنی به نام logFile.txt ایجاد کنید و Permission آنها را ۷۷۷ قرار دهید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۵- پنل Actions را برای فریم اول پروژه فلش فعال کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۶- حالا باید کلاسه مورد نیاز را import کنید:</p>
<pre class="brush: as3; title: ; notranslate">
import flash.net.URLRequest;
import flash.net.FileFilter;
import flash.net.FileReference;
import flash.events.ProgressEvent;
import flash.events.Event;
import flash.net.URLRequestMethod;
import flash.net.URLVariables;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">7- اطلاعات اولیه مربوط به دکمه‌ها و سایر قسمت‌هایی را که در فرم بالا قابل مشاهده هستند، به صورت زیر تعریف کنید:</p>
<pre class="brush: as3; title: ; notranslate">
upload_btn.enabled = false;
progressBar.width = 1;
uploadMsg.text = &quot;Select a File …&quot;;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">۸- متغیر URLRequest را که به آدرس فایل PHP بر روی Server متصل می‌شود، به صورت زیر تعریف کنید:</p>
<pre class="brush: as3; title: ; notranslate">
var URLrequest:URLRequest = new URLRequest(&quot;uploader_script.php&quot;);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">9- در این آموزش در نظر داریم که کاربر فقط بتواند فایل عکس و متن را با برنامه آپلود کند، بنابراین فیلتر فایل‌ها را به صورت زیر تعریف می‌کنیم و هر دو نوع فیلتر را در یک آرایه قرار می‌دهیم:</p>
<pre class="brush: as3; title: ; notranslate">
var imageTypes:FileFilter = new FileFilter(&quot;Images (*.jpg, *.jpeg, *.gif, *.png)&quot;, &quot;*.jpg; *.jpeg; *.gif; *.png”);
var textTypes:FileFilter = new FileFilter(&quot;Text Files (*.txt, *.rtf)&quot;, &quot;*.txt; *.rtf&quot;);
var allTypes:Array = new Array(imageTypes, textTypes);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">10- یک FileReference جدید می‌سازیم و Event Listener‌های مربوط به انتخاب موفق فایل توسط کاربر، کامل شدن آپلود و حین پیشرفت آپلود را برای آن به صورت زیر تعریف می‌کنیم:</p>
<pre class="brush: as3; title: ; notranslate">
var fileRef:FileReference = new FileReference();
fileRef.addEventListener(Event.SELECT, syncVariables);
fileRef.addEventListener(Event.COMPLETE, completeHandler);
fileRef.addEventListener(ProgressEvent.PROGRESS, progressHandler);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">11- حالا Event Listener‌های مربوط به کلیک روی دکمه‌ها را تعریف کنید.</p>
<pre class="brush: as3; title: ; notranslate">
browse_btn.addEventListener(MouseEvent.CLICK, browseBox);
upload_btn.addEventListener(MouseEvent.CLICK, uploadVars);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">12- تابعی که بعد از کلیک روی دکمه Browse فراخوانی می‌شود، به صورت زیر تعریف می‌شود. بعد از کلیک روی این دکمه کاربر باید پنجره انتخاب فایل را با فیلترهایی که قبلا آماده شدند، ببیند.</p>
<pre class="brush: as3; title: ; notranslate">
function browseBox(event:MouseEvent):void
{
	fileRef.browse(allTypes);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">13- تابعی که بعد از انتخاب موفق فایل توسط کاربر، فراخوانی می‌شود، به صورت زیر تعریف می‌شود. در این تابع ابتدا آدرس فایل در فیلد مربوطه نشان داده می‌شود. سپس دکمه آپلود فعال و ProgressBar آماده می‌شود، در ادامه اطلاعات مورد نیاز PHP به کمک URLVariables جمع آوری می‌شود و این اطلاعات توسط متد POST برای PHP آماده ارسال می‌شوند.</p>
<pre class="brush: as3; title: ; notranslate">
function syncVariables(event:Event):void
{
	fileDisplay_txt.text = &quot;&quot; + fileRef.name;
	upload_btn.enabled = true;
	progressBar.width = 1;
	var variables:URLVariables = new URLVariables();
	variables.todayDate = new Date();
	variables.Name = &quot;IFLashLord&quot;;
	variables.Email = &quot;test@gmail.com&quot;;
	URLrequest.method = URLRequestMethod.POST;
	URLrequest.data = variables;
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">14- حالا وقت آن رسیده است تابعی را تعریف کنیم که بعد از کلیک روی دکمه Upload فراخوانی می‌شود و اطلاعات را به PHP می‌فرستد. یکی از این اطلاعات، خود فایل انتخاب شده است که با دستور upload توسط FileReference ارسال می‌شود.</p>
<pre class="brush: as3; title: ; notranslate">
function uploadVars(event:MouseEvent):void
{
	uploadMsg.text = &quot;Uploading …&quot;;
	fileRef.upload(URLrequest);
	upload_btn.enabled = false;
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">15- توابع مربوط به کامل شدن و حین پیشرفت آپلود به صورت زیر تعریف می‌شوند.</p>
<pre class="brush: as3; title: ; notranslate">
function completeHandler(event:Event):void
{
	uploadMsg.text = fileRef.name + &quot; has been uploaded.&quot;;
	fileDisplay_txt.text = &quot;&quot;;
}

function progressHandler(event:ProgressEvent):void
{
	progressBar.width = Math.ceil(241 * (event.bytesLoaded / event.bytesTotal));
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در صورتی که نیاز داشتید می‌توانید این پروژه را به صورت swf و AS3 در کنار فایل PHP آپلود کنید. اما اگر قرار است این برنامه بر روی Desktop کار کند حتما باید از پروژه Air استفاده کنید.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1390/08/%d8%a2%d9%be%d9%84%d9%88%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d8%a8%d9%87-%da%a9%d9%85%da%a9-air-%d9%88-php-%d8%a8%d8%b1-%d8%b1%d9%88%db%8c-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>تبدیل mysql به json به صورت مستقیم</title>
		<link>http://blog.iflashlord.com/1388/07/%d8%aa%d8%a8%d8%af%db%8c%d9%84-mysql-%d8%a8%d9%87-json-%d8%a8%d9%87-%d8%b5%d9%88%d8%b1%d8%aa-%d9%85%d8%b3%d8%aa%d9%82%db%8c%d9%85/</link>
		<comments>http://blog.iflashlord.com/1388/07/%d8%aa%d8%a8%d8%af%db%8c%d9%84-mysql-%d8%a8%d9%87-json-%d8%a8%d9%87-%d8%b5%d9%88%d8%b1%d8%aa-%d9%85%d8%b3%d8%aa%d9%82%db%8c%d9%85/#comments</comments>
		<pubDate>Sat, 26 Sep 2009 20:39:27 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA[json]]></category>
		<category><![CDATA[time() پی اچ پی]]></category>
		<category><![CDATA[ارتباط با فلش]]></category>
		<category><![CDATA[اسکریپت]]></category>
		<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[تابع json_encode]]></category>
		<category><![CDATA[تابع json_encode برای]]></category>
		<category><![CDATA[جاوا اسکریپت]]></category>
		<category><![CDATA[فلش اچ]]></category>
		<category><![CDATA[فلش اچ پی]]></category>
		<category><![CDATA[فلش های اچ پی]]></category>
		<category><![CDATA[معرفی ساختارjson]]></category>
		<category><![CDATA[نسخه های مختلف پی اچ پی]]></category>
		<category><![CDATA[پی اچ پی در json_encode]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=87</guid>
		<description><![CDATA[خوب این بار به تابعی می پردازیم که به صورت مستقیم نتیجه query مربوطه به Mysql ما را به Json تبدیل می کند ؛ حتما دوستانی که تکنولوژی های جدید سر روکار دارند (مثل آژاکس) به ارزش Json و کاربرد آن در جاوا اسکریپت و پشتیبانی از آن در فریم ورکهای قدرتمند و&#8230; واقف هستند [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2009/09/json_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خوب این بار به تابعی می پردازیم که به صورت مستقیم نتیجه query مربوطه به Mysql ما را به <a title="درباره json بیشتر بدانید" href="http://uk2.php.net/json" target="_blank">Json</a> تبدیل می کند ؛ حتما دوستانی که تکنولوژی های جدید سر روکار دارند (مثل آژاکس) به ارزش Json و کاربرد آن در جاوا اسکریپت و پشتیبانی از آن در فریم ورکهای قدرتمند و&#8230; واقف هستند ، در این مثال تابعی ایجاد شده که این عمل در آن ایجاد شده ، البته در نسخه های پی اچ پی ۵.۲+ امکان تبدیل سریع با تابع json_encode ایجاد شده که کار را ساده تر کرده است ، البته در این تابع از آن استفاده نشده است و همین موضوع میتواند نکته خوبی باشد برای آشنایی بیشتر شما با ساختار Json و نحوه ایجاد خروجی آن.<br />
نکته دیگر آن که شما از این روش برای ارتباط با فلش هم می توانید استفاده کنید ، زیرا کلاس هایی (Class) برای اکشن اسکریپت در نسخه های مختلف نوشته شده که به درستی و با سرعت بالا خروجی های JSON را پشتبانی می کند که انشاء الله در مقالات آینده به طور مفصل به این بحث خواهیم پرداخت.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-87"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">تابع تبدیل مستقیم مای اس کیو ال به جی سان :</p>
<pre class="brush: php; title: ; notranslate">
function mysql2json($mysql_result,$name){
	$json=&quot;{\n\&quot;$name\&quot;: [\n&quot;;
	$field_names = array();
	$fields = mysql_num_fields($mysql_result);
		for($x=0;$x&lt;$fields;$x++){
			$field_name = mysql_fetch_field($mysql_result, $x);
			if($field_name){
				$field_names[$x]=$field_name-&gt;name;
			}
		}

	$rows = mysql_num_rows($mysql_result);

		for($x=0;$x&lt;$rows;$x++){
			$row = mysql_fetch_array($mysql_result);
			$json.=&quot;{\n&quot;;

			for($y=0;$y&lt;count($field_names);$y++) {
			$json.=&quot;\&quot;$field_names[$y]\&quot; :    \&quot;$row[$y]\&quot;&quot;;
				if($y==count($field_names)-1){
					$json.=&quot;\n&quot;;
				}
				else
				{
					$json.=&quot;,\n&quot;;
				}
			}

			if($x==$rows-1){
				$json.=&quot;\n}\n&quot;;
			}
			else
			{
				$json.=&quot;\n},\n&quot;;
			}
		}

	$json.=&quot;]\n};&quot;;
	return($json);
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">کد استفاده شده ساده می باشد ، تنها کافیست شما چند خروجی از دیتابیس خود با query های مختلف بگیرید تا با نتیجه و ساختار تابع به درستی آشنا شوید.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1388/07/%d8%aa%d8%a8%d8%af%db%8c%d9%84-mysql-%d8%a8%d9%87-json-%d8%a8%d9%87-%d8%b5%d9%88%d8%b1%d8%aa-%d9%85%d8%b3%d8%aa%d9%82%db%8c%d9%85/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>محاسبه سرعت اینترنت با پی اچ پی</title>
		<link>http://blog.iflashlord.com/1388/07/%d9%85%d8%ad%d8%a7%d8%b3%d8%a8%d9%87-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%a7%db%8c%d9%86%d8%aa%d8%b1%d9%86%d8%aa-%d8%a8%d8%a7-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/</link>
		<comments>http://blog.iflashlord.com/1388/07/%d9%85%d8%ad%d8%a7%d8%b3%d8%a8%d9%87-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%a7%db%8c%d9%86%d8%aa%d8%b1%d9%86%d8%aa-%d8%a8%d8%a7-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/#comments</comments>
		<pubDate>Wed, 23 Sep 2009 20:39:46 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA["نمایش سرعت اینترنت آنلاین"]]></category>
		<category><![CDATA[explode تابع]]></category>
		<category><![CDATA[explode پی اچ پی]]></category>
		<category><![CDATA[lمحاسبه سرعت اينترنت]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[time() پی اچ پی]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[آناليز سرعت]]></category>
		<category><![CDATA[آنالیز آنلاین سرعت اینترنت]]></category>
		<category><![CDATA[اسکریپت تست سرعت اینترنت]]></category>
		<category><![CDATA[اسکریپت تماس با ما با گزینه های زیاد]]></category>
		<category><![CDATA[اسکریپت فرستادن email]]></category>
		<category><![CDATA[اسکریپت محاسبه سرعت]]></category>
		<category><![CDATA[اسکریپت محاسبه سرعت اینترنت]]></category>
		<category><![CDATA[اسکریپت نمایش سرعت اینترنت]]></category>
		<category><![CDATA[اسکریپت نویسی در فلش]]></category>
		<category><![CDATA[اصطلاحات محاسبه]]></category>
		<category><![CDATA[اصطلاحات محاسبه سرعت اینترنت]]></category>
		<category><![CDATA[افراز]]></category>
		<category><![CDATA[اينترنت تعيين سرعت]]></category>
		<category><![CDATA[اينترنت و چگونگي سرعت]]></category>
		<category><![CDATA[اکشن نویسی در فلش]]></category>
		<category><![CDATA[برنامه براي سرعت بخشيدن به دانلود]]></category>
		<category><![CDATA[برنامه برای تعیین سرعت استفادخ]]></category>
		<category><![CDATA[برنامه برای تعیین سرعت اینترنت]]></category>
		<category><![CDATA[برنامه برای سرعت بخشیدن دانلود]]></category>
		<category><![CDATA[برنامه تعيين سرعت اينترنت]]></category>
		<category><![CDATA[برنامه تعیین سرعت اینترنت]]></category>
		<category><![CDATA[برنامه سرعت اینتر نت]]></category>
		<category><![CDATA[برنامه سرعت بخشيدن به دانلود]]></category>
		<category><![CDATA[برنامه سرعت بخشیدن به اینرنت]]></category>
		<category><![CDATA[تابع explode در جاوا اسكريپت]]></category>
		<category><![CDATA[تایین سرعت اینترنت من]]></category>
		<category><![CDATA[تخمين سرعت اينترنت]]></category>
		<category><![CDATA[تخمین اینترنت]]></category>
		<category><![CDATA[تخمین سرعت اینترنت]]></category>
		<category><![CDATA[تخمین سرعت اینترنت آنلاین]]></category>
		<category><![CDATA[تخمین سرعت اینترنت من]]></category>
		<category><![CDATA[تخمین سرعت ایننترنت]]></category>
		<category><![CDATA[تست آنلاین سرعت اینترنت]]></category>
		<category><![CDATA[تست سرعت اینترنت]]></category>
		<category><![CDATA[تست سرعت اینترنت با php و فلش]]></category>
		<category><![CDATA[تست سرعت اینترنت به صورت آنلاین]]></category>
		<category><![CDATA[تست واقعی سرعت]]></category>
		<category><![CDATA[تست واقعی سرعت اینترنت]]></category>
		<category><![CDATA[تست واقعی سرعت اینترنت شما]]></category>
		<category><![CDATA[درباره تابع]]></category>
		<category><![CDATA[روش هاي تعيين سرعت اينترنت]]></category>
		<category><![CDATA[سایت تایین سرعت اینترنت]]></category>
		<category><![CDATA[سرعت آنلاین اینترنت]]></category>
		<category><![CDATA[سرعت اينترنت من]]></category>
		<category><![CDATA[سرعت اینترنت]]></category>
		<category><![CDATA[سرعت اینترنت آنلاین]]></category>
		<category><![CDATA[سرعت اینترنت انلاین]]></category>
		<category><![CDATA[سرعت اینترنت را تست کنیم]]></category>
		<category><![CDATA[سرعت اینترنت من]]></category>
		<category><![CDATA[سرعت بخشیدن به اینترنت]]></category>
		<category><![CDATA[سرعت به دانلود بخشيدا توست برنامه]]></category>
		<category><![CDATA[طرز کار با کد خبر نامه]]></category>
		<category><![CDATA[فرستادن امیل با برنامه]]></category>
		<category><![CDATA[فلش انترنت]]></category>
		<category><![CDATA[فلش تست سرعت اینترنت]]></category>
		<category><![CDATA[فلش سرعت اینترنت]]></category>
		<category><![CDATA[محاسبه تعيين سرعت اينترنت]]></category>
		<category><![CDATA[محاسبه سرعت انترنت من]]></category>
		<category><![CDATA[محاسبه سرعت انلاین اینترنت]]></category>
		<category><![CDATA[محاسبه سرعت اينترنت]]></category>
		<category><![CDATA[محاسبه سرعت اینترنت]]></category>
		<category><![CDATA[محاسبه سرعت اینترنت بصورت آنلاین]]></category>
		<category><![CDATA[محاسبه سرعت اینترنت به روش]]></category>
		<category><![CDATA[محاسبه سرعت اینترنت؟]]></category>
		<category><![CDATA[محاسبه سرعت در انترنت]]></category>
		<category><![CDATA[محاصبه سرعت اینترنت]]></category>
		<category><![CDATA[مشاهده آی پی adsl]]></category>
		<category><![CDATA[مطالب براي فرستادن ايميل به دوستان]]></category>
		<category><![CDATA[مطالبی درباره فلش]]></category>
		<category><![CDATA[مقاله درباره پی اچ پی]]></category>
		<category><![CDATA[مقاله پی اچ پی]]></category>
		<category><![CDATA[نحوه تعیین سرعت اینترنت]]></category>
		<category><![CDATA[نرم افزار تعيين سرعت اينترنت]]></category>
		<category><![CDATA[نرم افزار تعیین سرعت اینترنت]]></category>
		<category><![CDATA[نرم افزارقوي براي دانلود]]></category>
		<category><![CDATA[نرم افزاری برای نشان دادن سرعت اینترنت انلاین]]></category>
		<category><![CDATA[نرم افزاری برای نگه داشتن سرعت دانلود اینترنت]]></category>
		<category><![CDATA[نرم افزلر سرعت اینترنت]]></category>
		<category><![CDATA[نشان دادن سرعت اینترنت]]></category>
		<category><![CDATA[نشان دادن سرعت اینترنت آنلاین]]></category>
		<category><![CDATA[نشان دادن کارکرد اینترنت]]></category>
		<category><![CDATA[نشان دادان سرعت اینترنت]]></category>
		<category><![CDATA[نمایش آنلاین سرعت اینترنت]]></category>
		<category><![CDATA[نمایش انلاین سرعت اینترنت]]></category>
		<category><![CDATA[نمایش سرعت اینترنت انلاین]]></category>
		<category><![CDATA[نمایش سرعت اینترنت بصورت انلاین]]></category>
		<category><![CDATA[نمایش سرعت دانلود آنلاین]]></category>
		<category><![CDATA[نمایشگر انلاین سرعت اینترنت]]></category>
		<category><![CDATA[نمایشگر سرعت اینترنت]]></category>
		<category><![CDATA[چگونگي تعيين سرعت اينترنت]]></category>
		<category><![CDATA[یرنامه تعیین سرعت اینترنت]]></category>

		<guid isPermaLink="false">http://blog.iflashlord.com/?p=77</guid>
		<description><![CDATA[سلام خدمت دوستان عزیز ، این بار هم  یک مقاله کوتاه و مفید  ،  یکی از کدهای که بسیار کمیاب می باشد و در اینترنت به سختی پیدا می شود ، کد محاسبه سرعت اینترنت می باشد (مثلا n  کیلوبایت در ثانیه) ، که البته روشهای زیادی برای این کار وجود دارد ، در این [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2009/09/php_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">سلام خدمت دوستان عزیز ، این بار هم  یک مقاله کوتاه و مفید  ،  یکی از کدهای که بسیار کمیاب می باشد و در اینترنت به سختی پیدا می شود ، کد محاسبه سرعت اینترنت می باشد (مثلا n  کیلوبایت در ثانیه) ، که البته روشهای زیادی برای این کار وجود دارد ، در این مقاله می خواهیم یک روش خوب با پی اچ پی رو معرفی کنیم ، که به راحتی بتوانید سرعت اینترنت کاربر خودتان رو بدست بیاورید ، این که بدانید سرعت اینترنت هر کاربرها چقدر می باشد علاوه بر این که به صورت عادی برای نمایش این گزینه مفید می باشد ، می تواند روشی باشد تا شما محتوای با کیفیت بالا را برای کاربران باسرعت بالا  و با کیفیت پایین تر را برای دیگر کاربران به نمایش بگزارید و دیگر به روشهای سنتی مجبور نباشید با دو دکمه و انتخاب دستی ، کاربر این کار را انجام دهید و یا اگر مایل هستید از دکمه ها هم استفاده کنید با این کد می توانید به کاربران پر سرعت اعلام کنید که سرعت شما برای بخش با کیفیت مناسب می باشد و&#8230; به هر حال این مواردی که ذکر کردم ، تعدادی از موارد استفاده است که شما میتوانید نسبت به پروژه خودتون از این کد به صورتهای مختلف استفاده کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و حالا کد :</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><!-- pre {direction:ltr;} --></p>
<pre class="brush: php; title: ; notranslate">
&lt;?php
$kb=512;
echo &quot;streaming $kb Kb...&lt;!-&quot;;
flush();
$time = explode(&quot; &quot;,microtime());
$start = $time[0] + $time[1];
	for($x=0;$x&lt;$kb;$x++){
		echo str_pad('', 1024, '.');
		flush();
	}
$time = explode(&quot; &quot;,microtime());
$finish = $time[0] + $time[1];
$deltat = $finish - $start;
echo &quot;-&gt; Test finished in $deltat seconds. Your speed is &quot;. round($kb / $deltat, 3).&quot;Kb/s&quot;;
?&gt;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و حالا در ادامه کد را  خط به خط تحلیل می کنیم :</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-77"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>خط ۲  : </strong>در این خط ما مقداری را تعریف می کنیم که این مقدار برای تست سرعت استفاده می شود (به کیلو بایت) شما می توانید توسط GET و POST این مقدار را تعیین نمایید تا بتوانید در کد خود هر زمان این مقدار را تعیین نمایید.<br />
<strong>خط ۳ :</strong> این خط برای نمایش شروع کار می باشد و اصلا برای کد لازم نیست و فقط برای نمایش شروع تست در مثال استفاده شده است.<br />
<strong>خط ۴ : </strong>شروع عملیات Flush (<a title="تابع Flush" href="http://www.php.net/flush" target="_blank"> درباره تابع Flush می توانید در اینجا بخوانید</a>)<br />
<strong>خط ۵ :</strong> ذخیره زمان شروع در متغییر $time<br />
<strong>خط ۶ :</strong> تعریف $start به وسیله مقدار های $time<br />
<strong>خط ۷ تا ۱۰  : </strong>با مقدار $kb تعریف شده اطلاعات ایجاد می کنیم و دوباره ّمush را اجرا می کنید ، این عمل به تعداد $kb تکرار می شود ، در کل در هر بار به مقدار ۱۰۲۴ بایت پد ایجاد می شود که معادل ۱ کیلو بایت می باشد. و عمل کش  انجام می شود.<br />
<strong>خط ۱۱ :</strong> دوباره زمان را ذخیره می کنیم .<br />
<strong>خط ۱۲-۱۳  :</strong> تفاوت بین شروع و پاین به هنگام سازی ها را بدست می آوریم.<br />
<strong>خط ۱۴ :</strong> مقدار نهایی را بدست می آوریم و گرد می کنیم و با متن مروبطه نمایش می دهیم ( که شما می توانید از این مقدار برای شروط استفاده کنید و در حالت های مختلف سرعت نتیجه های مختلفی را نمایش دهید)</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خوب ، تمام شد ، به همین راحتی بود <img src='http://blog.iflashlord.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">باید به این نکته توجه داشته باشید هر چه عدد ۵۱۲ (که در ابتدای کد استفاده شد) بزرگتر باشد ، می بایست نتیجه دقیق تری از سرعت بدست بیاورید ولی زمان بیشتر هم برای اجرای کد صرف خواهد شد</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و در بعضی از تنظیمات پی اچ پی output buffering روی On تنظیم شده این باعث می شود که پی اچ پی قبل از هدرها و کوکی ها و &#8230;(به جز جابه جایی اطلاعات) اجرا شود و این باعث می شود زمان به درستی محاسبه نشود ، با قرار دادن این گزینه روی Off و در واقع غیر فعال کردن output buffering می توانید به مقداری واقعی تر دست پیدا کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><a href="http://www.triquitips.com/timetest.php" target="_blank">شما می توانید یک مثال را در اینجا مشاهده نمایید</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1388/07/%d9%85%d8%ad%d8%a7%d8%b3%d8%a8%d9%87-%d8%b3%d8%b1%d8%b9%d8%aa-%d8%a7%db%8c%d9%86%d8%aa%d8%b1%d9%86%d8%aa-%d8%a8%d8%a7-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>آپلود فایل با فلش ۸ و پی اچ پی</title>
		<link>http://blog.iflashlord.com/1388/01/%d8%a2%d9%be%d9%84%d9%88%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d8%a8%d8%a7-%d9%81%d9%84%d8%b4-%db%b8-%d9%88-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/</link>
		<comments>http://blog.iflashlord.com/1388/01/%d8%a2%d9%be%d9%84%d9%88%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d8%a8%d8%a7-%d9%81%d9%84%d8%b4-%db%b8-%d9%88-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/#comments</comments>
		<pubDate>Thu, 09 Apr 2009 02:55:08 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[اکشن اسکریپت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA[Object]]></category>
		<category><![CDATA[آپلود فايل فلش براي نمايش در وب]]></category>
		<category><![CDATA[آپلود فايل هاي فلش]]></category>
		<category><![CDATA[آپلود فایا swf]]></category>
		<category><![CDATA[آپلود فایل]]></category>
		<category><![CDATA[آپلود فایل swf]]></category>
		<category><![CDATA[آپلود فایل با لینک مستقیم]]></category>
		<category><![CDATA[آپلود فایل جاوا]]></category>
		<category><![CDATA[آپلود فایل فبش]]></category>
		<category><![CDATA[آپلود فایل فلاش]]></category>
		<category><![CDATA[آپلود فایل فلش]]></category>
		<category><![CDATA[آپلود فایل فلش swf]]></category>
		<category><![CDATA[آپلود فایل فلش با لینک مستقیم]]></category>
		<category><![CDATA[آپلود فایل فلش برای وب سایت]]></category>
		<category><![CDATA[آپلود فایل فلش رایگان]]></category>
		<category><![CDATA[آپلود فایل فلش لینک مستقیم]]></category>
		<category><![CDATA[آپلود فایل های فلش]]></category>
		<category><![CDATA[آپلود فایل پی اچ پی]]></category>
		<category><![CDATA[آپلود فایلهای swf]]></category>
		<category><![CDATA[آپلود فلش]]></category>
		<category><![CDATA[آپلود فلش با لينك مستقيم]]></category>
		<category><![CDATA[آپلود فلش رایگان]]></category>
		<category><![CDATA[آپلود فلش فایل]]></category>
		<category><![CDATA[آپلود فلش مستقیم]]></category>
		<category><![CDATA[آپلود فیل]]></category>
		<category><![CDATA[آپلود فیل رایگان]]></category>
		<category><![CDATA[آپلود فیل فلش]]></category>
		<category><![CDATA[آپلود مستقیم فایل]]></category>
		<category><![CDATA[آپلود مستقیم فایل فلش]]></category>
		<category><![CDATA[آپلود مستقیم فلش]]></category>
		<category><![CDATA[آپلود همه چیز]]></category>
		<category><![CDATA[آپلود کد فلش]]></category>
		<category><![CDATA[آپلود کردن فایل فلش]]></category>
		<category><![CDATA[آپلودفایل فلش]]></category>
		<category><![CDATA[آپلودفایل های فلش]]></category>
		<category><![CDATA[آپلودفایلهای فلش]]></category>
		<category><![CDATA[آپلودفلش]]></category>
		<category><![CDATA[آپولود]]></category>
		<category><![CDATA[آپولود فایل]]></category>
		<category><![CDATA[آپولود چیست]]></category>
		<category><![CDATA[آژاکس در پی اچ پی]]></category>
		<category><![CDATA[آژاکس و پی اچ پی]]></category>
		<category><![CDATA[آژاکس پی اچ پی]]></category>
		<category><![CDATA[ارتبات پی اچ پی با فلش]]></category>
		<category><![CDATA[ارسال داده از فلش به پی اچ پی]]></category>
		<category><![CDATA[اسکریپ آپلودفایل]]></category>
		<category><![CDATA[اسکریپت]]></category>
		<category><![CDATA[اپلود لینک فلش پلیر]]></category>
		<category><![CDATA[اپلود مستقیم فایل]]></category>
		<category><![CDATA[دانلود کد جاوا اپلود فلش برای وبسایت]]></category>
		<category><![CDATA[فایل فلش]]></category>
		<category><![CDATA[چیست آپولود کردن]]></category>
		<category><![CDATA[کد upload در پی اچ پی]]></category>
		<category><![CDATA[کد آپلود]]></category>
		<category><![CDATA[کد آپلود آنلاین]]></category>
		<category><![CDATA[کد آپلود با پی اچ پی]]></category>
		<category><![CDATA[کد آپلود فایل در پی اچ پی]]></category>
		<category><![CDATA[کد آپلود فایل روی سرور]]></category>
		<category><![CDATA[کد اپلود فایل در پی اچ پی]]></category>
		<category><![CDATA[کد با پی اچ پی]]></category>
		<category><![CDATA[کد برای آپلود فایل]]></category>
		<category><![CDATA[کد برای آپلود فایل فلش در وب]]></category>
		<category><![CDATA[کد برای آپلود فایل های فلش در وب سایت]]></category>
		<category><![CDATA[کد جاوا آپلود]]></category>
		<category><![CDATA[کد جاوا اپلود فایل]]></category>
		<category><![CDATA[کد جاوا اپلود فایل ها]]></category>
		<category><![CDATA[کد دانلود در پی اچ پی]]></category>
		<category><![CDATA[کد دانلود فابل فلش]]></category>
		<category><![CDATA[کد دانلود فایل به پی اچ پی]]></category>
		<category><![CDATA[کد پی اچ پی اپلود فایل فلش برای وبسایت]]></category>
		<category><![CDATA[کد پی اچ پی برای دانلود و اپلود]]></category>
		<category><![CDATA[کدآپلود همه چی]]></category>
		<category><![CDATA[کدهای کاربردی]]></category>
		<category><![CDATA[کـامپوننت فلش]]></category>

		<guid isPermaLink="false">http://174.142.91.140/~iflashlo/blog/?p=6</guid>
		<description><![CDATA[کلاس های مرجع فایل در اکشن اسکریپت برای این کار شما نیاز دارید با استفاده از گروه کلاس های filereference پنجره انتخاب گر فایل را صدا بزنید و با استفاده از این پنجره یاز شده آدرس فایلی را که می خواهید آپلود نمایید را به فلش بدهید.شما در واقع توسط متد آپلود این کلاس و [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2009/04/flash_with_php_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>کلاس های مرجع فایل در اکشن اسکریپت<br />
</strong>برای این کار شما نیاز دارید با استفاده از گروه کلاس های filereference پنجره انتخاب گر فایل را صدا بزنید و با استفاده از این پنجره یاز شده آدرس فایلی را که می خواهید آپلود نمایید را به فلش بدهید.شما در واقع توسط متد آپلود این کلاس و شنونده ای می سازید که تا مادامی که عمل آپلود برقرار است رویدادها رو به شما اطلاع  دهد.<br />
اگه همه چیز خوب باشد شما میبایست یک رویداد onComplete را دریافت نمایید در غیر این صورت می بایست یکی دیگر از رویدادهای مربوط به خطاها را دریافت نمایید،شما توضیحات مربوط به این رویداد ها را می توانید در راهنمای فلش مطالعه نمایید با این حال برای راحتی شما در اینجا هم اشاره ای به آنها می کنیم.<strong> </strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-6"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>متدها</strong></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td><strong>Signature</strong><strong> </strong></td>
<td><strong>توضیحات</strong><strong> </strong></td>
</tr>
<tr>
<td>addListener(listener:Object) : Void</td>
<td>Registers an object to receive notification when a FileReference event listener is invoked.</td>
</tr>
<tr>
<td>browse([typelist:Array]) : Boolean</td>
<td>Displays a file-browsing dialog box in which the user can select a local file to upload.</td>
</tr>
<tr>
<td>cancel() : Void</td>
<td>Cancels any ongoing upload or download operation on this FileReference object.</td>
</tr>
<tr>
<td>download(url:String, [defaultFileName:String]) : Boolean</td>
<td>Displays a dialog box in which the user can download a file from a remote server.</td>
</tr>
<tr>
<td>removeListener(listener:Object) : Boolean</td>
<td>Removes an object from the list of objects that receive event notification messages.</td>
</tr>
<tr>
<td>upload(url:String) : Boolean</td>
<td>Starts the upload of a file selected by a user to a remote server.</td>
</tr>
</tbody>
</table>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">&nbsp;</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>رویداد ها</strong></p>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="378"><strong>رویداد</strong><strong> </strong></td>
<td width="377"><strong>توضیحات</strong><strong> </strong></td>
</tr>
<tr>
<td>onCancel = function(fileRef:FileReference) {}</td>
<td>Invoked when the user dismisses the file-browsing dialog box.</td>
</tr>
<tr>
<td>onComplete = function(fileRef:FileReference) {}</td>
<td>Invoked when the upload or download operation has successfully completed.</td>
</tr>
<tr>
<td>onHTTPError = function(fileRef:FileReference, httpError:Number) {}</td>
<td>Invoked when an upload fails because of an HTTP error.</td>
</tr>
<tr>
<td>onIOError = function(fileRef:FileReference) {}</td>
<td>Invoked when an input/output error occurs.</td>
</tr>
<tr>
<td>onOpen = function(fileRef:FileReference) {}</td>
<td>Invoked when an upload or download operation starts.</td>
</tr>
<tr>
<td>onProgress = function(fileRef:FileReference, bytesLoaded:Number, bytesTotal:Number) {}</td>
<td>Invoked periodically during the file upload or download operation.</td>
</tr>
<tr>
<td>onSecurityError = function(fileRef:FileReference, errorString:String) {}</td>
<td>Invoked when an upload or download fails because of a security error.</td>
</tr>
<tr>
<td>onSelect = function(fileRef:FileReference) {}</td>
<td>Invoked when the user selects a file to upload or download from the file-browsing dialog box.</td>
</tr>
</tbody>
</table>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">&nbsp;</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong>مثالی برای آپلود</strong></p>
<pre class="brush: as3; title: ; notranslate">
//دامین ها مجاز برای عمل آپلود توسط فایل فلش
System.security.allowDomain(&quot;http://localhost&quot;, &quot;127.0.0.1&quot;);
import flash.net.FileReference;//ایجاد آبجکت برای لیسترنر (شنونده)
var listener:Object = new Object();
listener.onSelect = function(selectedFile:FileReference):Void {
	statusArea.text += &quot;Attempting to upload &quot; + selectedFile.name + &quot;\n&quot;;
 	selectedFile.upload(&quot;http://localhost/upload/upload.php&quot;);
 };// شروع آپلود فایل

listener.onOpen = function(selectedFile:FileReference):Void {
	statusArea.text += &quot;Uploading &quot; + selectedFile.name + &quot;\n&quot;;
 };

listener.onHTTPError = function(file:FileReference, httpError:Number):Void {
	imagePane.contentPath = &quot;error&quot;;
	imagePane.content.errorMSG.text = &quot;HTTPError number: &quot;+httpError +&quot;\nFile: &quot;+ file.name;
 };

listener.onIOError = function(file:FileReference):Void {
	imagePane.contentPath = &quot;error&quot;;
	imagePane.content.errorMSG.text = &quot;IOError: &quot;+ file.name;
 };

listener.onSecurityError = function(file:FileReference, errorString:String):Void {
 	imagePane.contentPath = &quot;error&quot;;
 	imagePane.content.errorMSG.text = &quot;SecurityError: &quot;+SecurityError+&quot;\nFile: &quot;+ file.name;
 };
// فایل آپلود شده
listener.onComplete = function(selectedFile:FileReference):Void {
 	statusArea.text += &quot;Upload finished.\nNow downloading &quot; + selectedFile.name + &quot; to player\n&quot;;
 	details.text = &quot;&quot;;
 for(i in selectedFile){
 	details.text +=&quot;&lt;b&gt;&quot;+i+&quot;&lt;/b&gt; &quot;+selectedFile[i]+&quot;\n&quot;
 	downloadImage(selectedFile.name);
 }

};

var imageFile:FileReference = new FileReference();
imageFile.addListener(listener);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">در ابتدای کد زیر برای امنیت پروژه شما می بایست نام دامین های مجاز برای کار با این فایل را بدهید تا فقط بر روی این دامین ها عمل آپلود مجاز باشد ، البته در صورتی که میخواهید بر وری تمامی ساب دامین ها یک دامین فعال نمایید میبایست به صورت زیر عمل نمایید :</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">http://*.iflashlord.com</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و یا به صورت زیر</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">http://www.iflashlord.com</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">البته در روش دوم فقط دامین اصلی سات مجاز میباشد ؛ به جای iflashlord.com نام دامین موردنظرتون رو بنویسید.<br />
در مثال بالا فرض بر این گرفته شده که شما پروژه را بر روی لوکال هاست خود اجرا می کنید به همین دلیل تنها دامین مجاز برای شما لوکال هاست میباشد.<br />
<em>شما میتوانید تعداد زیادی از دامین ها مورد نظرتون رو به این بخش اضافه نمایید فقط کافی است که با کاما آنها را از هم جدا نمایید.</em><br />
توجه داشته باشید رویداد onComplete بعد از اتمام کار آپلود فعال میشود.<br />
و رویداد onSelect بعد از انتخاب فایل در پنجره انتخاب فایل فعال می شود.<br />
و رویداد onProgress که در زمان آپلود فعال می شود البته فقط دارای مقدار یک (۱) میباشد که برای اتمام عملیات میباشد و نمی تواند درصد اتمام عملیات را بر گرداند، پس در نتیجه شما نمیتونید یک پروسس بار برای نمایش مقدار آپلود شدن قرار دهید فقط میتوانید در زمان اجرای عملیات بارگزای فقط یک متن یا انیمیشن ساده را که در انجام بودن عملیات را برساند نشان دهید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">با کد های زیر ( که در ادامه مطلب مشاهده می کنید) در ابتدا رویداد اتمام آپلود را ثبت می نماییم و فرمان دانلود تصویر را می دهد که در واقع تابع imageDownloaded را بعد از اتمام عملیاد آپلود فایل فعال می کند.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و بعد محدودیتی برای پسوندهای مورد نظرتون که اجازه آپلود آنها را می دهید قرار می دهید ، شما میتوانید پسوندهای مورد نظرتون را اضافه نمایید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و در آخر هم توابع دانلود تصویر آپلود شده را تعریف می نمایید</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><em><strong>توجه در آخر این پروژه تصویر آپلود شده نمایش داده می شود و برای نمایش این تصویر از کامپوننت فلش که از بخش کامپوننت های فلش با نام scrollPane قابل درسترسی هست استفاده شده است.<br />
شما می بایست نام Instance name  را در پانل Properties با scrollPane قرار دهید تا در آخر تصویر در این بخش بارگزاری شود.</strong></em></p>
<pre class="brush: as3; title: ; notranslate">
uploadBtn.onPress = uploadImage;
imagePane.addEventListener(&quot;complete&quot;, imageDownloaded);
// ایجاد محدودیت نوع فایل و باز کردن پنجره انتخاب فایل;

function uploadImage(event:Object):Void
{
	imageFile.browse([{description: &quot;Image Files&quot;, extension: &quot;*.jpg;*.gif;*.png&quot;}]);
}// برابر با ۱- می شود و یک پیغام خطا داده میشود event.total  در صورت که تصویر آپلود شده دانلود نشود

function imageDownloaded(event:Object):Void
{
	if (event.total == -1)
	{
		imagePane.contentPath = &quot;error&quot;;
	}
}// فلش scrollPane نمایش تصویر دانلود شده در

function downloadImage(file:Object):Void
{
	imagePane.contentPath = &quot;http://localhost/upload/files/&quot; + file;
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong> در آخر هم برنامه نویسی سمت سرور (پی اچ پی) </strong></p>
<pre class="brush: php; title: ; notranslate">
//در صورتی که پوشه مربوطه برای آپلود عکسها و جود نداشت این پوشه رو بساز
if(!is_dir(&quot;./files&quot;)) mkdir(&quot;./files&quot;, 0755);// آپلود می شود move_uploaded_file در کد زیر ضمن دریافت مقادیری که توسط فلش ارسال شده فایل با تابع
move_uploaded_file($_FILES['Filedata']['tmp_name'], &quot;./files/&quot;.$_FILES['Filedata']['name']);
// در زیر دسترسی به فایل آپلود شده رو تغییر میدهیم تا امکان باز نویسی و حذف فایل نیز موجود باشد
// نیز می بایست دارای دسترسی ۷۵۵ باشد files در ضمن پوشه
chmod(&quot;./files/&quot;.$_FILES['Filedata']['name'], 0777); </pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خبری خوب برای افرادی که هیچ رابطه خوبی با پی اچ پی ندارند!!<br />
شما می توانید از دیگر زبانهای برنامه نویسی هم برای این کار استفاده نمایید ولی اصول کار همین می باشد به روش و نام دریافت مقدارهای فایل ها دقت نمایید. سورس کدهای پروژه : <a href="http://blog.iflashlord.com/wp-content/uploads/2009/04/upload-php-flash-iflashlordcom.zip" target="_blank"><strong>برای دانلود اینجا کلیک نمایید</strong></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1388/01/%d8%a2%d9%be%d9%84%d9%88%d8%af-%d9%81%d8%a7%db%8c%d9%84-%d8%a8%d8%a7-%d9%81%d9%84%d8%b4-%db%b8-%d9%88-%d9%be%db%8c-%d8%a7%da%86-%d9%be%db%8c/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>۴۸ نکته و اصل مهم در برنامه نویسی پی اچ پی</title>
		<link>http://blog.iflashlord.com/1387/12/%d9%86%da%a9%d8%a7%d8%aa-%d8%a7%d8%b5%d9%88%d9%84-%d9%85%d9%87%d9%85-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c/</link>
		<comments>http://blog.iflashlord.com/1387/12/%d9%86%da%a9%d8%a7%d8%aa-%d8%a7%d8%b5%d9%88%d9%84-%d9%85%d9%87%d9%85-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c/#comments</comments>
		<pubDate>Sun, 08 Mar 2009 05:12:32 +0000</pubDate>
		<dc:creator>بهروز پولادرگ</dc:creator>
				<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[پی اچ پی]]></category>
		<category><![CDATA[$_request]]></category>
		<category><![CDATA[$_request دستور]]></category>
		<category><![CDATA[.htaccess mp3 جلوگیری از کپی]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[escape '%' دستور]]></category>
		<category><![CDATA[escape کردن کاراکترهای ویژه]]></category>
		<category><![CDATA[get_magic_quotes_gpc]]></category>
		<category><![CDATA[insertکردن درphp]]></category>
		<category><![CDATA[menu]]></category>
		<category><![CDATA[mysql_escape_string ا]]></category>
		<category><![CDATA[mysql_real_escape_string]]></category>
		<category><![CDATA[phpتابع های موجود در]]></category>
		<category><![CDATA[phpتابع پاک کردن در]]></category>
		<category><![CDATA[preg_replace]]></category>
		<category><![CDATA[preg_replace تابع]]></category>
		<category><![CDATA[scope]]></category>
		<category><![CDATA[session در پی اچ پی]]></category>
		<category><![CDATA[sky]]></category>
		<category><![CDATA[utf8 در پی اچ پی]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[xxx]]></category>
		<category><![CDATA[آرايه $_request]]></category>
		<category><![CDATA[از بین بردن خطای register_globals]]></category>
		<category><![CDATA[اسکریپت]]></category>
		<category><![CDATA[اسکریپت تشخیص ایمیل]]></category>
		<category><![CDATA[اغلب php نویسان به session_destroy کفایت میکنن]]></category>
		<category><![CDATA[ایمیل در پی اچ پی]]></category>
		<category><![CDATA[برای از بین بردن دعاجادو چه کنیم]]></category>
		<category><![CDATA[برنامه نویسان]]></category>
		<category><![CDATA[برنامه نویسی باینری]]></category>
		<category><![CDATA[تابع preg_replace]]></category>
		<category><![CDATA[تابع تشخیص صحت ایمیل در پی اچ پی]]></category>
		<category><![CDATA[تشخیص ایمیل]]></category>
		<category><![CDATA[تعريف فلش]]></category>
		<category><![CDATA[تعریف تابع preg_replace]]></category>
		<category><![CDATA[تعریف فلش]]></category>
		<category><![CDATA[تعریف فلش کردن]]></category>
		<category><![CDATA[تگ die در php]]></category>
		<category><![CDATA[حملات cross site scripting file inclusion]]></category>
		<category><![CDATA[خطای boot overflow هنگام نصب ویندوز]]></category>
		<category><![CDATA[درپی اچ پی utf 8 اضافه کردن]]></category>
		<category><![CDATA[دستور $_request]]></category>
		<category><![CDATA[دستور die]]></category>
		<category><![CDATA[دستور die در php]]></category>
		<category><![CDATA[دستور load sound فلش]]></category>
		<category><![CDATA[دستور mysql_escape_string]]></category>
		<category><![CDATA[دستور در php die]]></category>
		<category><![CDATA[رویداد]]></category>
		<category><![CDATA[ساخت کامنت]]></category>
		<category><![CDATA[ساخت کامنت در فلش]]></category>
		<category><![CDATA[فلش sound]]></category>
		<category><![CDATA[قفل]]></category>
		<category><![CDATA[كد كردن فايل هاي پي اچ پي]]></category>
		<category><![CDATA[كد پي اچ پي محدود كردن دسترسي به فايل توسط اي پي]]></category>
		<category><![CDATA[محدود کردن دسترسی به فایل در htaccess]]></category>
		<category><![CDATA[نرم افزار]]></category>
		<category><![CDATA[نکته هایی در پی اچ پی]]></category>
		<category><![CDATA[پ اچ پ نویسی]]></category>
		<category><![CDATA[پ اچ پی]]></category>
		<category><![CDATA[پیغام register_globals]]></category>
		<category><![CDATA[چطوری در فلش کلاس تعریف کنیم]]></category>
		<category><![CDATA[کامنت نویسی با پی اچ پی]]></category>
		<category><![CDATA[کدphp چک کردن آدرس ایمیل]]></category>
		<category><![CDATA[۴۸ نکته و اصل مهم در برنامه نویسی پی اچ پی]]></category>

		<guid isPermaLink="false">http://174.142.91.140/~iflashlo/blog/?p=9</guid>
		<description><![CDATA[به نام آن خدایی که نام او راحت روح است و پیغام او مفتاح فتوح است و سلام او در وقت صباح مؤمنان را صبوح است و ذکر او مرهم دل مجروح است و مهر او بلا نشینان را کشتی نوح است. این مطلب از مجوعه ای از مباحثی که در انجمن مجید آنلاین پیرامون [...]]]></description>
			<content:encoded><![CDATA[<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">
	<img src="http://blog.iflashlord.com/wp-content/uploads/2009/09/php_iflashlord.jpg" alt="iflashlord.com" />
	</p><p style="text-align: right;">
<p style="text-align: right;">به نام آن خدایی که نام او راحت روح است و پیغام او مفتاح فتوح است و سلام او در وقت صباح مؤمنان را صبوح است و ذکر او مرهم دل مجروح است و مهر او بلا نشینان را کشتی نوح است.</p>
<p style="text-align: center;"><img class="alignnone size-medium wp-image-279" title="php" src="http://blog.iflashlord.com/wp-content/uploads/2009/03/php-300x157.png" alt="" width="207" height="108" /></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span style="color: #808080;">این مطلب از مجوعه ای از مباحثی که در انجمن مجید آنلاین پیرامون <em>نکات و اصول مهم در برنامه نویسی پی اچ پی</em> نوشته شده است در اینجا جمع آوری شده است ( با تشکر از Y.PY عزیز و دیگر دوستان انجمن)</span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۱</span></strong>- هرگز فایل های ضمیمه شده رو با پسوند inc. ذخیره نکنید! یعنی name.class.inc رو به name.class.php تغییر بدید. و یا از .HTAccess برای سطح دسترسی inc. استفاده کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۲</span></strong>- حتاًالمکان تگ های اضافی و فضا های خالی را حذف کنید و از باز و بسته کردن بیش از حد تگهای سرور (&lt;?php ?&gt; &lt;? ?&gt; &lt;?= ?&gt;) خودداری کنید. در عمل تفاوتی ندارند ولی در حجم و سرعت، به ازای هر ۱ کاراکتر اضافی ۱ بایت حجم فایل و صفحه و Loading میبره بالا(مخصوصاً در پروژه های سنگین)!</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۳</span></strong>-<strong><span style="color: darkgreen;"> </span></strong>کلاس های خود را با قرار دادن ; کامل ببندید و کلاس را با Final و Initialize/__construct شروع کنید تا Clone نشوند:</p>
<pre class="brush: php; title: ; notranslate">

final class Name
{
final public function __construct()
{
#…
}
};
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۴</span></strong>- برای Escape کردن کاراکترهای ویژه و <strong>جلوگیری از خیلی از حملات SQL</strong> از دستورات زیر استفاده کنید:</p>
<pre class="brush: php; title: ; notranslate">
get_magic_quotes_gpc ? $Str_Input= @stripslashes($Str_Input) : $Str_Input= @addslashes($Str_Input);if( function_exists(‘mysql_real_escape_string’)): @mysql_real_escape_string($Str_Input);
else: @mysql_escape_string($Str_Input);
endif;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">5</span></strong>-<strong><span style="color: darkgreen;"> </span></strong>در کلاس خود از تابع پیش فرض<strong> clone__ </strong>برای جلوگیری از تقلید(Clone)(شبیه سازی) توابع استفاده کنید:</p>
<pre class="brush: php; title: ; notranslate">
final public function __clone()
{
return(@exit(‘Cloning is not allowed.’));
}
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۶</span></strong>-<strong><span style="color: darkgreen;"> </span></strong>هرگز از Cookie/Session برای ذخیره کلمه رمز یا مقادیر نمایشی استفاده نکنید(قابل تغییر هستند). خیلی ها از جمله … این مورد رو در نرم افزارشون رعایت نمی کنند و بارها آسیب های جدی و پیش پا افتاده ای رو متحمل میشن.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-9"></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span id="more-405"> </span><strong><span style="color: #808080;">۷</span></strong>-<strong><span style="color: darkgreen;"> </span></strong>در خط اول هر فایل PHP، بعد از خطا زدایی کامل صفحه، دستور (error_reporting(E_ALL@ را قرار بدید که تمامی خطا ها و هشدار ها رو نمایش بده. تا از سو استفاده های احتمالی جلوگیری بشه.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۸</span></strong>-<strong><span style="color: darkgreen;"> </span></strong>حتاًامکان از دستور GET_$ برای دریافت مقادیر استفاده نکنید. و به جاش از دستور REQUEST_$ استفاده کنید(مقدارش رو هم فیلتر کنید).<br />
مقادیر متد GET_$، <strong><span style="color: darkred;">براحتی قابل Sniff و Steal هستند</span></strong>. همچنین ظرفیت این متد حداکثر ۱۰۰ کاراکتر هستش و تمام پارامترهای URL رو هم نوار آدرس مرورگر در معرض دید میزاره.<br />
ولی متد REQUEST_$، هیچ کدوم از این ضعف ها رو نداره و قدرت پیمایشش هم بیشتره.<br />
اینم یه مثال ساده برای معتبر سازیش:</p>
<pre class="brush: php; title: ; notranslate">
$Int_Identity= (int)@preg_replace(‘/[^۰-۹]/i’, ”, $_REQUEST['Id']);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><!-- / message --> <!-- sig --></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">9</span></strong>-  <strong> </strong>حتماً تمامی دستورات Exit و Die رو با Ignore کردن خطا <strong>@</strong> و بستن محتوا استفاده کنید:</p>
<pre class="brush: php; title: ; notranslate">
@exit(”); یا @die(”);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۱۰</span></strong>-  <strong> </strong>در اول هر کلاس و تابع حتماً وجود و بودن کلاس و تابع رو چک کنید!</p>
<pre class="brush: php; title: ; notranslate">
if(!extension_loaded(’standard’)): @exit(‘Extension Standard not loaded!’);
elseif(!extension_loaded(‘mysql’)): @exit(‘Extension MySQL not loaded!’);
elseif(!class_exists(‘ClassName’)): @exit(‘Class ClassName not exists!’);
endif;
…
if(function_exists(‘mysql_real_escape_string’)): @mysql_real_escape_string(…);
else: @mysql_escape_string(…);
endif;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">11</span></strong>-  <strong> </strong><span style="color: darkred;">هرگز از روش زیر برای آدرس دهی(Action) استفاده نکنید:</span></p>
<pre class="brush: php; title: ; notranslate">
&lt;form name=”Frm_Test” action=”&lt;?= $_Server['PHP_Self'] ?&gt;“ method=”post” target=”_self”&gt;
…
&lt;/form&gt;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">چراکه قابل تغییر و دستکاری هستند(برای حملات (XSS(Cross Side Scripting).<br />
راه حل:</p>
<pre class="brush: php; title: ; notranslate">
$_PHPSelf= @basename(__File__);
$_Server['PHP_Self]= @substr($_Server['PHP_Self'], ۰, @strpos($_Server['PHP_Self], $_PHPSelf)) . $_PHPSelf;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">12</span></strong>-  <strong> </strong>حتماً تمامی خروجی ها رو به نوع مربوطش تبدیل کنید:</p>
<pre class="brush: php; title: ; notranslate">
echo((string)‘Test ’ . $_Var_Test);return((string) $_Str_Test);return((integer) $_Int_Test);
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">13</span></strong>-  و در آخر، بهتر و ایمن تره اگر تمامی تگ ها و بلاک ها رو کامل مشخص کنید و کامل ببندید:<br />
حافظه هم دچار مشکل نمیشه.</p>
<pre class="brush: php; title: ; notranslate">
if(…): …
endif;
if(…): …
else(…): …
endif;if(…): …
elseif(…): …
else(…): …
endif;

if(…)
{
…
};

if(…): …
{
…
}
else
{
…
};

while(…):
endwhile;

while(…)
{
};

for…
foreach…
…
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span style="color: darkred;"><strong>مجموعه مشخصی از اشتباهات و آسیب ها و ضعف های نرم افزاری غالباً تکراری رخ می دهند! </strong></span><br />
که چیزی جز خجالت و خسارت بدنبال نداره. و این آخر جهل و نادانی رو میرسونه. اگر یه سری به SecurityFocus.com/archive، MilW0rm.com، Net-Security و غیره برنید متوجه این موضوع میشید. پس <strong>اگر برنامه نویس هستید</strong>، حتماً از آخرین رویداد ها و اخبار امنیتی نرم افزارها مطلع باشید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong> </strong><br />
<span style="color: #808080;"><strong> </strong></span><strong><span style="color: #808080;">۱۴</span></strong>- هرگز از SQLite برای <strong>نرم افزارهای سنگین</strong> استفاده نکنید!<br />
شاید SQLite نقات قوت زیادی داشته باشه(<span style="color: darkgreen;">از جمله مستقل بودن</span>)، ولی در رابطه با نرم افزارهای سبک!<br />
در نرم افزارهای سنگین،<br />
<strong>اولیش:</strong> عدم نیاز به پردازش سرور! در ظاهر یه نقطه قوت هست، ولی نداشتن پردازش سرور، مجموعه ای از مشکلات بزرگ و خطرناکی رو بهمراه داره: از قبیل قفل فایل، مسایل همزمانی، مشکلات حافظه، نداشتن کش Query، مشکلات باینری، مشکلات سرریز شدن(Overflow) داده های سنگین و مشکلات مقیاسی هنگام برخورد با توده عظیمی از اطلاعات!<br />
<strong>دومیش: </strong>باینری نا امن! SQLite اطلاعات باینری رو نمیتونه Handle کنه. برای Insert کردن داده از نوع باینری، ابتدا باید آنرا Encode کنید. بهمین شکل باید تا آخر، پس از یک Select، داده رو هی Encode/Decode کنید!<br />
<strong>سومیش: </strong>همه جداول را قفل می کنه!<img title="Shocked" src="http://forum.majidonline.com/majidonline/smiley_new/majidonline_shocked.gif" border="0" alt="" /> اکثر پایگاه های داده جداول انفرادی(یا حتی سطر ها) رو در حین انجام عملیات قفل می کنند، اما SQLite خفنه و بخاطر کاربردش، همه پایگاه داده رو در حین عملیات قفل میکنه . که این Read/Write همزمان رو بسیار کند میکنه! و مشکلات عمده و بزرگ دیگه ای از این قبیل رو بهمراش میاره!<br />
<strong><span style="color: red;">پس هرگز از SQLite برای نرم افزار های سنگین(با داده های سنگین) استفاده نکنید!</span></strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۱۵</span></strong>- <span style="color: #808080;"><strong><span style="color: deepskyblue;"> </span></strong></span><strong> </strong>***** بعد از هر بار استفاده از متغیرها، آرایه ها، شی ها، کلاس ها و غیره… اگر دیگر مقدار آنرا آدرسی دهی نمی کنید اون رو خنثی(یا آزاد) کنید. با این کار سرعت عمل حافظه و پردازش اطلاعات و امنیت اطلاعات رو بالا می برید(این امر در مورد دیگر زبانهای برنامه نویسی هم صدق می کنه).<br />
در PHP:</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span style="font-size: small;">با دستور <strong>()unset</strong>.</span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">مخصوصاً درخواستهای HTTP رو! مثل</p>
<div dir="ltr"><strong><span style="color: red;">$_GET</span></strong>, <strong><span style="color: purple;">$_POST</span></strong>, <strong><span style="color: darkgreen;">$_REQUEST</span></strong></div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">. این طوری از Steal و Sniff کردن مقادیرشون هم جلوگیری میشه(تا حد زیادی).</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۱۶</span></strong>- اگر به قاعده های توابع موجود در بسته <strong>PCRE</strong> مسلط نیستید یا به صحت قواعدتون شک دارید برای فیلتر کردن ورودیها/خروجیها استفاده نکنید. اینها توابعی بسیار دقیق در عین حال خیلی حساس هستند. از توابع خود بسته Standard استفاده کنید. <strong><span style="color: darkgreen;">بهینه تر </span></strong>هم هست(اگر نیازی به قواعد ندارید).<br />
حتی سرعت برخی توابعی که در بسته Standard هستش از توابع موجود در بسته PCRE خیلی بیشتره! نمونش: <strong><span style="color: darkgreen;">سرعت عمل تابع str_replace نسبت به تابع preg_replace، دقیقاً ۲۰% بیشتره</span></strong>(با مثال هم نشون میدم).</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۱۷</span></strong>-  در زبانهای برنامه نویسی استاندارد(به غیر از VB و +A شاید Delphi) وقتی شما دستوری رو می نویسید و اجرا می کنید، حافظه پایان اون دستور رو <strong>; </strong>یا همون<strong> نقطه ویرگول</strong> می دونه و یکی از <strong>ریز دلایلی</strong> که باعث شد استاندارد معرفی بشن همینه.<br />
<strong>عدم رعایتش باعث: کندی در پردازش، آسیب پذیری، سردرگمی در بررسی اولیه صحت دستورات، اشغال فضای حافظه(غیر قابل تخلیه)، بروز خطا(در نرم افزارهای سنگین) و از این قبیل هستش!</strong><br />
مثال صحیح(تکرار):</p>
<pre class="brush: php; title: ; notranslate">
if($_X)
{
};for( $_X; …)
{
};if( $_X): …
endif;for( $_X; …): …
endfor;class X
{
};
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong> </strong><strong><span style="color: #808080;">۱۸</span></strong>- حتاامکان همه پارامترها، مقادیر، دستورات و غیره… رو تعریف کنید و بحالت پیش فرض رهاش نکنید تا خرابکار(خارج از نرم افزار) سو استفاده و تعریفش نکنه!</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۱۹</span></strong>- <strong><span style="color: deepskyblue;"> </span></strong>اگر بیش از ۳ تابع دارید که در یک زمینه فعالیت می کنن همه رو در یک کلاس قرار بدید. <strong>هم ایمنیش بیشتره(براحتی فراخونی نمیشه)، هم Handling کردنش و هم قدرت پیمایشش</strong>. من خودم قبلاً به دلیل سرعت بیشتر تابع، شاید تا ۵ تابع رو هم کلاس نمی کردم مگر اینه توابع سنگینی بوده باشن. ولی از وقتی از شامپو کلاس استفاده می کنم(ریزش موهام ۲ برابر شده ، خیلی خوبه) کارمم تمیز تر شده <img title="Wink" src="http://forum.majidonline.com/majidonline/smiley_new/majidonline_wink.gif" border="0" alt="" />.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۲۰</span></strong>-  قبل از استفاده از کلاس، تابع و بسته از وجودش مطلع بشید.  حتماً حتماً!<br />
مثال صحیح:</p>
<pre class="brush: php; title: ; notranslate">
if(!extension_loaded(’standard’)): @exit(‘Extension Standard not loaded.’);
elseif(!extension_loaded(‘mysql’)): @exit(‘Extension MySQL not loaded.’);
elseif(!extension_loaded(‘pcre’)): @exit(‘Extension PCRE not loaded.’);
elseif(!extension_loaded(’session’)): @exit(‘Extension Session not loaded.’);
elseif(!class_exists(‘Tehran’)): @exit(‘Class Tehran does not exist.’);
endif;
و…
if(function_exists(’settype’)): settype($Str_Input, ’string’);
else: (string)$Str_Input;
endif;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۲۱</span></strong>- <strong><span style="color: deepskyblue;"> </span></strong>الفبای کد نویسی ایستا!<br />
بین(صحیح):</p>
<pre class="brush: php; title: ; notranslate">
&lt;input name=&quot;InpTxt_Username&quot; type=&quot;text&quot; value=&quot;&quot; maxlength=&quot;15&quot; size=&quot;15&quot; id=&quot;InpTxt_Username&quot;&gt;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و (غلط):</p>
<pre class="brush: php; title: ; notranslate">
&lt;input type=&quot;text&quot; name=&quot;InpTxt_Username&quot; id=&quot;InpTxt_Username&quot;&gt;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">خیلی تفاوت و جای سو، استفاده هست!<br />
حتی بین پارامترهای CSS(غلط):</p>
<div>
<pre class="brush: css; title: ; notranslate">
overflow: hidden; width: 250px; height: auto;
</pre>
</div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و(صحیح):</p>
<div>
<pre class="brush: css; title: ; notranslate">
width: 250px; height: auto; overflow: hidden;
</pre>
</div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">همچنین بین(صحیح):</p>
<div>
<pre class="brush: php; title: ; notranslate">
$_REQUEST['FormName'], $_REQUEST['SubmitButtonName',...
</pre>
</div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و(غلط):</p>
<div>
<pre class="brush: php; title: ; notranslate">
$_GET['FormName'], $_GET['SubmitButtonName'],…
</pre>
</div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: red;">خیلی تفاوت و جای سو استفاده هست!</span></strong><br />
پس در نوشتن اینها(حتی اگر خودکار Insert می شوند) دقت کنید!</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۲۲</span></strong>-  از متد Protected/Public/Private به جای متد <strong><span style="color: red;">Var</span></strong> استفاده کنید. متد Var که معادل Public در PHP 5 هستش منسوخ شده و سطح ایمنی بسیار پایینی برای محافظت متغیر های داخلی داره. پس حتاًالمکان از این متد استفاده نکنید.<br />
شاید هم در نگارش های بعدی PHP(به غیر از Alpha و Beta) بکلی حذف شود! انشاا…</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۲۳</span></strong>- <strong><span style="color: deepskyblue;"> </span></strong>حتاامکان از دستورات ::Self و ::Parent در کلاس والد برای دستیابی به اعضا و غیره…، به جای ::ClassName استفاده کنید. در عمل و ظاهر تفاوتی ندارند ولی در باطن(حافظه) خیلی فرق دارند(پشمایش کلی انجام میده).</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۲۴</span></strong>-  <strong><span style="color: red;"><span style="font-size: small;">آسیب پذیری مشترک و همگانی!</span></span></strong><br />
ورودی و خروجی پارامترهای URL رو <strong>چک و فیلتر </strong>کنید. مطمعن شوید که مثلاً</p>
<div dir="ltr"><strong>/index.php?Module=News&amp;Action=Show&amp;Identity=1&amp;Valid =True…</strong></div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">، در اینجا Module از نوع حروف(Alphabetic) به طول ۲۵۵ کاراکتر، و Action هم از نوع حروف(Alphabetic) با طول ۲۵۵ کاراکتر و Identity از نوع عدد(Integer) با طول ۱۰، و Valid از نوع Boolean هستش! <strong>این نکته ساده رو اغلب رعایت نمی کنن و بارها بارها بارها آسیب های جدی در نرم افزار هایشون بصورت مکرر پیش میاد.</strong><br />
<span style="color: darkred;"><span style="font-size: xx-small;">همین الان در همین تالار خیلی ها وبسایتهایی دارند که از این نقطه آسیب پذیرند!!</span></span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۲۵</span></strong>- <strong><span style="color: deepskyblue;"> </span></strong>خروجی ها رو به نوع مربوطش <strong>حتماً حتماً حتماً </strong>تبدیل کنید.<br />
مثلاً:</p>
<div>
<pre class="brush: php; title: ; notranslate">
return((array)$_Ary_Output);
</pre>
</div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">،</p>
<div>
<pre class="brush: php; title: ; notranslate">
return((string)$_Str_Output);
</pre>
</div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">…<br />
اگر هم نرم افزارتون قابلیت تغییر Template/Theme رو داره، <strong>در آخر خروجی</strong> HTML یا همون Echo، از دستور<br />
<strong> </strong></p>
<div>
<pre class="brush: php; title: ; notranslate">
@exti(”);
</pre>
</div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong> </strong> جهت پاکسازی نهایی(آخر) بعد از خودش استفاده بکنید.<br />
<strong><span style="color: seagreen;">دسترسی فایلها تون رو هم به ReadOnly تنظیم کنید. حتی index.html ها در پوشه های خالی!</span></strong></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۲۶</span></strong>-  اگر از short_open_tag مثل &lt;؟ ؟&gt; استفاده می کنید از فعال(On) بودن این Option در راس نرم افزارتون مطمعن بشید:</p>
<div>
<pre class="brush: php; title: ; notranslate">
@ini_set(’short_open_tag’, ‘on’);
</pre>
</div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><span style="font-size: xx-small;">این Option در تعداد بیشماری از Server ها، بصورت Off هستش!</span></p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۲۷</span></strong>- <strong><span style="color: deepskyblue;"> </span></strong>حتاامکان از بسته PEAR :: Db استفاده نکنید!<br />
این بسته <strong>۲ مزایا داره که == ۲ معایبش</strong>… چون PEAR :: Db با PHP بکار گرفته میشه،<br />
<strong>پس ۱: </strong>لایه ای که در PHP نوشته می شود از توابع داخلی خود PHP کند تر هست! مخصوصاً اگر بدون کش opcode اجرا شود. که اغلب می شود. نمی دونم چطوری، ولی فکر کنم با دعا جادو!<br />
<strong>پس ۲: </strong>لایه اضافی کد، پیچیدگی و احتمال خطا را افزایش میده و در نتیجه آسیب پذیر میشه.<br />
<strong>من، برای خودم </strong>هیچ کدوم از بسته های PEAR رو قبول ندارم. مخصوصاً بسته های Filtration Validation Db. پیشنهاد می کنم شما هم نداشته باشید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۲۸</span></strong>-<strong> </strong>حملات <strong>DOS</strong>!<br />
ساده ترین و عامیانه ترین عواملی که باعث میشن: <strong>پهنای باند پایین</strong>، <strong>پیکربندی نامناسب سرور وب</strong> و استفاده از <strong>نرم افزار های سنگین</strong>(نیوک ها، تالار/انجمن ها…)(برای کار های سبک) و <strong>غیر استاندارد</strong> هستش!<br />
راه حل ها(در مورد همه زبانهای تحت وب صدق میکنه): پهنای باند حداقل ۵۰۰ مگابایت، محدود کردن حجم هر بسته(HTTP post) نسبت به پهنای باند، محدود کردن حجم هر درخواست(Body request) نسبت به پهنای باند، محدود کردن حجم Upload فایل نسبت به پهنای باند، استفاده از فشرده سازی محتوا(Output)/Cache، محدود کردن زمان Excute نرم افزار(مثلاً ۲۵ ثانیه)، بهینه سازی/استاندارد سازی محتوای Client-side، انتقال ندادن خطاهای HTTP به صفحات اصلی(در غیر این صورت یک Referer خطرناک هم خواهید داشت)، استفاده از فرمت های مناسب(JPG, JPEG, JPE…) تصاویر، Handing کردن Repetition/Duplication ها، <strong>محدود کردن ترافیک خارجی با استفاده از IP range</strong> و…<br />
محدود کردن ترافیک با استفاده از IP range: در وبسایتهای داخلی، طبیعتاً نیازی به ترافیک کشورهای خارجی نیست(اعم از Spam/Bot/Visitor…)! با Block کردن range های IP کشورهای خارجی،<strong> پهنای باند و امنیت بیشتر </strong>رو برای وبسایت و سرور تون مهیا کنید. مثل <strong>روسیه،</strong> عربستان، افغانستان، ترکیه و…</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۲۹</span></strong>- پروتکل WAP<br />
25% برنامه نویسان با این پروتکل آشنایی ندارند! ۵۰% آشنایی دارند ولی اهمیتی نمیدن! ۲۵% می شناسن و اهمیت میدن…<br />
تنها چیزی که میشه گفت: این پروتکل همون قدر مفید و قدرتمند هستش/همون قدر هم خطرناک!<br />
فقط چند پیشنهاد: یا کلاً اجازه ورود رو بهش ندید(ارزشش رو داره) یا تماماً Header رو پاکسازی کنید(کمی سخته) یا فقط دسترسی Browse بهش بدید(کار کشته میطلبه).</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۳۰</span></strong>- برای جلوگیری از ورود <strong>کاراکترهای مخرب</strong> UTF/Unicode به جداول Latin، از Option زیر برای ساختن جدول استفاده کنید(در مورد همه Database ها صدق میکنه):</p>
<div dir="ltr">charset= utf8</div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">31</span></strong>- از قرار دادن <strong>فضا های خالی بی مورد و Comment های بیجا و نامناسب</strong> خودداری کنید. اینها تقریباً ۱۵% از حجم کل نرم افزارتون رو میگیرند!(Web programming میکنید نه Desktop programming).</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">32</span></strong>- حتالمکان توابع رو در کلاس بصورت <strong>static</strong> تعریف کنید، چراکه سرعت پردازش/Compile رو بسیار افزایش میده(مخصوصاً توابع طولانی و سنگین).</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۳۳</span></strong>- به هیچ وجه از دستور print استفاده نکنید(++۹۹۹۹E+ بار گفته شده). دلیلتون برای استفاده چیه؟!</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۳۴</span></strong>- در هنگام نصب جداول از بودن یا نبودنش مطلع بشید تا هنگام نصب/پیکربندی با خطا مواجه نشین. مثلاً:</p>
<div>
<pre class="brush: sql; title: ; notranslate">
drop table if exists `xxxxx`;
create table if not exists `xxxxx`;
</pre>
</div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">35</span></strong>- حتاالمکان برای Database تون Password تعیین کنید.<br />
اغلب Database ها بصورت پیش فرض Password هایی برای مدیر دارند، که خرابکار با بدست آوردن Username براحتی وارد Database خواهد شد و…!!<br />
پس برای Database تون Password تعیین کنید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۳۶</span></strong>- تنضیمات PHP:<br />
register_globals رو Off قرار بدید(++۹۹۹۹E+ بار گفته شده).<br />
session.auto_start رو ۰ قرار بدید.<br />
default_mimetype رو text/html قرار بدید(سرعت بیشتر).<br />
display_errors رو ۱ قرار بدید.<br />
بهتره log_errors رو Off قرار بدید.<br />
بهتره DATABASE.allow_persistent رو Off قرار بدید.<br />
بهتره DATABASE.max_persistent رو ۱- قرار بدید.<br />
حتاامکان DATABASE.default_user و DATABASE.default_password رو خالی بزارید.<br />
حتاامکان session.hash_function رو ۱ قرار بدید(SHA1).<br />
session.hash_bits_per_character رو ۵ قرار بدید.<br />
در حالت معمولی دلیلی ندارید که safe_mode رو On قرار بدید.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۳۷</span></strong>- یک فایل htaccess درست کنید(برای نرم افزارتون) و تنظیمات زیر رو درونش قرار بدید(در حالت عادی):</p>
<pre class="brush: plain; title: ; notranslate">
&lt;Files .htaccess&gt;order allow,denydeny from all&lt;/Files&gt;

Options All -Indexes -ExecCGI -MultiViews

DirectoryIndex index.php index.html

AddDefaultCharset utf-8

&lt;FilesMatch &quot;\.(php|phphtml|html|xml)$&quot;&gt;Header unset cache-control&lt;/FilesMatch&gt;

&lt;IfModule sapi_apache2.c&gt;php_value register_globals 0php_value session.auto_start 0&lt;/IfModule&gt;
</pre>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">(این فایل رو در پوشه(Folder) اصلی نرم افزار قرار بدید.)</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۳۸</span></strong>- <strong>محتویات</strong> تمام فایلهای Index.html یا Index.php یا Index.* <strong>در پوشه های خالی</strong> رو پاک کنید و فایل رو خالی از هر چیزی کنید…<br />
<strong>حداقل</strong> اگر ۲۰ پوشه داشته باشید در هر ۲۰ پوشه ۵ پوشه دیگر و… و در هر فایل Index <strong>حداقل</strong> ۵۰ کیلوبایت اطلاعات، ببینید چه حجم زیادی از نرم افزار رو میگیرن؟!(Web programming میکنید نه Desktop programming)</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">39</span></strong>- اگر نرم افزارتون قابلیت Multi language/چند زبانه رو داره، هیچ وقت یک فایل رو مختص تمام این کار قرار <strong>ندید</strong> و در همه جا همون رو فراخوانی <strong>نکنید</strong>(خیلی از نرم افزارهای معروف و مثلاً استاندارد اینکارو میکنن)! در صورتی که نیمی از متغیرها بی استفاده تعریف و Load میشن!! و دیگه Unload/Unset هم نمیشن!!<br />
باید مثلاً <strong>۱ پوشه به نام زبان درست کنید </strong>و <strong>درونش بخش بخش فایل های Language رو قرار بدید.</strong> مثلاً ,menu.php ,events.php ,global.php index.php ,login.php,…</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۴۰</span></strong>- هیچ وقت از آرایه/متغیر سراسری <strong>GLOBALS$/global</strong> استفاده نکنید. این دستور به صورت Scope تعریف و ارجاع می شه! و<strong> ایمنی خیلی پایینی</strong> هم داره. همچنین <strong>از ()UnSet هم پشتیبانی نمی کنه</strong>(تجسم خلاق کنیم حذفش کنن…).</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۴۱</span></strong>-<strong> </strong>بهتره هیچ وقت از include و include_once استفاده نکنید! دلیلتون برای استفاده چیه؟!</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۴۲</span></strong>-<strong> </strong>حتاالمکان آدرس کامل(Path) رو برای ضمیمه هر فایلی بنویسید. این کار سرعت پیدا/Solve کردن Path رو توسط سرور افزایش میده(Steelsheet ها، JavaScript ها، require ها و…).</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۴۳</span></strong>-<strong> </strong>بعد از نصب/پیکربندی نرم افزار، حتماً حتماً پوشه/فایل Install رو حذف کنید!</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۴۴</span></strong>-<strong> </strong>حتاامکان از دستور switch بجای چند شرطی if استفاده کنید. اینکار سرعت پردازش/Compile رو افزایش میده.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۴۵</span></strong>- حتالمکان از @ برای ignore کردن خطا(Error suppression) در <strong>توابع/دستورات</strong> طولانی/سنگین/پر کاربرد استفاده نکنید! این کار سرعت سرور وب رو برای پردازش/Compile<strong> خیلی کاهش میده</strong>!!</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۴۶</span></strong>- متغیر ها، آرایه ها، درخواستهای HTTP و… رو  بعد از استفاده <strong>حتماً حتماً</strong> Unset/خنثی کنید!</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۴۷</span></strong>- کدها/اسکریپتهای کوتاه رو در فایل HTML قرار بدید. این کار سرعت سرور وب رو برای پردازش/Compile خیلی افزایش میده.</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right"><strong><span style="color: #808080;">۴۸</span></strong>-<strong> </strong>بعد استفاده از session حتماً حتماً اون رو <strong>destroy</strong> و <strong>unset</strong> کنید!!<br />
session_unset و session_destroy<br />
<strong>اغلب PHP نویسان به session_destroy کفایت میکنن!!</strong> در صورتی که unset یه چیزه destroy چیزه دیگست…</p>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">و آخر اینکه مواظب تصاویری که <strong>Upload</strong> میشن باشید!!<br />
این مساله بیشتر در مورد فرم های ثبت نام!!، فرم های استخدام!! گالری های تصاویر!! و امثالش صدق میکنه.<br />
باید مطمعن بشید که فایل Upload شده تصویری هستش! در غیر این صورت با همچین چیزی مواجه میشید:<br />
مثال ساده محتوای فایل hack.gif</p>
<div style="margin: 5px 20px 20px;">
<div style="margin-bottom: 2px;">
<pre class="brush: php; title: ; notranslate">
&lt;?php@system($_REQUEST['Command']);?&gt;&lt;?phpworm, cookiestealer...?&gt;
</pre>
</div>
</div>
<p style="font-family: Tahoma,Verdana,sans-serif; direction: rtl;" align="right">برای جلوگیری از اینکار سایز/اندازه/پیکسل تصویر رو بگیرید… اگر فاقد اینها بود فایل تصویری نیست.<br />
امیدوارم این مطلب بسیار کاربردی و مهم مورد استفاده شما قرار بگیرید، انشاء الله آرایه قلبتون null نباشه length  اش هیچ وقت هم صفر نباشه<br />
پ.ن : اگه اصلا نمی فهمید این چیزهایی که نوشته شده چه معنی می دهد، پس در نتیجه این مطلب برای شما نوشته نشده است.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.iflashlord.com/1387/12/%d9%86%da%a9%d8%a7%d8%aa-%d8%a7%d8%b5%d9%88%d9%84-%d9%85%d9%87%d9%85-%d8%a8%d8%b1%d9%86%d8%a7%d9%85%d9%87-%d9%86%d9%88%db%8c%d8%b3%db%8c/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic (Feed is rejected)
Page Caching using disk: enhanced
Database Caching 4/20 queries in 0.075 seconds using disk: basic
Object Caching 6561/6858 objects using disk: basic

Served from: blog.iflashlord.com @ 2012-02-05 20:19:09 -->
