<?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>Iran Developers Network &#187; PHP</title>
	<atom:link href="http://www.irandevelopers.com/category/programming/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.irandevelopers.com</link>
	<description>IDN بزرگترین مرجع توسعه دهندگان ایران - آموزش زبانهای برنامه نويسی</description>
	<lastBuildDate>Mon, 23 Aug 2010 08:51:43 +0000</lastBuildDate>
	<language>fa</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>اسکریپت برنامه نمایش تعداد افراد آنلاین برای وب سایت ها</title>
		<link>http://www.irandevelopers.com/programming/createonlinepersonlistinwebsitewithphp88061-1929/</link>
		<comments>http://www.irandevelopers.com/programming/createonlinepersonlistinwebsitewithphp88061-1929/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 10:58:11 +0000</pubDate>
		<dc:creator>biranvand2009</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=1929</guid>
		<description><![CDATA[اسکریپت برنامه نمایش تعداد افراد آنلاین برای وب سایت ها در اکثر برنامه های جامع شمارش بازدیدکننده ، قابلیت نمایش افرادی که آنلاین هستند تعبیه شده که به وفور وجود دارد و می توانید از انها از استفاده کنید. من در اینجا قصد ندارم اسکریپتی را معرفی کنم که بلافاصله پس از دریافت بتوانید آن [...]]]></description>
			<content:encoded><![CDATA[<p>اسکریپت برنامه نمایش تعداد افراد آنلاین برای وب سایت ها<br />
در اکثر برنامه های جامع شمارش بازدیدکننده ، قابلیت نمایش افرادی که آنلاین هستند تعبیه شده که به وفور وجود دارد و می توانید از انها از استفاده کنید. من در اینجا قصد ندارم اسکریپتی را معرفی کنم که بلافاصله پس از دریافت بتوانید آن را به سرویس دهنده خود منتقل کرده و از آن استفاده کنید! اینجا جنبه آموزشی ساختار این اسکریپت و نحوه کارش مهم است.<br />
به راحتی می توان اطلاعات مربوط به این اسکریپت را در یک فایل متنی ذخیره نمود اما برای انعطاف پذیری و قدرت مانور بیشتر از بانک اطلاعاتی MySQL استفاده می کنیم.</p>
<p>در ابتدای کار برای ساخت این جدول کدهای SQL زیر را در بانک اطلاعاتی خود وارد کنید:</p>
<p>کد:<br />
CREATE TABLE online_count (<br />
ip char(15) NOT NULL,<br />
TMP timestamp(14),<br />
PRIMARY KEY (ip)<br />
);</p>
<p>واضح است که این کدها یک جدول به نام online_count با دو فیلد، یکی برای زمان و دیگری برای آدرس ip ایجاد می کند. بخش اصلی این اسکریپت به شکل زیر است:<br />
کد:<br />
&lt;?php<br />
$Host = &#8220;localhost&#8221;; //Host name<br />
$User = &#8220;root&#8221;; // Username<br />
$Mdp  = &#8220;microrayaneh.com&#8221;; // Password<br />
$Base = &#8220;test&#8221;; // Database Name</p>
<p>mysql_connect ( $Host , $User , $Mdp );</p>
<p>//Timeout in seconds<br />
$TimeOut = 60;</p>
<p>$ip = getenv( &#8220;REMOTE_ADDR&#8221; );</p>
<p>$Requete = &#8220;DELETE FROM online_count WHERE TMP &lt; now()&#8221;;<br />
$Resultat = mysql_db_query( $Base , $Requete );<br />
$Requete = &#8220;SELECT count(*) FROM online_count WHERE ip=&#8217;$ip&#8217;&#8221;;<br />
$Resultat = mysql_db_query( $Base , $Requete );</p>
<p>while ( $T = @mysql_fetch_array( $Resultat ) ) {<br />
$Compteur = $T["count(*)"];<br />
}</p>
<p>if ( $Compteur ) {<br />
$Requete = &#8220;UPDATE online_count SET TMP=TMP + $TimeOut WHERE ip=&#8217;$ip&#8217;&#8221;;<br />
} else {<br />
$Requete = &#8220;INSERT INTO online_count (ip, TMP) VALUES (&#8216;$ip&#8217;, now()+ $TimeOut)&#8221;;<br />
}</p>
<p>$Envoi = mysql_db_query( $Base , $Requete );</p>
<p>$Requete = &#8220;SELECT count(*) FROM online_count&#8221;;<br />
$Envoi = mysql_db_query( $Base , $Requete );</p>
<p>while ( $T = @mysql_fetch_array( $Envoi ) ) {<br />
$Compteur = $T["count(*)"];<br />
}</p>
<p>echo $Compteur;<br />
?&gt;</p>
<p>خط ۲ تا ۵ پارامترهای اتصال به پایگاه داده است که باید مقدار دهی شوند (توضیحات جلوی پارامترها مشخص می کند هر کدام مربوط به چه هستند) روش کار این اسکریپت به این شرح است که ابتدا آدرس IP ماشین در متغیر ip ذخیره می شود(۱۲) چنانچه زمان رکورد شده در فیلد زمان، کمتر از زمان کنونی باشد، مشخصه آن آدرس پاک خواهد شد(۱۴-۱۵) بنابراین نگران افزایش حجم جدول نباشید.</p>
<p>البته توجه داشته باشید که زمان رکورد شده در فیلد، زمان کنونی بعلاوه پیش فرض ۶۰ ثانیه خواهد بود که بعنوان Timeout انتخاب شده و مقدار آن قابل تنظیم است. حال یک ساختار شرطی ایجاد می کنیم، چنانچه ip مربوط به همان ماشین قبلی بود رکوردهای ضبط شده را آپدیت می کنیم در غیر اینصورت یک مشخصه جدید در جدول ایجاد خواهد شد(۲۳-۲۷) در انتهای کار با شمردن تعداد ردیف های جدول با استفاده از حلقه While، تعداد کاربران آنلاین در آن زمان را نمایش می دهیم. علاوه بر این خودتان می توانید براحتی بخش هایی مضاف بر این، بدان اضافه کنید.</p>
<p>در مورد تابع mysql_fetch_array که بسیار پرکاربرد است بدانید که، این تابع عموما درون حلقه قرار می گیرد و کارش این است که با هربار تکرار حلقه، یک سطر از اطلاعات دریافت شده، به صورت یک آرایه در متغیر مربوط به آن (که در اینجا T است) ذخیره می شود. این روند تا آخرین سطر از اطلاعات درون جدول ادامه پیدا می کند.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/createonlinepersonlistinwebsitewithphp88061-1929/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>۷ دلیل برتری PHP نسبت به ASP</title>
		<link>http://www.irandevelopers.com/programming/7resionforphpbeterasasp88061-1928/</link>
		<comments>http://www.irandevelopers.com/programming/7resionforphpbeterasasp88061-1928/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 10:53:25 +0000</pubDate>
		<dc:creator>biranvand2009</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=1928</guid>
		<description><![CDATA[۷ دلیل برتری PHP نسبت به ASP دوستان ۷ دلیل برتری PHP نسبت ASP را در این مقاله بررسی میکنیم و در ادامه سعی میکنم هر هفته حداقل ۱ مقاله در مورد PHP براتون میزارم. امیدوارم کمکی در جهت بالا بردن سطح علمی دوستان و آشنا شدن آنها با PHP باشه. ۱- سرعت ، سرعت [...]]]></description>
			<content:encoded><![CDATA[<p>۷ دلیل برتری PHP نسبت به ASP<br />
دوستان ۷ دلیل برتری PHP نسبت ASP را در این مقاله بررسی میکنیم و در ادامه سعی میکنم هر هفته حداقل ۱ مقاله در مورد PHP براتون میزارم. امیدوارم کمکی در جهت بالا بردن سطح علمی دوستان و آشنا شدن آنها با PHP باشه.</p>
<p>۱- سرعت ، سرعت ، سرعتاولین باری که یک کد به زبان PHP نوشتم بر روی یک کامپیوتر Pentium 166Mhz بود بر روی سیستم عامل Linux و بههمراه Apache Web Server . بسیار برایم جالب بود که چقدر کد های من سریع اجرا می شوند . یعنی در آن موقع بااگر شما یک Windows NT بر روی آن می توانستید سوار کنید و به فرض که IIS هم بر روی آن بالا می آمد فکر کنماصلا وقت Serve کردن صفحات عادی html را نداشت چه برسد به اینکه بخواهد ASP را هم اجرا کند . علتش این استکه Microsoft از یک Technology در اجرا کردن کدهای زبان ASP استفاده می کند که در آن هر موقع شما تصمیم بهاستفاده از یک عنصر خارجی مانند VBScript, MSSQL, ODBC و خیلی چیزهای دیگر که در حقیقت از Engine هایخارجی استفاده می کنند دستور به آن Engine خارجی می دهد و جواب بدست آمده را بررسی و برای استفاده در اختیارادامه برنامه می گذارد . همین رفت و برگشت و اجرا کردن Engine های خارجی باعث کند شدن سرویس دهی می شود کهاین را شما به خوبی می توانید در استفاده از MSSQL به طرق مختلف احساس کنید . مثلا اگر شما خود MSSQL Extentions<br />
برای استفاده از MSSQL استفاده کنید برای یک Query مشترک ۱.۸۸ ثانیه زمان تلف می شود و اگر همان را با استفادهاز ODBC اجرا نماﺋید زمانی در حدود ۹.۵۴ ثانیه تلف می شود که این خود نشان می دهد که ASP اینها را به تنهاﺋی اجراءنمی کند و از Engine های ویندوز استفاده می کند .</p>
<p>۲- استفاده بهینه از Memory<br />
در IIS4 اگر شما در یک صفحه مثلا ۲۰ بار یک صفحه را Include کنید این صفحه ۲۰ بار در حافظه بارگذاری می شود و درحقیقت حافظه شما ۲۰ برابر زیادتر اشغال می شود . البته شنیدم که این مشکل در ویندوز ۲۰۰۰ و IIS5 حل شده استاما بازهم برای کسانی که ASP را مینویسند و می خواهند آنرا بر روی سرور های Hosting که دارای سیستم عامل NT<br />
هستند اجرا کنند مشکل زا است و باعث کند شدن سیستم می شود و در Load بالا مسلما مشکل زا خواهد شد .<br />
این مشکل به طور کلی در PHP وجود نداشته و ندارد و استفاده درست از Memory در هنگام اجرای یک کد باعث شده استکه صفحات در Load بالا نیز به خوبی قابل رٶیت باشند .</p>
<p>۳- خرج اضافی ندارید !<br />
مثلا در ASP اگر بخواهید از امکاناتی نظیر Encryption یا File Uploading یا ارسال نامه توسط کد برنامه استفاده کنیدباید امکانات اضافی برای این کار خریداری کنید و نصب کنید تا این امکانات به IIS شما اضافه گردد . این در حالیست کهدر PHP همه اینها در هنگام Compile در نظر گرفته می شوند و همگی از امکانات Standard این زبان هستند و هیچ نصبیا خرج اضافی در کار نیست .</p>
<p>۴- MySQL بهترین انتخاب، بیشترین سرعتدر اینجا قصد ندارد به مقایسه MySQL و MSSQL بپردازم . اما به خاطر قدرت خارق العاده MySQL و سازگار بودن این<br />
DBMS با زبان PHP به صورتیکه PHP اتصال به MySQL را به صورت دستورات Internally پشتیبانی می کند و حتی نیازبه نصب Module اضافی برای این کار نمی باشد ، از سرعت بسیار بالاﺋی در کار با SQL برخوردار است که شاید بعدا درمورد MySQL مقاله ای نوشتم .</p>
<p>۵- نزدیک بودن Syntax به ++C/C و Java<br />
از آنجاﺋیکه اکثر برنامه نویسان از ++C/C استفاده کرده اند و بخاطر محبوب بودن بی حد Java معمولا با Syntax هایاین دو زبان اکثرا آشنا هستند . PHP هم اکثر Syntax های خود را شبیه به این زبانها انتخاب کرده است که برای یادگیریدوباره Syntax دستورات دچار مشکل نشوید که مسلما Microsoft اصلا برایش این مساﺋل مشکل حساب نمی شود .</p>
<p>۶- رفع ایرادات ، سریع ، بی دردسرتا حالا از Microsoft خواسته اید که ایرادی را در سیستمهای خود رفع کند ؟ مسلما اگر شرکت بزرگی مانند Boeing<br />
نباشید حرف شما خیلی خریدار ندارد یا لااقل به این زودی ها به نتیجه نمی رسید .<br />
OpenSource بودن PHP این امکان را به شما می دهد که شخصا اقدام به رفع مشکل کنید و آنرا برای دستندرکاران PHP<br />
ارسال کنید و یا اینکه در Mailing List های عمومی PHP موضوع را مطرح کنید و خواهید دید که از سراسر دنیا برایرفع ایراد شما Patch ارسال می گردد .</p>
<p>۷- اجرا بر روی Platform های مختلفدرست است که خیلی از این ایرادات را Microsoft رفع خواهد کرد و Technology های جدیدتر اراﺋه خواهد کرد ( چهبسا این Net. که الان آمده همه را درست کرده باشد ) اما یک مشکل اساسی برای ASP وجود دارد و آن این است که<br />
ASP بدون Windows یعنی هیچ ! بدلیل اینکه ASP نصفی از کدها را توسط Engine های ویندوز اجرا می کند که درسیستم عامل های دیگر خبری از آنها نیست . لذا ASP در سیستم عاملهای دیگر همیشه دارای ضعفهای بزرگی است .<br />
اما PHP به دلیل آنکه توسط GNU C Compiler در همه Platform ها قابل Compile شدن است و از Engine های خاصهیچ سیستم عاملی برای اجرای کدها استفاده نمی کند قابلیت اجرا بر روی تعدا زیادی از OS ها را داراست که این یکمزیت برای برنامه نویس ها محسوب می شود</p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/7resionforphpbeterasasp88061-1928/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>جلسه سوم آموزش PHP,کار با رشته ها در php</title>
		<link>http://www.irandevelopers.com/programming/phplearn3880529-1902/</link>
		<comments>http://www.irandevelopers.com/programming/phplearn3880529-1902/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 11:00:20 +0000</pubDate>
		<dc:creator>biranvand2009</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[جلسه سوم آموزش PHP]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=1902</guid>
		<description><![CDATA[آموزش PHP – جلسه سوم یک توصیح قبل از شروع: همانطور که جلسه قبل گفتم برای PHP، انواع داده مهم نیست. این به این معنی نیست که PHP اصلا نوع داده ندارد. PHP از نوع داده های زیر استفاده می کند: Float، Integer، String، double، array، Boolean و &#8230; اما نیازی به استفاده از این [...]]]></description>
			<content:encoded><![CDATA[<p>آموزش PHP – جلسه سوم</p>
<p>یک توصیح قبل از شروع:</p>
<p>همانطور که جلسه قبل گفتم برای PHP، انواع داده مهم نیست. این به این معنی نیست که PHP اصلا نوع داده ندارد. PHP از نوع داده های زیر استفاده می کند:</p>
<p>Float، Integer، String، double، array، Boolean و &#8230;</p>
<p>اما نیازی به استفاده از این نوع متغیرها را در طراحی وب ندارید. یک توضیح بعد از شروع! بحث این جلسه شاید یک مقدار خسته کننده باشد. امیدوارم زیاد بد و بیرا بهم نگین! به امید خدا از جلسه بعد دستورات شرطی را با هم شروع می کنیم (به این میگن وعده سر خرمن!!!). . اما بحث امروز:</p>
<p>معرفی اپراتورهای منطقی: اپراتورهای منطقی در تمام مکانهایی که با متغیرهای Boolean سروکار دارید می توانند استفاده شوند. بدیهی است که پاسخ نیز یک پاسخ Boolean خواهد بود. لیست کامل اپراتورهای Boolean در زیر آمده است:<br />
Example<br />
Name<br />
Result</p>
<p>$a and $b<br />
And<br />
TRUE if both $a and $b are TRUE.</p>
<p>$a or $b<br />
Or<br />
TRUE if either $a or $b is TRUE.</p>
<p>$a xor $b<br />
Xor<br />
TRUE if either $a or $b is TRUE, but not both.</p>
<p>! $a<br />
Not<br />
TRUE if $a is not TRUE.</p>
<p>$a &amp;&amp; $b<br />
And<br />
TRUE if both $a and $b are TRUE.</p>
<p>$a || $b<br />
Or<br />
TRUE if either $a or $b is TRUE.</p>
<p>چند تابع رشته ای جالب: شاید بد نباشد که چند تابع که عملیات رشته ها (strings) را بر عهده دارند، برایتان معرفی کنم:</p>
<p>الف) string substr ( string string, int start [, int length])</p>
<p>این تابع بخشی از یک رشته را بر می گرداند. آرگومان اول رشته ای است که عملیات بر روی آن انجام می گردد. آرگومان دوم موقعیت کاراکتری است که عملیات از آن آغاز می گردد. آرگومان سوم تعداد کاراکترهایی است که از شروع باید مورد بررسی قرار گیرد. مثالهای زیر از PHP Manual انتخاب شده اند. به آنها توجه کنید:</p>
<p>&lt;?php<br />
$rest = substr(&#8220;abcdef&#8221;, 1);    // returns &#8220;bcdef&#8221;<br />
$rest = substr(&#8220;abcdef&#8221;, 1, 3); // returns &#8220;bcd&#8221;<br />
$rest = substr(&#8220;abcdef&#8221;, 0, 4); // returns &#8220;abcd&#8221;<br />
$rest = substr(&#8220;abcdef&#8221;, 0, 8); // returns &#8220;abcdef&#8221;</p>
<p>// Accessing via curly braces is another option<br />
$string = &#8216;abcdef&#8217;;<br />
echo $string{0};                // returns a<br />
echo $string{3};                // returns d<br />
$rest = substr(&#8220;abcdef&#8221;, -1);    // returns &#8220;f&#8221;<br />
$rest = substr(&#8220;abcdef&#8221;, -2);    // returns &#8220;ef&#8221;<br />
$rest = substr(&#8220;abcdef&#8221;, -3, 1); // returns &#8220;d&#8221;<br />
$rest = substr(&#8220;abcdef&#8221;, 0, -1);  // returns &#8220;abcde&#8221;<br />
$rest = substr(&#8220;abcdef&#8221;, 2, -1);  // returns &#8220;cde&#8221;<br />
$rest = substr(&#8220;abcdef&#8221;, 4, -4);  // returns &#8220;&#8221;<br />
$rest = substr(&#8220;abcdef&#8221;, -3, -1); // returns &#8220;de&#8221;<br />
?&gt;</p>
<p>ب) int substr_count ( string haystack, string needle) تعداد تکرار یک string را در یک string دیگر شمارش می کند. آرگومان اول، رشته مرجع و آرگومان دوم، رشته جستجو شونده است. نتیجه تابع یک عدد است. به مثال زیر توجه کنید:</p>
<p>&lt;?php<br />
echo substr_count(&#8220;This is a test&#8221;, &#8220;is&#8221;); // prints out 2<br />
?&gt;</p>
<p>ج) string substr_replace ( string string, string replacement, int start [, int length]) این تابع می تواند یک رشته را جایگزین یک رشته دیگر نماید. آرگومان اول رشته مرجع، آرگومان دوم رشته جایگزین، آرگومان سوم شروع جایگزینی و آرگومان آخر شماره کاراکتر انتهایی است. به مثال زیر توجه کنید:</p>
<p>&lt;?php<br />
$var = &#8216;ABCDEFGH:/MNRPQR/&#8217;;<br />
echo &#8220;Original: $var&lt;hr /&gt;\n&#8221;;<br />
/* These two examples replace all of $var with &#8216;bob&#8217;. */<br />
echo substr_replace($var, &#8216;bob&#8217;, 0) . &#8220;&lt;br /&gt;\n&#8221;;<br />
echo substr_replace($var, &#8216;bob&#8217;, 0, strlen($var)) . &#8220;&lt;br /&gt;\n&#8221;;<br />
/* Insert &#8216;bob&#8217; right at the beginning of $var. */<br />
echo substr_replace($var, &#8216;bob&#8217;, 0, 0) . &#8220;&lt;br /&gt;\n&#8221;;<br />
/* These next two replace &#8216;MNRPQR&#8217; in $var with &#8216;bob&#8217;. */<br />
echo substr_replace($var, &#8216;bob&#8217;, 10, -1) . &#8220;&lt;br /&gt;\n&#8221;;<br />
echo substr_replace($var, &#8216;bob&#8217;, -7, -1) . &#8220;&lt;br /&gt;\n&#8221;;<br />
/* Delete &#8216;MNRPQR&#8217; from $var. */<br />
echo substr_replace($var, &#8221;, 10, -1) . &#8220;&lt;br /&gt;\n&#8221;;<br />
?&gt;</p>
<p>د) int strlen ( string str)  طول متغیر را بر می گرداند. به مثال زیر توجه کنید:</p>
<p>&lt;?php<br />
$str = &#8216;abcdef&#8217;;<br />
echo strlen($str); // 6<br />
$str = &#8216; ab cd &#8216;;<br />
echo strlen($str); // 7<br />
?&gt;</p>
<p>سعی خواهیم کرد از جلسه بعد دستورات شرطی را آغاز کنیم تا بتوانیم برنامه نویسی جدی تری را ادامه دهیم.</p>
<p>موفق باشید</p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/phplearn3880529-1902/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>جلسه دوم آموزش php</title>
		<link>http://www.irandevelopers.com/programming/learnphps28805029-1901/</link>
		<comments>http://www.irandevelopers.com/programming/learnphps28805029-1901/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 10:58:04 +0000</pubDate>
		<dc:creator>biranvand2009</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[جلسه دوم آموزش php]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=1901</guid>
		<description><![CDATA[آموزش PHP – جلسه دوم توضیحات برنامه نویس در حین برنامه نویسی (Comments ) مانند تمام زبانهای برنامه نویسی دیگر، می توانید توضیحات خود را برای آسان کردن رجوع های بعدی در PHP داشته باشید. به این منظور می توانید از // یا # برای بازداشتن PHP از انجام پردازش بر روی متن روبروی آن [...]]]></description>
			<content:encoded><![CDATA[<p>آموزش PHP – جلسه دوم</p>
<p>توضیحات برنامه نویس در حین برنامه نویسی (Comments )</p>
<p>مانند تمام زبانهای برنامه نویسی دیگر، می توانید توضیحات خود را برای آسان کردن رجوع های بعدی در PHP داشته باشید. به این منظور می توانید از // یا # برای بازداشتن PHP از انجام پردازش بر روی متن روبروی آن استفاده کنید. اگر می خواهید بیش از یک خط را زیر پوشش Comment خود قرار دهید، آن را در بین علامتهای /* */ قرار دهید.</p>
<p>&lt;?php<br />
// This line will not be parsed in PHP<br />
# This line will not be parsed in PHP like the line above<br />
/* Line number1: These 3 lines will not either!<br />
Line number2<br />
Line number3: End of comment */<br />
?&gt;</p>
<p>عملگرهای ریاضی در PHP</p>
<p>عملگرهای ریاضی در PHP طبق جدول زیر می باشند.<br />
مثال<br />
نام<br />
عملگر</p>
<p>$a + $b<br />
جمع<br />
+</p>
<p>$a &#8211; $b<br />
تفریق<br />
-</p>
<p>$a * $b<br />
ضرب<br />
*</p>
<p>$a / $b<br />
تقسیم<br />
/</p>
<p>$a % $b<br />
باقیمانده<br />
%</p>
<p>توجه: همانند زبانهایی مانند C در اینجا هم می توانیم از عملگرهای پیشوندی مانند $a+=$b یا $a++ استفاده نماییم.</p>
<p>عملگرهای رشته ای در PHP</p>
<p>یک عملگر رشته ای مهم در PHP وجود دارد و آن نقطه (.) می باشد. این عملگر باعث به هم چسبیدن دو رشته مجزا می گردد.</p>
<p>توجه: از عبارت .= می توانید استفاده نمایید.</p>
<p>متغیرها در PHP</p>
<p>در زبان PHP باید قبل از هر متغیر یک علامت $ قرار دهید. در واقع PHP از روی علامت $ تشخیص می دهد که متغیرهای برنامه شما کدامند.</p>
<p>اگر تاکنون با زبانهای برنامه نویسی مانند C، C++، Pascal و مانند اینها کار می کرده اید، احتمالا انتظار دارید انواع مختلف متغیرها اعم از Integer، Real، Float و غیره را برایتان معرفی کنم. اما احتمالا خوشحال خواهید شد که بدانید نوع متغیرها برای PHP اهمیت ندارد. کافیست متغیری را نامگذاری کنید و سپس هر مقدار، از هر نوع و به هر اندازه که می خواهید در آن قرار دهید. سوالی که پیش خواهد آمد احتمالا &#8220;نحوه عمل PHP با این متغیرهای همه منظوره&#8221; است.</p>
<p>قبل از اینکه به مثال برسیم باید توجه شما را به دو نکته جلب کنم:</p>
<p>۱-     متغیرها در PHP نسبت به کوچکی و بزرگی حساسیت دارند (Case Sensitive ). یعنی به عنوان مثال متغیرهای my_var و My_Var و MY_VAR از نظر زبان PHP با هم متفاوت هستند.</p>
<p>۲-     متغیرها می توانند نامهایی با حروف کوچک و بزرگ انگلیسی و همینطور Underscore (خط فاصله پایین) را اخذ نمایند. استفاده از اعداد به شرطیکه اولین حرف متغیر نباشند نیز مجاز است. (یعنی مثلا $s12 و $S_1 به عنوان نام متغیر مجاز است اما $۱s2 مجاز نمی باشد.) به شما به عنوان یک برنامه نویس که به تازگی شروع به کار با PHP نموده است پیشنهاد می کنم که از استفاده از Underscoreها نیز در ابتدای نام متغیرهای خود اجتناب ورزید. بعدها خواهیم دید که بسیاری از متغیرهایی که PHP خود از آنها استفاده می کند دارای Underscore در ابتدایشان می باشد.</p>
<p>حالا به مثال زیر توجه کنید:<br />
&lt;?php<br />
$a=4;<br />
$b=23;<br />
$c=&#8221;20hi! &#8220;;<br />
$d=&#8221;world 26&#8243;;<br />
$D=650.25; //It is different from $d<br />
echo($D);//650.25<br />
echo(&#8220;&lt;br&gt;&#8221;);<br />
echo($d);//world 26<br />
echo(&#8220;&lt;br&gt;&#8221;);<br />
echo($a+$b); //27<br />
echo(&#8220;&lt;br&gt;&#8221;);<br />
echo($b+$c);//43<br />
echo(&#8220;&lt;br&gt;&#8221;);<br />
echo($c+$d);//20<br />
echo(&#8220;&lt;br&gt;&#8221;);<br />
echo($c.$d);//20hi! world 26<br />
echo(&#8220;&lt;br&gt;&#8221;);<br />
echo($a.$c.$d);//420hi! world 26<br />
echo(&#8220;&lt;br&gt;&#8221;);<br />
$c.=$d;<br />
echo($c);//20hi! world 26<br />
echo(&#8220;&lt;br&gt;&#8221;);<br />
echo($d);//world 26<br />
?&gt;</p>
<p>خروجی برنامه بصورت زیر خواهد بود:</p>
<p>همانطور که از مثال بالا هم متوجه می شوید، در صورتیکه عددی را بصورت عادی و بدون علامت نقل قول (&#8221; &#8220;) به یک متغیر نسبت می دهیم، PHP می تواند با آن هم بصورت عدد و هم بصورت رشته برخورد نماید. در صورتیکه یک مقدار را در داخل &#8221; &#8221; قرار دهیم، اگر در ابتدای آن یک عدد وجود داشته باشد، PHP می تواند در مقابل عملگرهای ریاضی با آن عددها همچون اعداد عادی برخورد نماید و در مقابل عملگرهای رشته ای به عنوان رشته.</p>
<p>در این دو جلسه با هم آموختیم که چگونه یک کد ساده PHP را بسازیم و چگونه با متغیرها در PHP برخورد نماییم. در جلسه های آینده موارد بیشتری از چگونگی برنامه نویسی با PHP به شما خواهم آموخت.</p>
<p>اگر نیازی به توضیح بیشتر در هر موردی از این مقاله داشتید، به من email بزنید (siamak_j_2000@yahoo.com) تا یا بصورت یک email خصوصی و یا در قالب یک مقاله پاسخ شما را بدهم.<br />
موفق باشید h biranvand</p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/learnphps28805029-1901/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>جلسه اول آموزش php</title>
		<link>http://www.irandevelopers.com/programming/learnphps28805292-1900/</link>
		<comments>http://www.irandevelopers.com/programming/learnphps28805292-1900/#comments</comments>
		<pubDate>Thu, 20 Aug 2009 10:55:54 +0000</pubDate>
		<dc:creator>biranvand2009</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>
		<category><![CDATA[جلسه اول آموزش php]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=1900</guid>
		<description><![CDATA[phpچیست؟ PHP یک زبان برنامه نویسی با کد باز (Open-Source) است که اگرچه در ابتدا صرفا جهت برنامه نویسی تحت وب تولید شد، امروزه کارآییهای فراوانی پیدا کرده است. PHP یک زبان تحت سرور است (Server-Side) که طبیعتا برای اجرا نیاز به یک برنامه سرویس دهنده وب (Web Server) دارد. کسانیکه مانند خود من قبلا [...]]]></description>
			<content:encoded><![CDATA[<p>phpچیست؟</p>
<p>PHP یک زبان برنامه نویسی با کد باز (Open-Source) است که اگرچه در ابتدا صرفا جهت برنامه نویسی تحت وب تولید شد، امروزه کارآییهای فراوانی پیدا کرده است. PHP یک زبان تحت سرور است (Server-Side) که طبیعتا برای اجرا نیاز به یک برنامه سرویس دهنده وب (Web Server) دارد.</p>
<p>کسانیکه مانند خود من قبلا با PERL کار کرده اند و حالا قصد دارند با PHP کار کنند، احتمالا مثل من در ابتدا به مشکلاتی بر خواهند خورد اما مطمئن باشید که PHP را سریع خواهید آموخت. آنچه به نظر من از خصوصیات خوب PHP بشمار می آید آن است که با وجود شباهت PHP با PERL، PHP پیچیدگیهای PERL را کمتر دارا می باشد. هرچند که قدرت PERL بر روی متن ها غیر قابل انکار است اما فراموش نکنید که PHP را صرفا برای محیط وب ساخته اند پس به اندازه کافی ( و حتی بیش از حد کافی ) امکانات کار با stringها را به شما ارائه خواهد کرد. فکر می کنم مقدمه چینی بیش از این هم حوصله شما را سر می برد و هم من را از موضوع دور می کند پس بر می گردیم به PHP.</p>
<p>برای شروع کار با PHP چه نیاز داریم؟</p>
<p>PHP برای اجرا نیاز به یک Web-Server دارد. دم دست ترین Web-Server برای شما احتمالا IIS خواهد بود، چرا که با استفاده از سی دی Windows قابل نصب است. نمی خواهم در این مقاله به شرح نصب IIS (یا وب سرورهای دیگر) بپردازم اما اگر نیاز به شرح آن دارید لطفا با من تماس بگیرید تا بطور مفصل آن را شرح دهم (آدرس پست الکترونیکی من در انتهای این مقاله آمده است). برای کسانیکه بقول یکی از دوستان من، &#8220;مرام Open Source&#8221; گلوی آنها را می فشارد شاید بهتر باشد از Apache به عنوان Web-Server استفاده کنند. (البته اگر از حق هم نگذریم Apache خیلی از IISبهتره!!!)</p>
<p>اگر Web-Server مورد علاقه شما به درستی بر روی دستگاه شما نصب شده است، حالا نیاز دارید که PHP را بر روی آن نصب کنید. برای بدست آوردن کد PHP از آدرس http://www.php.net/downloads.php استفاده کنید.</p>
<p>طبیعتا برای مشاهده نتیجه اجرای فایلهای PHP نیاز به یک مرورگر وب (Web Browser) دارید که مسلما رایجترین آن Internet Explorer است. برای درست کردن هر فایل PHP هم نیاز به یک ویرایشگر ساده متنی دارید (مثلا Word pad یا Note pad ) توجه کنید که از ویرایشگرهای حرفه ای مانند Microsoft Word نمی توانید استفاده کنید زیرا این ویرایشگرها از کاراکترهای پنهانی فراوانی استفاده می کنند که در هنگام ذخیره فایل متنی این کاراکترها هم ذخیره خواهند شد که باعث عدم اجرای دستورات PHP می شوند. با هم یک کد ساده PHP بنویسیم.<br />
حالا می خواهیم اولین کد PHP را با هم درست کنیم. ویرایشگر متن را باز کنید (مثلا Word pad) و در آن چنین بنویسید:</p>
<p>&lt;?php<br />
echo (“Hi! I am the first PHP script you have made!”);<br />
?&gt;</p>
<p>حالا فایلتان را با عنوان ۱st.php و در Web Server Local Folder ذخیره نمایید (اگر از IIS استفاده می کنید این فولدر در درایوی که Windows را در آن نصب کرده اید، با نام Inetpub وجود دارد. در داخل آن فولدر دیگری به نام wwwroot وجود دارد که باید فایلتان را در آن بریزید.)</p>
<p>حالا مرورگر وب خود را باز کنید (مثلا Internet Explorer) و در قسمت آدرس آن ابتدا //:http و سپس نام کامپیوتر خود و یا آدرس IP آن را تایپ نمایید (نام کامیوتر را در Control panel/System/Network Identification و IP را در صورتیکه تعیین کرده باشید در قسمت Command Prompt و با اجرای دستور ipconfig می توانید مشاهده کنید) و پس از یک Backslash (/) نام فایل (۱st.php) را تایپ نموده و Enter را بزنید. بعنوان مثال نام کامپیوتر من siamak است. پس باید در قسمت آدرس مرورگرم خط زیر را بنویسم:</p>
<p>http://siamak/1st.php</p>
<p>اگر همه چیز را تا اینجا درست انجام داده باشید، متن زیر در مرورگرتان پدیدار می شود:</p>
<p>همانطور که احتمالا متوجه شدید، باید کد PHP خود را در داخل تگ &lt;?php ?&gt; قرار دهید. البته می توانید از روشهای دیگر نیز استفاده کنید اما متداولترین روش همین است.</p>
<p>دستور ()echo در PHP وظیفه چاپ در خروجی را بر عهده دارد.<br />
می توانستیم همین کد را با کمک تگهای HTML و بصورت زیر نیز بنویسیم:</p>
<p>&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;?php<br />
echo (&#8220;Hi! I am the first PHP script you have made!&#8221;);<br />
?&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</p>
<p>در هر صورت خروجی برنامه به همان صورت که گفتیم خواهد بود. خوب برای جلسه اول کافیست! اگر نیازی به توضیح بیشتر در هر موردی از این مقاله داشتید، به من email بزنید (siamak_j_2000@yahoo.com)</p>
<p>تا یا بصورت یک email خصوصی و یا در قالب یک مقاله پاسخ شما را بدهم.<br />
موفق باشید h biranvand</p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/learnphps28805292-1900/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>چگونگی ارسال ایمیل در PHP</title>
		<link>http://www.irandevelopers.com/programming/sendemailwithphp8711291205-1476/</link>
		<comments>http://www.irandevelopers.com/programming/sendemailwithphp8711291205-1476/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 08:35:38 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=1476</guid>
		<description><![CDATA[PHP دو تابع اختصاصی برای ارسال Mail به همراه دارد که به صورت پیش فرض در داخل PHP نصب شده‌اند: تابع ()Mail که اجازه می‌دهد مستقیما&#8221; از یک Script ایمیل خود را ارسال کنید و تابع ()ezmlm_hash که کارهای لازم برای پیوستن نامه‌ها به EZMLM mailing list را در اختیار شما قرار می‌دهد (جهت توضیحات [...]]]></description>
			<content:encoded><![CDATA[<div class="articleBody">PHP دو تابع اختصاصی برای ارسال Mail به همراه دارد که به صورت پیش فرض در داخل PHP  نصب شده‌اند: تابع ()Mail که اجازه می‌دهد مستقیما&#8221; از یک Script ایمیل خود را  ارسال کنید و تابع ()ezmlm_hash که کارهای لازم برای پیوستن نامه‌ها به EZMLM  mailing list را در اختیار شما قرار می‌دهد (جهت توضیحات بیشتر به <a href="ezmlm.org" target="_blank">ezmlm.org</a> مراجعه کنید).</p>
<p>تابع ()Mail  برای ارسال نامه‌ها از اطلاعات موجود در فایل php.ini استفاده می‌کند و در اکثر  موارد کار با مقادر پیش فرض این اطلاعات باعث عمل نکردن تابع می شود. این اطلاعات  در سه قسمت وجود دارند (توجه داشته باشید که دو مورد اول برای سیستم‌های  مایکروسافتی و مورد آخر برای کار با سیستم‌های یونیکسی است):</p>
<p><strong>SMTP:</strong> آدرس میزبان SMTP را مشخص می‌کند. این آدرس هم می‌تواند یک آدرس کامل باشد و هم یک  آدرس IP. این تنظیم فقط در سیستمهای مایکروسافتی مورد استفاده قرار می‌گیرد.</p>
<p><strong>sendmail_from:</strong> مشخص می‌کند که این نامه از طرف چه کسی فرستاده شده  است. این قسمت هم فقط در سیستم‌های مایکروسافتی کار می‌کند.</p>
<p><strong>sendmail_path:</strong> مسیر کامل برنامه اجرایی email را مشخص می‌کند و این  برنامه هنگام فرستادن email استفاده می‌شود. این قسمت مخصوص سیستمهای یونیکسی است.</p>
<p>تابع ()Mail بصورت زیر تعریف شده است:</p>
<div class="Code">bool mail(string recipient, string subject, string message,  [string extra_headers], [string extra_arguments])</div>
<p>پارامترهای این تابع:</p>
<table border="0" cellspacing="1" cellpadding="2" width="350" align="center">
<tbody>
<tr bgcolor="#eeeeee">
<td width="100" align="middle"><strong>پارامتر</strong></td>
<td align="middle"><strong>توضیحات</strong></td>
</tr>
<tr bgcolor="#f9f9f9">
<td align="right">recipient</td>
<td align="right">آدرس گیرنده نامه</td>
</tr>
<tr bgcolor="#f9f9f9">
<td align="right">subject</td>
<td align="right">موضوع نامه</td>
</tr>
<tr bgcolor="#f9f9f9">
<td align="right">message</td>
<td align="right">متن نامه</td>
</tr>
<tr bgcolor="#f9f9f9">
<td align="right">extra_headers</td>
<td align="right">headerهای اضافی برای نامه شما</td>
</tr>
<tr bgcolor="#f9f9f9">
<td align="right" valign="top">extra_arguments</td>
<td align="right">آرگومانهای بیشتر برای تحت اختیار گرفتن برنامه فرستنده mail. در  PHP نسخه ۴٫۰٫۵ و بالاتر.</td>
</tr>
</tbody>
</table>
<p>تایع فوق یک ایمیل به  آدرس مشخص شده می‌فرستد و در صورت موفقیت مقدار TRUE و غیر این صورت مقدار FALSE را  برمی‌گرداند.</p>
<p>پارامتر recipient می‌تواند هم حاوی یک آدرس باشد و هم یک  لیست از آدرسها که با کاما از هم جدا شده‌اند. اگر شما می‌خواهید تا از header های  اضافی برای ارسال نامه خود استفاده کنید مثلا از CC یا BCC این عبارات باید در  پارامتر extra_headers قرار داده شوند. توجه داشته باشید که این تابع به هیچ عنوان  مشخص نمی‌کند که آیا نامه به مقصد رسیده است یا خیر. در صورت کامل نبودن هر یک از  موارد اجباری تابع فوق، این تابع عمل نخواهد کرد. این تابع از نسخه ۳ در PHP موجود  است.</p>
<p>مثال زیر نحوه استفاده از این تابع را نمایش می‌دهد:</p>
<pre class="Code">/* When the following code was executed, i received this email:
*
* From: Apache httpd
* To: amirsaied@hotmail.com
* Subject: This is a test
* Date: Thu, 4 Mar 2004 16:33:17 -0700
*
* Hi there,
*
* This is a test message. please disregard.

$address = 'amirsaied@hotmail.com';
$subject= 'This is a test';
$message= 'Hi there,

This is a test message. please disregard.';
mail($address, $subject, $message);</pre>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/sendemailwithphp8711291205-1476/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>چگونه یک سیستم عضوگیری ساده توسط PHP بسازیم؟</title>
		<link>http://www.irandevelopers.com/programming/subscribersystemphp8711291202-1472/</link>
		<comments>http://www.irandevelopers.com/programming/subscribersystemphp8711291202-1472/#comments</comments>
		<pubDate>Tue, 17 Feb 2009 08:33:02 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[اینترنت]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=1472</guid>
		<description><![CDATA[در طی این مقاله شما استفاده آسان از موارد زیر و همچنین به کاربردن آنها در برنامه‌های دیگر را یاد خواهید گرفت: گرفتن اطلاعات کاربر هنگام ثبت نام و ذخیره آن در MySQL ساختن یک کلمه عبور به طور تصادفی و تبدیل آن به کد رمز در دیتابیس تائید ایمیل کاربر هنگام ثبت نام قبل [...]]]></description>
			<content:encoded><![CDATA[<div class="articleBody">در طی این مقاله شما استفاده آسان از موارد زیر و همچنین به کاربردن آنها در  برنامه‌های دیگر را یاد خواهید گرفت:</p>
<ul>
<li>گرفتن اطلاعات کاربر هنگام ثبت نام و ذخیره آن در MySQL</li>
<li>ساختن یک کلمه عبور به طور تصادفی و تبدیل آن به کد رمز در دیتابیس</li>
<li>تائید ایمیل کاربر هنگام ثبت نام قبل از اولین ورود</li>
<li>دستورات ابتدایی کار با فرم‌ها در PHP</li>
<li>به کار گیری تابع Mail در PHP و نحوه ارسال ایمیل توسط آن</li>
</ul>
<p>لازم  است یادآوری کنم که کدهای موجود در برنامه به صورت بسیار ساده نوشته شده‌اند و  امکان دارد که بر حسب سیستم عامل و یا نسخه PHP که بر روی سیستم شما می‌باشد اجرا  نشوند. چنانچه با این مشکل برخورد کردید، عیب را در نحوه نصب PHP و یا سیستم عامل  خود جستجو کنید.</p>
<p>چنانچه با PHP و برنامه‌نویسی تحت وب و نیز طراحی صفحات و  بانک اطلاعاتی به صورت ابتدایی آشنایی ندارید توصیه می‌کنم که این مقاله را دنبال  نکنید. کلیه فایل‌های مورد نیاز در انتهای مقاله به صورت فشرده شده موجود می‌باشند.  قبل از ادامه مقاله توصیه می‌کنم که حتما آن ها را دانلود کرده و در ویرایشگرهای  خود باز کنید. ویرایشگر مورد استفاده من Notepad می‌باشد.</p>
<p><strong>ساختن  بانک اطلاعاتی (Database):</strong><br />
در این مرحله به ساخت یک بانک اطلاعاتی برای  سیستم عضویت می‌پردازیم. ممکن است شما از phpMyAdmin و یا سایر برنامه‌های مرتبط با  MySQL استفاده کنید ولی من از PHPMyAdmin به خاطر سهولت و همچنین فراگیر بودن آن در  اکثر میزبانهای (Host) کاربران ایرانی، استفاده می‌کنم.</p>
<p>جهت این کار ابتدا  یک بانک اطلاعاتی با نام دلخواه بسازید و سپس برای ایجاد جداول و مقداردهی اولیه در  قسمت Query Window کد زیر را وارد کنید:</p>
<pre class="Code">CREATE TABLE users (
userid int(25) NOT NULL auto_increment,
first_name varchar(25) NOT NULL default '',
last_name varchar(25) NOT NULL default '',
email_address varchar(25) NOT NULL default '',
username varchar(25) NOT NULL default '',
password varchar(255) NOT NULL default '',
info text NOT NULL,
user_level enum('0','1','2','3') NOT NULL default '0',
signup_date datetime NOT NULL default '0000−۰۰−۰۰ ۰۰:۰۰:۰۰',
last_login datetime NOT NULL default '0000−۰۰−۰۰ ۰۰:۰۰:۰۰',
activated enum('0','1') NOT NULL default '0',
PRIMARY KEY (userid) ) TYPE=MyISAM COMMENT='Membership Information';</pre>
<p><strong>sql.txt</strong></p>
<p>لازم به یادآوری است که چنانچه برنامه نویس حرفه‌ای  می‌باشید و یا در زمینه بانک‌های اطلاعاتی سر رشته دارید، ممکن است از شیوه آرایش  جدول‌ها در این بانک اطلاعاتی خوشتان نیاید که در اینصورت میتوانید به دلخواه آن را  تغییر دهید. شیوه جدول‌بندی و آرایش جدول‌ها در این مقاله به شیوه معمولی می‌باشد.</p>
<p>حال که بانک اطلاعاتی مورد نیاز ایجاد شد به سراغ گرفتن اطلاعات از کاربر و  ذخیره آن در بانک اطلاعاتی می‌رویم.</p>
<p><strong>ثبت نام کاربر:</strong><br />
شما  می‌توانید با HTML یک فرم ساده ایجاد کنید. این کار به راحتی توسط نرم‌افزارهایی  نظیر Front Page و یا DreamWeaver قابل انجام است ولی من یک کد آماده با نام  login_from.htm برای شما آماده کرده‌ام که می‌توانید از آن استفاده کنید. شما  می‌توانید با سلیقه خود طرح و شکل آن را عوض کنید. چنانچه خواستید شکل فرم را عوض  کنید این نکته توجه داشته باشید که نام فیلدهای فرم به صورت زیر باشد: first_name  ،last_name ،email_address ،username و info.</p>
<p>چنانچه فرم نمونه را تغییر  نمی‌دهید تمام نام‌ها برای هر فیلد درست انتخاب شده‌اند و نیازی به تغییر آنها  نیست. لازم به یادآوری است که خاصیت action فرم باید به مسیر درستی (در اینجا  register.php) برای فرستادن اطلاعات اشاره کند.</p>
<p>اکنون فایل register.php را  باز کنید. به ظاهر کد پیچیده‌ای است. اماعجله نکنید! در ادامه درباره ساختار کدها و  طرز کار هریک از آن‌ها صحبت خواهد شد. اگر به توضیحاتی که در درون کدها نوشته شده  است توجه کنید درک آن بسیار ساده و قابل فهم خواهد بود. حال به توضیح برنامه  می‌پردازیم:</p>
<pre class="Code">&amp;lt;?php
 include 'db.php';
?&amp;gt;</pre>
<p>این خط فایل db.php که حاوی کدهای لازم برای ارتباط با بانک اطلاعاتی  می‌باشد را در بدنه اصلی برنامه فراخوانی می‌کند. باز هم این نکته را یادآوری  می‌کنم که چنانچه اطلاعات زیادی درباره بانک‌های اطلاعاتی و نحوه برنامه نویسی آنها  ندارید، حتما آموخته‌های خود را تکمیل کنید تا فهم و درک مطلب برای شما آسانتر شود.  من یک نمونه اتصال به بانک اطلاعاتی را که در db.php نوشته شده در زیر آورده‌ام.  اگر جزو کاربران حرفه‌ای PHP هستید تغییرات دلخواه و یا حتی جدید را می‌توانید در  db.php انجام دهید:</p>
<pre class="Code">&lt;?php
 $dbhost = "localhost"; // database host
 $dbuser = "db_username"; // database username
 $dbpassword = "db_password"; // database password
 $db2use = "db_name"; // name of database

 $conn = @mysql_pconnect($dbhost,$dbuser,$dbpassword)
 or die("Connection failed: Please try later.");
 $db = @mysql_select_db ($db2use,$conn) or die(Error:.mysql_error());
?&gt;</pre>
<p>در مورد کد بالا به نکات زیر توجه کنید:</p>
<ul type="1">
<li>مقدار dbhost$ در بیشتر موارد localhost می‌باشد. اما چنانچه غیر از این بود با  سرویس پشتیبان سرورتان تماس بگیرید.</li>
<li>dbuser$ نام کاربری بانک اطلاعاتی شما می‌باشد.</li>
<li>dbpassword$ کلمه عبور بانک اطلاعاتی شما می‌باشد.</li>
<li>db2use$ نام دیتابیس (بانک اطلاعاتی) مورد استفاده شما می‌باشد.</li>
</ul>
<p>برای اتصال به بانک اطلاعاتی از یک mysql_pconnect استفاده کردیم که  وظیفه ارتباط دائمی را تا پایان برنامه به عهده داشته دارد. این کار باعث صرفه جویی  در زمان اجرای برنامه می‌شود ولی این نکته حائز اهمیت است که استفاده از یک ارتباط  دائمی در بعضی موارد ممکن است به سود شما نباشد و باعث ایجاد بار اضافی بر روی سرور  شما شود. سایر دستورات مربوط به بالا واضح است و احتیاج به توضیح ندارند. حال به  ادامه توضیحات می پردازیم:</p>
<pre class="Code">// Define post fields into simple variables
 $first_name = $_POST['first_name'];
 $last_name = $_POST['last_name'];
 $email_address = $_POST['email_address'];
 $username = $_POST['username'];
 $info = $_POST['info'];

// Let's strip some slashes in case the user entered any escaped characters
 $first_name = stripslashes($first_name);
 $last_name = stripslashes($last_name);
 $email_address = stripslashes($email_address);
 $username = stripslashes($username);
 $info = stripslashes($info);</pre>
<p>همانطور که از توضیح اول کد مشخص است، اطلاعات فرستاده شده از طریق فرم  در متغیرهایی ذخیره می‌شود. این عمل با استفاده از متد []POST_$ انجام می‌شود. در  قسمت بعد از تابع ( )stripslashes استفاده کرده‌ایم. تابع یاد شده \ (اسلش)های  موجود قبل از &#8216; و &#8221; که PHP به طور خودکار به آنها اضافه می کند را حذف می‌کند. این  عمل به خاطر این است که امکان دارد ما اطلاعاتی که توسط کاربر ثبت می شود را دوباره  نمایش دهیم. وجود اسلش هنگام فراخوانی اطلاعات از بانک اطلاعاتی موجب بروز خطای  دستوری می‌شود. این قسمت بیشتر در مورد اطلاعاتی است که از فیلد Infromation about  you کاربرد دارد زیرا کاربر می‌تواند هر آنچه را که می‌خواهد در آن بنویسد.</p>
<p>برای چک کردن اینکه ایمیل درست وارد شده باشد یعنی حاوی @ و . باشد،  دستورهای جاوا اسکریپتی بسیاری است که به دلیل پیچیده شدن موضوع آن را به خودتان  واگذار میکنیم. حال نوبت به کنترل اطلاعاتی است که کاربر ارسال کرده است:</p>
<pre class="Code">// Do some error checking on the form posted fields
 if((!$first_name) || (!$last_name) || (!$email_address) || (!$username)) {
   echo 'You did not submit the following required information! &amp;lt;br /&amp;gt;';

 if (!$first_name) {
   echo "First Name is a required field. Please enter it below.&amp;lt;br /&amp;gt;";
 }

 if (!$last_name) {
   echo "Last Name is a required field. Please enter it below.&amp;lt;br /&amp;gt;";
 }

 if (!$email_address) {
   echo "Email Address is a required field. Please enter it below.&amp;lt;br /&amp;gt;";
 }

 if (!$username) {
   echo "Desired Username is a required field. Please enter it below.&amp;lt;br /&amp;gt;";
 }

 include 'join_form.html'; // Show the form again!

 /* End the error checking and if everything is ok, we'll move on to
 creating the user account */

 exit(); // if the error checking has failed, we'll exit the script!
}</pre>
<p>این قسمت بسیار ساده است. شرط اول کنترل میکند که همه فیلدها پر شده  باشند. این کار بوسیله عملگر منطقی &#8220;یا&#8221; &#8220;||&#8221; انجام می‌شود. چنانچه یکی از فیلدها  خالی باشد، پیغام‌های خطای متناظر با آن با آن فیلد بر روی صفحه نشان داده خواهد  شد. چنانچه همه فیلدها پر شده باشند و فیلد خالی موجود نباشد کنترل متغیرها متوقف  شده و از بلاک شرط با دستور ()exit خارج می شویم. قسمت بعد کنترل اینکه نام کاربری  و ایمیل شما قبلا در بانک اطلاعاتی ذخیره نشده باشد:</p>
<pre class="Code"> $sql_email_check = mysql_query("SELECT email_address FROM users WHERE
 email_address='$email_address'");
 $sql_username_check = mysql_query("SELECT username FROM users WHERE
 username='$username'");
 $email_check = mysql_num_rows($sql_email_check);
 $username_check = mysql_num_rows($sql_username_check);

 if (($email_check &amp;gt; 0) || ($username_check &amp;gt; 0)) {
  echo "Please fix the following errors: &amp;lt;br /&amp;gt;";

   if ($email_check &amp;gt; 0) {
     echo "&amp;lt;strong&amp;gt;Your email address has already been used by
           another member in our database. Please submit a different
           Email address!&amp;lt;br /&amp;gt;";

     unset($email_address);
   }

   if ($username_check &amp;gt; 0) {
     echo "The username you have selected has already been used by
           another member in our database. Please choose a different
           Username!&amp;lt;br /&amp;gt;";

     unset($username);
   }

   include 'join_form.html'; // Show the form again!

   exit(); // exit the script so that we do not create this account!
 }</pre>
<p>دستورات بالا برای آنهایی که در حد متوسط از بانک‌های اطلاعاتی سر رشته  دارند بسیار ساده است. چنانچه نام کاربری و یا ایمیل قبلا ثبت شده باشد مقدار ()  mysql_num_rows برابر صفر نمی‌شود و پیغام‌های متناظر با کنترل نام کاربری و یا  ایمیل برای کاربر نشان داده می‌شود و روند ثبت نام قطع شده و پیغام مورد نظر چاپ می  شود و در زیر آن دوباره فرم ثبت نام نشان داده می‌شود. حتما تا به حال با این موضوع  در سایت های بزرگ برخورد کرده‌اید که چنانچه هر کدام از فیلدها به نحوی اشتباه پر  شده باشند و یا نام کاربری قبلا ثبت شده باشد صفحه فرم با اطلاعاتی که کاربر هنگام  ورود پر کرده تکمیل شده و قسمت مشکل دار با پیغام خطا به رنگ قرمز نمایش داده  می‌شود. برای ساختن چنین روندی به برنامه نویسی پیشرفته و بکارگیری اسکریپت‌های  مختلفی نیاز داریم که از سطح متوسط این مقاله خارج است.</p>
<pre class="Code">function makeRandomPassword() {
 $salt = "abchefghjkmnpqrstuvwxyz0123456789";
 srand((double)microtime()*1000000);
 $i = 0;

 while ($i &lt;= 7) {
   $num = rand() % 33;
   $tmp = substr($salt, $num, 1);
   $pass = $pass . $tmp;
   $i++;
 }

 return $pass;
}

$random_password = makeRandomPassword();
$db_password = md5($random_password);</pre>
<p>کار این تابع ایجاد یک کلمه عبور تصادفی و تبدیل آن به فرمت md5 است.  اینکه چرا کاربر اجازه ندارد که خودش کلمه عبور را انتخاب کند دلایلی دارد. یکی از  آن دلایل این است که کلمه عبور ساخته شده به ایمیل کاربر فرستاده می‌شود و این به  ما در راستای اینکه آیا ایمیل ثبت شده توسط کاربر ایمیل معتبری می‌باشد کمک می‌کند.  به عبارتی چنانچه ایمیل فرد معتبر باشد کاربر با رفتن به ایمیل پسورد خود را دریافت  می‌کند. و دلیل دیگر اینکه باایجاد یک کلمه عبور تصادفی و همچنین تبدیل آن به md5  امنیت کلمه عبور بسار بالا می‌رود و به سادگی توسط هکرها قابل شناسایی نیست.</p>
<pre class="Code">// Enter info into the Database.
 $info2 = htmlspecialchars($info);
 $sql = mysql_query("INSERT INTO users (first_name, last_name,
 email_address, username, password, info, signup_date)
 VALUES('$first_name', '$last_name', '$email_address',
 '$username', '$db_password', '$info2', now())") or die (mysql_error());

 if (!$sql) {
   echo 'There has been an error creating your account. Please
   contact the  webmaster.';
 }
 else {
   $userid = mysql_insert_id();

   // Let's mail the user!
   $subject = "Your Membership at MyWebsite!";
   $message = "Dear $first_name $last_name,
   Thank you for registering at our website, http://www.mydomain.com!
   You are two steps away from logging in and accessing our exclusive members
   area. To activate your membership, please click here:

http://www.mydomain.com/activate.php?id=$userid&#038;code=$db_password

   Once you activate your memebership, you will be able to login with the
   following information:
   Username: $username
   Password: $random_password
   Thanks!
   The Webmaster
   This is an automated response, please do not reply!";

   mail($email_address, $subject, $message,
   "From: MyDomain Webmaster&lt; admin@mydomain.com&gt;");

   echo 'Your membership information has been mailed to your email address!
   Please check it and follow the directions!';
 }
?&gt;</pre>
<p>همانطور که از توضیحات بر می‌آید، این قسمت جهت ثبت در بانک اطلاعاتی و  فرستادن اطلاعات از قببیل پسورد و همچنین لینک فعال سازی به کاربر می‌باشد. اما  تابع ( )htmlspecialchars چه کاری انجام می‌دهد؟ این تابع تگهای html را به کدهای  مربوطه تغییر می‌دهد برای مثال:</p>
<pre class="Code">$new = htmlspecialchars("&amp;lt;a href='test'&amp;gt;Test&amp;lt;/a&amp;gt;", ENT_QUOTES);
echo $new;  // &amp;lt;a href=&amp;#039;test&amp;#039;&amp;gt;Test&amp;lt;/a&amp;gt;</pre>
<p>این کار باعث می‌شود که کاراکترهایی نظیر &lt; &gt; &#8216; به همین صورت در  بانک اطلاعاتی ذخیره نشوند و باعث بروز خطاهای دستوری هنگام فراخوانی آنها توسط PHP  نشوند.</p>
<p>در قسمت بعد اطلاعاتی که پس از گذراندن از مراحل مختلف آماده ذخیره  شدن در بانک اطلاعاتی هستند به وسیله دستورINSERT در بانک اطلاعاتی ثبت می‌شوند.  چنانچه مشکلی در بانک اطلاعاتی وجود نداشته باشد، مرحله بعدی آن که فرستادن ایمیل  به کاربر می‌باشد اجرا می‌شود. فرستادن ایمیل توسط تابع ()mail انجام می‌شود.  روش‌های استفاده از تابع ()mail بسیار است که با مراجعه به help برنامه PHP  می‌توانید آنها را مشاهده کنید. در این جا ساده‌ترین روش برای اینکار انتخاب شده  است. کاربر در قسمت پیام ایمیل چیزی شبیه به آنچه در زیر آمده است مشاهده می‌کند:</p>
<pre class="Code">From: MyDomain Webmaster
To: you@email.com
Subject: Your Membership at MyWebsite!

Dear boy from sun,
Thank you for registering at our website, http://www.mydomain.com!
You are two steps away from logging in and accessing our exclusive members area.
To activate your membership, please click here:

http://www.mydomain.com/activate.php?id=3&#038;cod=37ec82769e837c2f853450

Once you activate your memebership, you will be able to login with the
following information:
Username: myusername
Password: msxsag4h

Thanks!
The Webmaster
This is an automated response, please do not reply!</pre>
<p>مرحله بعد به روز رسانی پایگاه داده هنگامی که کاربر ایمیل خود را چک  کرده و بر روی لینک معتبر سازی کلیک کرده است، می‌باشد. کد زیر در فایل  activate.php ذخیره شده است:</p>
<pre class="Code">&lt;?
 /* Account activation script */
 include 'db.php';
 $userid = $_REQUEST['id'];
 $code = $_REQUEST['code'];
 $sql = mysql_query("UPDATE users SET activated='1' WHERE userid='$userid'
 AND password='$code'");
 $sql_doublecheck = mysql_query("SELECT * FROM users WHERE userid='$userid'
 AND password='$code' AND activated='1'");
 $doublecheck = mysql_num_rows($sql_doublecheck);

 if ($doublecheck == 0) {
   echo "&lt;font color=red&gt;Your account could not be activated!&lt;/font&gt;";
 } elseif ($doublecheck &gt; 0) {
   echo "Your account has been activated! You may login below!&lt;br /&gt;";
   include 'login_form.html';
 }
?&gt;</pre>
<p>خط اول فراخوانی فایل db.php برای برقراری ارتباط با بانک اطلاعاتی  می‌باشد. پس از گرفتن اطلاعات خواسته شده از طریق لینک فعال سازی، برنامه ابتدا  مقدار activate کاربر را در صورت صحت اطلاعات ارسالی برابر با ۱ قرار می‌دهد و در  بانک اطلاعاتی ذخیره می‌کند و چنانچه این عمل با موفقیت انجام شد دوباره کنترل  میکند که آیا فعال سازی نام کاربری درست انجام گرفته است یا خیر. چنانچه این قسمت  بدون خطا اجرا شود، صفحه ورود کاربر در صفحه ظاهر می‌شود.</p>
<p>در مقاله بعدی  چگونگی ورود کاربر بعد از تائید نام کاربری و کلمه عبور را بررسی می‌کنیم.</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/subscribersystemphp8711291202-1472/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>چگونه یک برنامه لاگین امن و حرفه ای با PHP طراحی کنید ?</title>
		<link>http://www.irandevelopers.com/programming/loginphpdesign8711101401-1336/</link>
		<comments>http://www.irandevelopers.com/programming/loginphpdesign8711101401-1336/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 10:31:33 +0000</pubDate>
		<dc:creator>ایران پی اچ پی</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=1336</guid>
		<description><![CDATA[سرفصل‌ها : ۱ـ این اسکریپت چگونه کار می کند &#124; پیشنیازها &#124; الگوی بانک اطلاعاتی ۲ـ اتصال به بانک اطلاعاتی &#124;‌ متغیرهای جلسات ۳ـ هسته اسکریپت &#124; ورود کاربران ۴ـ کنترل مداوم اعتبار ورود &#124; اطمینان از معتبر بودن اطلاعات جلسات این آموزش در سطح متوسط طراحی گردیده و به شما خواهد آموخت که چگونه [...]]]></description>
			<content:encoded><![CDATA[<div class="txt"><span style="font-family: Tahoma;"></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">سرفصل‌ها</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> :<br />
۱</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ این اسکریپت چگونه کار می کند |  پیشنیازها | الگوی بانک اطلاعاتی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
۲</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اتصال به بانک اطلاعاتی |‌ متغیرهای  جلسات</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
۳</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ هسته اسکریپت | ورود  کاربران</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
۴</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کنترل مداوم اعتبار ورود | اطمینان  از معتبر بودن اطلاعات</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">جلسات</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></p>
<p></span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">این</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">آموزش در سطح متوسط طراحی گردیده و  به شما خواهد آموخت که چگونه یک برنامه لاگین</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">امن و حرفه ای طراحی کنید . بزودی  یاد می گیریم که چگونه با استفاده از توابع کوکی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ها دسترسی به جلسات را قانونی کنیم و  از سرقت جلسات جلوگیری کنیم</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">.</p>
<p>۱</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ این</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اسکریپت چگونه کار می کند  ؟</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">در این قسمت می خواهم برایتان دلیل  انتخاب این متد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">برای لاگین امن را برایتان توضیح دهم  فراموش نکنید که اصولا امنیت قانون ندارد و</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">شما نیز با استفاده از تجربیات و  توانایی های هوشی خود باید به فکر توسعه و طراحی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">موارد مشابه و امن تر نمائید و به  هیچ وجه به این حد بسنده نکنید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">:<br />
/tmp</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کاربرانی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">که قادرند تا به سرور دست یابی داشته  باشند می تواند جلسات معتبر لاگینها را از</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">شاخه پیش فرض</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">که به منظور ذخیره سازی اطلاعات  جلسات استفاده میشود مشاهده نمایند</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">روش جلوگیری از این نوع حمله کنترل  آی پی می باشد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">.<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کسانی که بر روی میزبان  شما</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">سایتی دارند قادرند جلسات معتبر برای  سایت شما تولید کنند توجه بفرمائید که برخی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">سایتها سرورهای اختصاصی دارند که به  لحاظ امنیتی بسیار مطلوبترند مثل سایت پرشین</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بلاگ</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">برخی از اون آدمایی که به قول خودمون  آخرشن و اند حکن می تونن شبکه رو بو</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بکشن و کوکی‌ها رو بقاپن</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کنترل آی پی این مشکل رو هم حل می  کنه</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></p>
<p>۲-۱</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ اما</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">پیش نیازها</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">شما اول از همه باید بدونین که چه  اطلاعاتی از کاربران قرار که در</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">سایت ذخیره بشه در این مثال برای  سهولت آموزش ساده ترین شکل ممکن رو فرض قرار دادم</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ضمنن چون الان همه دیگه پی اچ پی ۴٫۱  به بالا دارن من هم از استفاده کردم اگر می</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">خواین که این اسکریپت رو روی نسخه  های قدیمی تر اجرا کنین شما</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> super global arrays<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">مجبورید که از</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
$GLOBALS['HTTP_SESSION_VARS']<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">استفاده</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کنید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">.</p>
<p></span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">الگوی بانک اطلاعاتی  ـ۱-۳</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">این فقط یک مثال ساده با ساختاری  مناسب</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">برای مدیریت اگر که مایلید این مثال  را برای کاربران ثبت نام شده استفاده کنید می</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">توانید ستونهای را به دلخواه اضافه  کنید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">من الگوی بانک اطلاعاتی را که از مای  اس</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کیو ال استفاده می کنه اینجا گذاشتم  شما می تونین از دیگر بانکهای اطلاعاتی نیز</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">استفاده کنید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">:</span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;">CREATE TABLE member (</span></code><br />
<code><span style="font-family: Tahoma;">id int NOT NULL  auto_increment,</span></code><br />
<code><span style="font-family: Tahoma;">username varchar(20) NOT NULL default  '',</span></code><br />
<code><span style="font-family: Tahoma;">password char(32)  binary NOT NULL default '',</span></code><br />
<code><span style="font-family: Tahoma;">cookie char(32) binary NOT NULL default  '',</span></code><br />
<code><span style="font-family: Tahoma;">session char(32)  binary NOT NULL default '',</span></code><br />
<code><span style="font-family: Tahoma;">ip varchar(15) binary NOT NULL default  '',</span></code><br />
<code><span style="font-family: Tahoma;">PRIMARY KEY  (id),</span></code><br />
<code><span style="font-family: Tahoma;">UNIQUE KEY  username (username)</span></code><br />
<code><span style="font-family: Tahoma;">);</span></code></p>
<p></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">فیلدهای پسورد و</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کوکی برای استفاده از ام دی فایو  طراحی شدن کوکی مقدارش برای زمانیست که کاربر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بخواهد اطلاعات برایش ذخیره شود و  فیلدهای جلسه و آی پی برای جلسه آی دی و آی پی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کاربر استفاده می شوند</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">.</p>
<p></span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ــــــــــــــــــــــــــــــــــــــ</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
۲</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اتصال به بانک اطلاعاتی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"></p>
<p><code><span style="font-family: Tahoma;">function &amp;db_connect()  {</span></code></p>
<p><code><span style="font-family: Tahoma;">require_once  'DB.php';</span></code></p>
<p><code><span style="font-family: Tahoma;">PEAR::setErrorHandling(PEAR_ERROR_DIE);</span></code></p>
<p><code><span style="font-family: Tahoma;">$db_host = 'localhost';</span></code><br />
<code><span style="font-family: Tahoma;">$db_user = 'root';</span></code><br />
<code><span style="font-family: Tahoma;">$db_pass = '';</span></code><br />
<code><span style="font-family: Tahoma;">$db_name =  'shaggy';</span></code></p>
<p><code><span style="font-family: Tahoma;">$dsn =  \"mysql://$db_user:$db_pass@unix+$db_host/$db_name\";</span></code></p>
<p><code><span style="font-family: Tahoma;">$db =  DB::connect($dsn);</span></code></p>
<p><code><span style="font-family: Tahoma;">$db-&gt;setFetchMode(DB_FETCHMODE_OBJECT);</span></code><br />
<code><span style="font-family: Tahoma;">return $db;</span></code></p>
<p><code><span style="font-family: Tahoma;">}</span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">این تابع شما را به  بانک</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اطلاعاتی متصل می کند و یک اشاره گر  به شی بانک اطلاعاتی پیر باز می</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">گرداند</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></p>
<p>۲-۲</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ متغیرهای جلسات</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">:<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">برای سهولت در امر دستیابی به  اطلاعات</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کاربران من اون رو یک متغیر جلسه ثبت  می کنم ولی برای جلوگیری از پیغام خطا و</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">همچنین ست کردن برخی پیش فرض ها از  تابع زیر استفاده می کنم</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">:</span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"></p>
<p><code><span style="font-family: Tahoma;">function session_defaults()  {</span></code></p>
<p><code><span style="font-family: Tahoma;">$_SESSION['logged'] =  false;</span></code><br />
<code><span style="font-family: Tahoma;">$_SESSION['uid']  = 0;</span></code><br />
<code><span style="font-family: Tahoma;">$_SESSION['username'] =  '';</span></code><br />
<code><span style="font-family: Tahoma;">$_SESSION['cookie']  = 0;</span></code><br />
<code><span style="font-family: Tahoma;">$_SESSION['remember'] =  false;</span></code><br />
<code><span style="font-family: Tahoma;">}</span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">برای ست کردن یه مقادیر  پیش فرض از</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">تابع بالا و برای چک کردن از تابع  زیر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;">if (!isset($_SESSION['uid']) )  {</span></code><br />
<code><span style="font-family: Tahoma;">session_defaults();</span></code><br />
<code><span style="font-family: Tahoma;">}</span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">رو فرا خوانی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کنیم</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">session_start</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">البته فراموش نمی کنیم که  قبل از اینها باید تابع</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></p>
<p>۳</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ هسته</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اسکریپت</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">:<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">برای ایجاد یکپارچگی ساده تر با دیگر  اسکریپتها و ساخت مدوله شده تر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">هسته اسکریپت رو یک آبجکت با ظاهری  خیلی ساده می سازم</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;">class User {</span></code></p>
<p><code><span style="font-family: Tahoma;">var $db = null; // PEAR::DB  pointer</span></code><br />
<code><span style="font-family: Tahoma;">var $failed =  false; // failed login attempt</span></code><br />
<code><span style="font-family: Tahoma;">var $date; // current date  GMT</span></code><br />
<code><span style="font-family: Tahoma;">var $id = 0; // the  current user's id</span></code></p>
<p><code><span style="font-family: Tahoma;">function User(&amp;$db)  {</span></code></p>
<p><code><span style="font-family: Tahoma;">$this-&gt;db =  $db;</span></code><br />
<code><span style="font-family: Tahoma;">$this-&gt;date =  $GLOBALS['date'];</span></code></p>
<p><code><span style="font-family: Tahoma;">if ($_SESSION['logged'])  {</span></code><br />
<code><span style="font-family: Tahoma;">$this-&gt;_checkSession();</span></code><br />
<code><span style="font-family: Tahoma;">} elseif ( isset($_COOKIE['mtwebLogin']) )  {</span></code><br />
<code><span style="font-family: Tahoma;">$this-&gt;_checkRemembered($_COOKIE['mtwebLogin']);</span></code></p>
<p><code><span style="font-family: Tahoma;">}</span></code></p>
<p><code><span style="font-family: Tahoma;">}</span></code></p>
<p></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">این</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کلاس که تعریف میشه آبجکت ما رو  میسازه البته این کاملا مدوله شده نیست اما یک</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">تاریخ مشکل بزرگی نیست و شما می  تونین اونو با اسکریپتهایی که بقیه دوستان نوشتن به</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">صورت شمسی تولید کنید در اینجا ما  چنین چیزی رو می سازیم</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">:</span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;">$date =  gmdate(\"'Y-m-d'\");</span></code><br />
<code><span style="font-family: Tahoma;">$db = db_connect();</span></code><br />
<code><span style="font-family: Tahoma;">$user = new User($db);</span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">حالا برای روشن شدن هدف کد یعنی  لاگین</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کردن تلاش می کنیم ما ابتدا کنترل می  کنیم که آیا کاربر لاگین کرده یا نه اگر این</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کار رو کرده بود ما جلسات رو چک می  کنیم(فراموش نکنین که این یک کد امنیتی) وگرنه</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">یک کوکی رو نام گذاری می کنیم برای  کنترل کردن این به ما اجازه می ده که بینندگان</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">سایت رو شناسایی کنیم</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></p>
<p>۳-۱</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ لاگین کردن  کاربران</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">:</p>
<p></span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">برای اجازه دادن به</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کاربران برای لاگین کردن شما باید یک  فرم وب بسازید پس از اعتبار سنجی فرم شما می</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">تونید اعتبار کاربر رو برای تائید  اطلاعات وارد شده کنترل کنید که برای اینکار از</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
<span style="color: navy;">$user-&gt;_checkLogin(&#8216;username&#8217;, &#8216;password&#8217;,  remember)</span><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">استفاده می</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کنیم</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">خاطر نشان می کنیم که یوزر نیم و  پسورد البته نباید ثابت باشند و ریممبر یک</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">مقدار بولین است که به کاربر اجازه  می دهد تا با درست قرار دادن مقدار آن لاگین</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">خودکار را فعال بسازد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"></p>
<p><code><span style="font-family: Tahoma;">function _checkLogin($username, $password,  $remember) {</span></code></p>
<p><code><span style="font-family: Tahoma;">$username =  $this-&gt;db-&gt;quote($username);</span></code><br />
<code><span style="font-family: Tahoma;">$password =  $this-&gt;db-&gt;quote(md5($password));</span></code></p>
<p><code><span style="font-family: Tahoma;">$sql = \"SELECT * FROM member WHERE \"  .</span></code><br />
<code><span style="font-family: Tahoma;">\"username =  $username AND \" .</span></code><br />
<code><span style="font-family: Tahoma;">\"password =  $password\";</span></code></p>
<p><code><span style="font-family: Tahoma;">$result =  $this-&gt;db-&gt;getRow($sql);</span></code></p>
<p><code><span style="font-family: Tahoma;">if ( is_object($result) )  {</span></code><br />
<code><span style="font-family: Tahoma;">$this-&gt;_setSession($result,  $remember);</span></code><br />
<code><span style="font-family: Tahoma;">return  true;</span></code><br />
<code><span style="font-family: Tahoma;">} else  {</span></code><br />
<code><span style="font-family: Tahoma;">$this-&gt;failed =  true;</span></code><br />
<code><span style="font-family: Tahoma;">$this-&gt;_logout();</span></code><br />
<code><span style="font-family: Tahoma;">return false;</span></code><br />
<code><span style="font-family: Tahoma;">}</span></code></p>
<p><code><span style="font-family: Tahoma;">}</span></code></span><code><span style="font-size: 10pt; color: black; font-family: Tahoma;" lang="AR-SA"></span></code></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">تعریف تابع باید در  مکانی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کنار کلاس تعریف شده یوزر باشه مانند  تمام کدهای پائین در تابع از</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">متد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">PEAR::DB&#8217;s quote</span><span style="font-size: 10pt; font-family: Tahoma;"> <span lang="AR-SA">استفاده کردم تا اطلاعات با امنیت کامل به  بانک</span></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اطلاعاتی انتقال پیدا کنند و به صورت  بی ختری نیز از آن رهای یابند و باز گردنند من</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">از تابع ام دی فایو ترجیحا به جای  توابع مای اسکیو ال استفاده کردم تا شما اگر مایل</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بودید بتوانید از بانکهای اطلاعاتی  دیگر نیز استفاده کنید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">.<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">حلقه ور بهینه شده</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">زیراکه یوزرنیم به صورت منفرد تعریف  شده است نیازی به کنترل خطاهای بانک</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اطلاعاتی نیست زیراکه خطاهای پیشفرض  قبلا در بالا ست شدند چنانچه آبجکت با رزالت</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بانک اطلاعاتی متچ شود لذا متغیر  جلسات ست می شوند و مقدار ترو باز میگردد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">وگرنه مقدار فلد با ترو برابر می  گردد شما می تونین اینجا یک دستور کنترلی قرار</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">دهید تا پیغام سقوط عملیات لاگین رو  اعلام کنه و برای انجام لاگ اوت برای این</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بیننده کافیست تا</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA"><span> </span></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">session_defaults()</span><span style="font-size: 10pt; font-family: Tahoma;"> <span lang="AR-SA">را اجرا کنیم</span></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></p>
<p>۳-۳</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ وضع کردن</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">جلسه</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">:</span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;">function _setSession(&amp;$values, $remember, $init  = true) {</span></code></p>
<p><code><span style="font-family: Tahoma;">$this-&gt;id =  $values-&gt;id;</span></code><br />
<code><span style="font-family: Tahoma;">$_SESSION['uid'] =  $this-&gt;id;</span></code><br />
<code><span style="font-family: Tahoma;">$_SESSION['username'] =  htmlspecialchars($values-&gt;username);</span></code><br />
<code><span style="font-family: Tahoma;">$_SESSION['cookie'] =  $values-&gt;cookie;</span></code><br />
<code><span style="font-family: Tahoma;">$_SESSION['logged'] =  true;</span></code></p>
<p><code><span style="font-family: Tahoma;">if  ($remember) {</span></code></p>
<p><code><span style="font-family: Tahoma;">$this-&gt;updateCookie($values-&gt;cookie,  true);</span></code></p>
<p><code><span style="font-family: Tahoma;">}</span></code></p>
<p><code><span style="font-family: Tahoma;">if ($init) {</span></code></p>
<p><code><span style="font-family: Tahoma;">$session =  $this-&gt;db-&gt;quote(session_id());</span></code><br />
<code><span style="font-family: Tahoma;">$ip =  $this-&gt;db-&gt;quote($_SERVER['REMOTE_ADDR']);</span></code></p>
<p><code><span style="font-family: Tahoma;">$sql = \"UPDATE member SET session = $session, ip =  $ip WHERE \" .</span></code><br />
<code><span style="font-family: Tahoma;">\"id =  $this-&gt;id\";</span></code><br />
<code><span style="font-family: Tahoma;">$this-&gt;db-&gt;query($sql);</span></code></p>
<p><code><span style="font-family: Tahoma;">}</span></code></p>
<p><code><span style="font-family: Tahoma;">}</span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">این</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">متد متغیر جلسه را ست می کند و  همچنین اگر در خواست کوکی برای داشتن لاگین مسمتر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> (</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">خودکار) ارسال شده باشد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">همچنین این متد یک پارامتر دارد که  معین می کند که این</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بار اول لاگین کردن است یا نه (از  طریق فرم یا کوکی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">)<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">یا کنترل جلسه برای  اولین</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بار نیست</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">.</p>
<p>۴</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ لاگین خود کار</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">:<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اگر بینندگان در خواست کنند که کوکی  ارسال</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بشه تا دفعات بعدی از لاگین کردن در  هر مشاهده از سایت بپرید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">این دو متد به شما</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">برای رسیدن به این مهم کمک خواهد  کرد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"></p>
<p><code><span style="font-family: Tahoma;">function updateCookie($cookie, $save)  {</span></code></p>
<p><code><span style="font-family: Tahoma;">$_SESSION['cookie'] =  $cookie;</span></code><br />
<code><span style="font-family: Tahoma;">if ($save)  {</span></code></p>
<p><code><span style="font-family: Tahoma;">$cookie =  serialize(array($_SESSION['username'], $cookie) );</span></code><br />
<code><span style="font-family: Tahoma;">set_cookie('mtwebLogin', $cookie, time() + 31104000,  '/directory/');</span></code><br />
<code><span style="font-family: Tahoma;">}</span></code></p>
<p><code><span style="font-family: Tahoma;">} </span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></p>
<p>4-1</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ کنترل</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">لاگین خود کار</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">:<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اگر کاربران لاگین خودکار را انتاخاب  کرده باشند که به اسکریپت</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اجازه ذخیره کوکی را می دهد که کنترل  می شه از طریق متد زیر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"></p>
<p><code><span style="font-family: Tahoma;">function _checkRemembered($cookie)  {</span></code></p>
<p><code><span style="font-family: Tahoma;">list($username,  $cookie) = @unserialize($cookie);</span></code><br />
<code><span style="font-family: Tahoma;">if (!$username or !$cookie)  return;</span></code></p>
<p><code><span style="font-family: Tahoma;">$username =  $this-&gt;db-&gt;quote($username);</span></code><br />
<code><span style="font-family: Tahoma;">$cookie =  $this-&gt;db-&gt;quote($cookie);</span></code></p>
<p><code><span style="font-family: Tahoma;">$sql = \"SELECT * FROM member WHERE \"  .</span></code><br />
<code><span style="font-family: Tahoma;">\"(username =  $username) AND (cookie = $cookie)\";</span></code></p>
<p><code><span style="font-family: Tahoma;">$result =  $this-&gt;db-&gt;getRow($sql);</span></code></p>
<p><code><span style="font-family: Tahoma;">if (is_object($result) )  {</span></code><br />
<code><span style="font-family: Tahoma;">$this-&gt;_setSession($result,  true);</span></code><br />
<code><span style="font-family: Tahoma;">}</span></code></p>
<p><code><span style="font-family: Tahoma;">}</span></code></p>
<p></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">این تابع هرگز نباید  توسط</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">پیغام خطایی متوقف شود برای ساختن  چیزهای امن تر با کوکی ها مقدار کوکی در کوکی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ذخیر می شود نه پسورد کاربر یکی از  این راه ها می تونه درخواست یک لغت عبور باشه</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">برای ناحیه ای که به امنیت بیشتری  نیاز دارد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></p>
<p>۵-۵</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ـ مطمئن شدن از اعتبار</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">جلسه</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">:</span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"></p>
<p><code><span style="font-family: Tahoma;">function _checkSession()  {</span></code></p>
<p><code><span style="font-family: Tahoma;">$username =  $this-&gt;db-&gt;quote($_SESSION['username']);</span></code><br />
<code><span style="font-family: Tahoma;">$cookie =  $this-&gt;db-&gt;quote($_SESSION['cookie']);</span></code><br />
<code><span style="font-family: Tahoma;">$session =  $this-&gt;db-&gt;quote(session_id());</span></code><br />
<code><span style="font-family: Tahoma;">$ip =  $this-&gt;db-&gt;quote($_SERVER['REMOTE_ADDR']);</span></code></p>
<p><code><span style="font-family: Tahoma;">$sql = \"SELECT * FROM member WHERE \"  .</span></code><br />
<code><span style="font-family: Tahoma;">\"(username =  $username) AND (cookie = $cookie) AND \" .</span></code><br />
<code><span style="font-family: Tahoma;">\"(session = $session) AND (ip =  $ip)\";</span></code></p>
<p><code><span style="font-family: Tahoma;">$result =  $this-&gt;db-&gt;getRow($sql);</span></code></p>
<p><code><span style="font-family: Tahoma;">if (is_object($result) )  {</span></code><br />
<code><span style="font-family: Tahoma;">$this-&gt;_setSession($result, false,  false);</span></code><br />
<code><span style="font-family: Tahoma;">} else  {</span></code><br />
<code><span style="font-family: Tahoma;">$this-&gt;_logout();</span></code><br />
<code><span style="font-family: Tahoma;">}</span></code></p>
<p><code><span style="font-family: Tahoma;">}</span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">پوف</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بالاخره آخرین قسمت کار ما کنترل می  کنیم که آیا کوکی ذخیره شده در جلسه درست هست</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">یا نه جلسه آی دی و آی پی  کاربر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">با یک پارامتر که اجازه می ده که  بفهمیم که این</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اولین بار لاگین کردن در سیستم هست  بنابراین</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> setSession</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">فراخوانی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">مقدار آی پی و</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">آی دی در جلسه بروز رسانی نشود که در  بقیه موارد بطور معمول انجام می شود</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/loginphpdesign8711101401-1336/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>کارتهای الکترونیکی با php وmysql</title>
		<link>http://www.irandevelopers.com/programming/electronicscardphpmysql8711101358-1334/</link>
		<comments>http://www.irandevelopers.com/programming/electronicscardphpmysql8711101358-1334/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 10:29:09 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=1334</guid>
		<description><![CDATA[آیا شما تا به حال خواسته اید که کارتهای الکترونیکی برای سایت تان بسازید ؟ این کار را اخیرا من انجام داده ام و همزمان با آن همه یک روش کار درست بدست آوردم . بنابراین اینجا یک خودآموز سریع است و از این جهت شما مجبور نیستید کارهایی را که من انجام داده ام [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-family: Tahoma;"></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">آیا شما تا به حال  خواسته</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اید که کارتهای  الکترونیکی برای سایت تان بسازید ؟ این</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کار را اخیرا من  انجام</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">داده ام و همزمان با آن  همه یک روش کار درست بدست آوردم</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> . </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بنابراین  اینجا یک</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">خودآموز سریع است و از  این جهت شما مجبور نیستید کارهایی را</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">که من انجام  داده</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ام را بپذیرید . همچنین  در این خودآموز شما ممکن است برای نکات</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بیشتر  ارجاعهایی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">به</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> “ Floppydogs” </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">داشته باشید . ولی آنچه بر روی آن  است نیز از</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">روی کد من در</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> Floppydogs.com </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">آمده است</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> .<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">حال آیا اینکه شما فکر کنید که این  کار یک قطعه</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">session </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ساده و آسان می  خواهد،</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">درست است ؟ خیر ، اینکار  را نکنید، خود من هم</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">دقیقا علت آن را نمی دانم  چرا که</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اگر من در</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> session_destory( ) </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">این کار را</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">انجام می  دادم</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> session ID </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">از  پذیرفتن</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">آن به این روش امتناع می  ورزید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> .<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اشکال</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">این ایجاد کردن ها زمانی  بود که کاربر یک</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> e_card </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">را ارسال می  نمود و موقعی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">که</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">سعی می کرد که برگردد و  یک کارت جدید را ایجاد کند اینکار را نمی توانست انجام</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">دهد زیرا که خطایی مبنی  بر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> ID </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">مشابه پیش  می آمد ( چه زحمتی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">! ) . </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">برای  اینکار</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اول از همه من، باید  عکسها را بسازم و آشکار است که همه آنها بر روی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">صفحه</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> index.php </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">نمایش داده می شود ، کد  اینجا</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> :</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;">&lt;A HREF=\"makecard.php?image=imagename.jpg\"&gt; </span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></p>
<p></span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">به</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">طور معمول هر تصویر  یک</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> imagename </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">متفاوت دارد  حالا من برای ساختن</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> makecard.php </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">در جائیکه  کاربر می رسد و در</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> his/her/its </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اطلاعات  شخصی را وارد می کند از</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> session </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ها استفاده  نمودم که در صورت صرفنظر از این قسمت این خودآموز دیگر بلا</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">استفاده</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">می شود</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> .</span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
</span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">&lt;?</span></code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> session_start</span></code></span><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">();</span></code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> </span></code></span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">session_register</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">(</span></code><code><span style="font-size: 10pt; color: #dd0000; font-family: Tahoma;" dir="ltr">"image\");</span></code><span style="font-size: 10pt; color: #dd0000; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> ?&gt;</span></code><br />
<code><span style="font-family: Tahoma;"> &lt;HTML&gt;</span></code><br />
<code><span style="font-family: Tahoma;"> </span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">رجیستر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">سازی تصویر به این معنی  است که موقعی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> session </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">خراب شده  است، کاربر عکس</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">را</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">انتخاب و به نام متغیر آن  به چسباند . همه اطلاعات</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> session </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">باید همزمان  با شروع</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> HTML </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">شروع به  رفتن کند . حال کد زیر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> :</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"></p>
<p><code><span style="font-family: Tahoma;"> &lt;CENTER&gt;</span></code><br />
<code><span style="font-family: Tahoma;"> </span></code><br />
<code><span style="font-family: Tahoma;"> &lt;IMG SRC=\"</span></code></span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">&lt;?</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">echo </span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">$image</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">;</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">?&gt;</span></code><code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr">\"&gt;</span></code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> &lt;/CENTER&gt;</span></code><br />
<code><span style="font-family: Tahoma;"> &lt;form action=\"sendcard.php\"  method=GET&gt;</span></code><br />
<code><span style="font-family: Tahoma;">Your  Name:</span></code><br />
<code><span style="font-family: Tahoma;"> &lt;input  type=text name=s_name size=25 maxlength=50&gt;</span></code><br />
<code><span style="font-family: Tahoma;"> </span></code></span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">&lt;?escapeshellcmd</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">(</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">$s_name</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">);</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">?&gt;</span></code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr"><br />
</span><code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"> &lt;p&gt;</span></code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> Your Email Address: </span></code><br />
<code><span style="font-family: Tahoma;"> &lt;input type=text name=s_email size=25  maxlength=50&gt;</span></code></span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">&lt;?escapeshellcmd</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">(</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">$s_email</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">);</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">?&gt;</span></code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr"><br />
</span><code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"> &lt;p&gt;</span></code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> Receiver's Name: &lt;input type=text name=r_name  size=25 maxlength=50&gt;</span></code><br />
<code><span style="font-family: Tahoma;"> </span></code></span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">&lt;?escapeshellcmd</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">(</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">$r_name</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">);</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">?&gt;</span></code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr"><br />
</span><code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"> &lt;p&gt;</span></code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> Receiver's Email Address: &lt;input type=text  name=r_email size=25 maxlength=50&gt;</span></code><br />
<code><span style="font-family: Tahoma;"> </span></code></span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">&lt;?escapeshellcmd</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">(</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">$r_email</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">);</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">?&gt;</span></code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr"><br />
</span><code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"> &lt;p&gt;</span></code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> Your Personal  Message:&lt;BR&gt;</span></code><br />
<code><span style="font-family: Tahoma;"> &lt;TEXTAREA name=message cols=50 rows=5  wrap&gt;&lt;/TEXTAREA&gt;</span></code><br />
<code><span style="font-family: Tahoma;"> </span></code></span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">&lt;?escapeshellcmd</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">(</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">$message</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">);</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">?&gt;</span></code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr"><br />
</span><code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"> &lt;P&gt;</span></code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;">&lt;input type=submit value=\"Send my  card!\"&gt;</span></code><br />
<code><span style="font-family: Tahoma;"> &lt;input  type=reset value=\"Clear it\"&gt;</span></code><br />
<code><span style="font-family: Tahoma;"> &lt;/form&gt;</span></code><br />
<code><span style="font-family: Tahoma;"> </span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اگر شما بدانید که</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">چگونه از فرم ها استفاده  کنید در اغلب مواقع ضروری بیشتر باید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">از آن  استفاده</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کنید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> .<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">در اینجا یکی از خصیصه های  امنیتی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> Escapeshellcmd( ) </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اینست که کاربران</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بدجنس نمی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">توانند دستورات</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> mysql </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">را وارد فیلد ها بکنند و از آن طریق  اطلاعات</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">شما را  بگیرند</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
.</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اگر  شما همه جزئیات آن را بخواهید ، می توانید در راهنمای دستی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">آن نگاه کنید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> .<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">در ادامه من در یک جا به این مسأله  برخورد کردم که اگر کاربر یک</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">تصویر را  انتخاب</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کند و  در آن موقع به ذهنش برسد که باید برگردد و</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> his/her/its </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">را تغییر داده باید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">چکار کند زیرا که تصویر یک متغیر  رجیستر شده است و در تصویر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اول هیچ موضوعی  نمانده</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">که  انتخاب نشده باشد . با این وجود خوشبختانه این حالت</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">نیز آسان می باشد و در  بالای</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">صفحه</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> index.php </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">من به راحتی کد زیر را اضافه  کردم</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> :</span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
</span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">&lt;?</span></code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> session_start</span></code></span><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">();</span></code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> </span></code></span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">session_destroy</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">();</span></code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> </span></code></span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">?&gt;</span></code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr"><br />
</span><code><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"> </span></code><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></p>
<p></span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">و سپس به یاد  می</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">آورد که قبل از هر کاری  از</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> HTML </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">آن را وارد  کند و حالا کارت را</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">می  فرستد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> .<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">قدم  اول این بود که یک جدول درون</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> mysql </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ایجاد کنید  ، شما می توانید خودآموز</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">های</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بیشتر را از روی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> devshed </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">پیدا کنید .برای گرفتن  یک</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> ID </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">منحصر به  فرد برای هر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کارت</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">من از یک تابع استفاده کردم ( که  دوباره هر کدام قبل از</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> HTML </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">می روند )  و</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">آن را</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">به صورت</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> session_destory( ) </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">ذکر کردم تا نتواند ظاهر شود  و</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> ID </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">خودش  را</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">خراب کند</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
. </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">به همین دلیل اطلاعات در  داخل</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> session </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">هستند اگر  شما کتاب</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> Core php  programming<br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">را که منبع اصلی من نیز می باشد را  داشته باشید این تابع را خواهید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">شناخت</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> .</span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
</span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">&lt;?php</span></code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> session_start</span></code></span><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">();</span></code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> function </span></code></span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">CreateID</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">(</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">$length</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">=</span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">16</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">){</span></code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> </span></code></span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">$Pool </span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">= </span></code><code><span style="font-size: 10pt; color: #dd0000; font-family: Tahoma;" dir="ltr">"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";</span></code><span style="font-size: 10pt; color: #dd0000; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> $Pool .=  \"1234567890floppydogs\";</span></code><br />
<code><span style="font-family: Tahoma;"> for($index = 0; $index &lt; $length;  $index++){</span></code><br />
<code><span style="font-family: Tahoma;"> $sid .=  substr($Pool,(rand()%(strlen($Pool))), 1);</span></code><br />
<code><span style="font-family: Tahoma;"> }</span></code><br />
<code><span style="font-family: Tahoma;"> return($sid);</span></code><br />
<code><span style="font-family: Tahoma;"> }</span></code><br />
<code><span style="font-family: Tahoma;"> $sid=CreateID();</span></code><br />
<code><span style="font-family: Tahoma;"> ?&gt;</span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></p>
<p></span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">اساسا</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">این تابع یک مجموعه طبقه  بندی شده از ۱۶ کاراکتر را تولید می کند که از</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کاراکتر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">های انتخابی من ساخته شده  است مشروط بر اینکه درون</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> $Pool </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">باشد .حال  هر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">چیزی  می</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">خواهید وارد  جدول</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> mysql </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بکنید و  ترتیب نگهداری متغیر هایتان را به یاد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">داشته</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">باشید . اگر در آنجا یک  عنصر با همان</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> ID </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">وجود داشته  باشد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> mysql </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بصورت  اتوماتیک</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">در  صورتی که اجرا شود یک خطا برمی گرداند که در مورد ( نتیجه !) است و یک</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> ID </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">جدید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">می سازد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> .</span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
</span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">&lt;?</span></code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;">$result </span></code></span><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">= </span></code><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">mysql_query</span></code><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">(</span></code><code><span style="font-size: 10pt; color: #dd0000; font-family: Tahoma;" dir="ltr">"INSERT  INTO ecards VALUES('$sid', '$s_name', '$s_email','$r_name', </span></code><span style="font-size: 10pt; color: #dd0000; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> '$r_email','$message',  '$image')\");</span></code><br />
<code><span style="font-family: Tahoma;"> if(!$result){</span></code><br />
<code><span style="font-family: Tahoma;"> $sid=CreateID();</span></code><br />
<code><span style="font-family: Tahoma;"> $result = mysql_query(\"INSERT INTO ecards  VALUES('$sid', '$s_name', '$s_email','$r_name', </span></code><br />
<code><span style="font-family: Tahoma;"> '$r_email','$message',  '$image')\");</span></code><br />
<code><span style="font-family: Tahoma;"> }</span></code><br />
<code><span style="font-family: Tahoma;">?&gt;</span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">حال با پست</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کردن موفقیت آمیز یک پیام  با عنوان</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> him/her/its </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">گیرنده می  فهمد که</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
he/she/it </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">یک</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> e_card </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">دارد  ! و در پایان نمی تواند</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> session </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">را خراب کند  همچنین کاربر</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">می  تواند</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">در صورتی که</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> he/she/it </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">بخواهد برود و کارتی دیگر  بسازد</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> .</span></p>
<p class="MsoNormal" style="margin: 0in 0in 12pt; direction: rtl; unicode-bidi: embed; text-align: left;" dir="rtl" align="right"><span style="font-size: 10pt; color: black; font-family: Tahoma;" dir="ltr"><br />
</span><code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr">&lt;?php</span></code><span style="font-size: 10pt; color: #0000bb; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> $mailTo </span></code></span><code><span style="font-size: 10pt; color: #007700; font-family: Tahoma;" dir="ltr">= </span></code><code><span style="font-size: 10pt; color: #dd0000; font-family: Tahoma;" dir="ltr">"$r_email\";</span></code><span style="font-size: 10pt; color: #dd0000; font-family: Tahoma;" dir="ltr"><br />
<code><span style="font-family: Tahoma;"> $mailSubject = \"You Have A  FloppyDog!\";</span></code><br />
<code><span style="font-family: Tahoma;"> $mailHeader = \"From:  $s_name\";</span></code><br />
<code><span style="font-family: Tahoma;"> $message =  \"You lucky person, you! Someone has thought of you in a warm </span></code><br />
<code><span style="font-family: Tahoma;"> and fuzzy way and  sent you a floppydog studios (TM) e-card! You can view this </span></code><br />
<code><span style="font-family: Tahoma;"> card at the  following webpage: \";</span></code><br />
<code><span style="font-family: Tahoma;"> $message .=  \"http://www.floppydogs.com/ecards/viewcard.php?ID=\";</span></code><br />
<code><span style="font-family: Tahoma;"> $message .= $sid;</span></code><br />
<code><span style="font-family: Tahoma;"> mail($mailTo, $mailSubject, $message,  $mailHeader);</span></code><br />
<code><span style="font-family: Tahoma;"> session_destroy();</span></code><br />
<code><span style="font-family: Tahoma;"> ?&gt; </span></code></span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"></span></p>
<p class="MsoNormal" style="margin: 0in 0in 0pt; direction: rtl; unicode-bidi: embed; text-align: right;" dir="rtl"><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">این هم از این . لحظات خوشی  با</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> e_card </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">سازی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">داشته باشید .اگر شما  بخواهد همه این</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کارها  را ببینید می توانید مقداری از</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">کارتهای  الکترونیکی را موقعیکه همه آنها روی</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"><br />
</span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">هم  گذاشته شد از طریق</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr"> floppydogs.com </span><span style="font-size: 10pt; font-family: Tahoma;" lang="AR-SA">برای دوستانتان بفرستید</span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr" lang="AR-SA"> </span><span style="font-size: 10pt; font-family: Tahoma;" dir="ltr">.</p>
<p></span></p>
<p></span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/electronicscardphpmysql8711101358-1334/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>نمایش متن بصورت تصویری در اینترنت</title>
		<link>http://www.irandevelopers.com/programming/showpictureinternet8711101357-1332/</link>
		<comments>http://www.irandevelopers.com/programming/showpictureinternet8711101357-1332/#comments</comments>
		<pubDate>Thu, 29 Jan 2009 10:27:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[برنامه نویسی]]></category>

		<guid isPermaLink="false">http://www.irandevelopers.com/?p=1332</guid>
		<description><![CDATA[&#60; ?php function strimage($str){ header ("Content-type: image/png"); $font = 4; $width = ImageFontWidth($font) * strlen($str); $height = ImageFontHeight($font); $im = @ImageCreate ($width,$height); $background_color = ImageColorAllocate ($im, 150, 150, 150); //gray background $text_color = ImageColorAllocate ($im, 0, 0,0);//black text ImageString ($im, $font, 0, 0, $str, $text_color); ImagePNG ($im); } strimage("iranvig.com"); ?&#62; لازم هست بگم فقط در صورتی [...]]]></description>
			<content:encoded><![CDATA[<div class="txt"><span style="font-family: Tahoma;"></p>
<div class="codecolor"><code dir="ltr"><span style="font-size: x-small;">&lt;  ?php<br />
function strimage($str){<br />
header ("Content-type:  image/png");<br />
$font = 4;<br />
$width = ImageFontWidth($font) *  strlen($str);<br />
$height = ImageFontHeight($font);</p>
<p>$im =  @ImageCreate ($width,$height);<br />
$background_color = ImageColorAllocate  ($im, 150, 150, 150); //gray background<br />
$text_color = ImageColorAllocate  ($im, 0, 0,0);//black text<br />
ImageString ($im, $font, 0, 0, $str,  $text_color);<br />
ImagePNG  ($im);<br />
}<br />
strimage("iranvig.com");<br />
?&gt;</span></code></div>
<p align="justify"><span style="color: #ff6600; font-size: x-small;">لازم هست بگم فقط در صورتی این برنامه  کار میکنه که شما اونو بعنوان یه صفحه php توی یه سایت که php رو پشتیبانی میکنه  آپلود کند چون دستورات ساختن تصویر از متن توی کلاینت اجرا  نمیشه.</span></p>
<p></span></div>
]]></content:encoded>
			<wfw:commentRss>http://www.irandevelopers.com/programming/showpictureinternet8711101357-1332/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

