توانایی خود را افزایش دهیم

فرهنگ و هنر
توانایی خود را افزایش دهیم

بسم الله الرحمن الرحیم

با سلام

• لطفا مطالب سایت را به صورت منظم پیگیری کنید
• ارائه پیشنهادات و نظرات شما باعث بهبود کیفیت ارائه مطالب خواهد شد

بعضی از مطالب آموزشی سایت توسط اینجانب نوشته نشده و صرفا جهت مطالعه دوستان از منابع دیگری جمع آوری شده است
چنانچه در مطالب موضوعی ملاحظه شد که از نظر علمی ، اعتقادی ، سیاسی ، مذهبی و ... دارای مشکل بود حتما در قسمت نظرات ذکر بفرمایید تا اصلاح گردد.
با تشکر
موفق باشید

طبقه بندی موضوعی
آخرین نظرات

۲۸ مطلب با موضوع «درسنامه :: آموزش زبان برنامه نویسی Php» ثبت شده است

شنبه, ۵ مهر ۱۳۹۳، ۱۲:۳۵ ب.ظ

درس سیزدهم- عبارات منظم Regular Expression

مقدمه
در دو درس قبلی با چند نوع برای بررسی داده‌های ارسال شده توسط کاربران آشنا شدیم. یاد گرفتیم که باید همیشه این داده‌ها را بررسی کرد و بدون بررسی دقیق آنها اجازه وارد شدن به پایگاه صادر نکنیم. در این درس با مبحث تازه‌ای به نام عبارت منظم آشنا می‌شویم.

 

عبارات منظم
عبارات منظم یک تکنیک است که توسط آن می‌شود یک متن را بر اساس الگوی دلخواه بررسی کرد. شیوه کار آن این است که ما ابتدا یک الگو تعریف می‌کنیم و بعد داده‌ها را بر اساس آن الگو ارزیابی می‌کنیم. یعنی با توجه به الگوی تعریف شده٬ ماهیت داده‌ را جستجو کرده و اگر همخوانی داشت مهر تایید به آن می‌زنیم. به زبان ساده‌تر می‌شود٬ جستجوی یک متن برای اینکه ببینیم آیا با الگوی تعریف شده ما می‌خواند یا نه؟ اجازه بدهید با یک مثال این مقوله را بهتر بیان کنیم. فرض کنید که می‌خواهید ببینید که آیا درون کلمات ورودی حرف b وجود دارد یا نه. برای این کار یک الگو می‌سازیم که کلمه‌های ورودی را با الگوی ما مقایسه کند و در صورت برابری (وجود b در متن مورد نظر) خروجی «۱» به معنی مثبت بدهد.

ساخت یک عبارت منظم٬ ساختار منحصر به فرد خود را دارد٬ این یعنی باید از یک ‌سری قوانین مشخص پیروی کنیم. اما پیاده سازی عبارت منظم در پی‌اچ‌پی توسط توابعی صورت می‌گیرد. تابعی که ما از آ> بیشتر استفاده می‌کنیم تابعpreg_matvh()  است.

Preg_match ( الگو ,  داده  ) ;

Preg_match ( ‘/b/’ , ‘babak’ );

 همانطور که در مثال بالا گفته شد٬ یک عبارت منظم نوشته شده است تا وجود حرف b را در مقادیر وارد شده بررسی کند (که در اینجا  ‘babak’ است).

الگویی که برای بررسی می‌سازیم باید در بین علامت نقل قول قرار گیرد یا همان " " خودمان. ابتدایی‌ترین و آخرین حرف این الگو هم نشانه آغاز و پایان بارت هستند که به آنها نشانه می‌گوییم. این نشانه می‌تواند هر کاراکتری باشد٬ اما باید کاراکتری باشد که شما در داخل عبارت استفاده نمی‌کنید. یعنی اگر قرار است در داخل مقدار ورودی دنبال علامت سوال ؟ بگردید٬ نباید از این علامت برای آغاز و پایان الگو استفاده کنید. در مثال بالا ما از / استفاده کردیم٬ می‌توان از کاراکتر‌هایی مثل ! یا |  هم استفاده کرد. باز این بستگی به کاربرد الگو دارد.

 

قسمت‌های تشکیل دهنده الگو در عبارات منظم

- نشانه یا آغاز و پایان الگو  Delimiter
همانطور که قبلا هم گفتیم باید از یک کاراکتر یکسان (یکی در آغاز و یکی در پایان) برای مشخص کردن شروع و پایان الگو استفاده کنیم. کاراکترهایی مانند/, |, ?  یا #  بسته به اینکه اگر در داخل متن ورودی دنبال آنها نگردیم٬ انتخاب خوبی هستند.

- لفظ‌ها  Literal
لفظ‌ها در اصل همان حروف یا کاراکترهایی هستند که ما در داخل متن دنبال آنها هستیم٬ بطور مثال اگر می‌خواهید وجودasd  را داخل متنی جستجو کنید٬asd  همان لفظ شما است.

- کاراکترهای ویژه  Metacharacter
کاراکترهای ویژه٬ کاراکترهایی هستند که ما در داخل متن در جستجوی آنها نیستیم و آنها برای ما معنی ویژه‌ای دارند٬ بطور مثال علامت ^ یا. یا علامت‌های ( ) از این کاراکترهای ویژه هستند. مثلن علامت "." با هر کاراکتری برابری می‌کند. وقتی در الگو از "." استفاده می‌کنیم٬ این یعنی در جای "." هر کاراکتری می‌تواند باشد٬a  یا c  ـ  یا هر کاراکتر دیگر. علامت ^ هم یعنی آغاز الگوی متنی ما. بطور مثال^a  یعنی هر متنی که باa  آغاز شود. در زیر فهرستی از چند کاراکترهای ویژه با معنی آنها می‌آوریم:

^: آغاز رشته مورد نظر را بیان می‌کند که در الگو استفاده می‌شود.

$: پایان رشته مورد استفاده در الگو

. : هر کاراکتر تنهایی

| : انتخاب بین دو واژه٬ بطور مثال  a | S یعنی یا  a یا  s

[]: این دو کاراکتر آغاز و پایان یک مجموعه یا لیست از موارد مورد استفاده در الگو را بیان می‌کنند٬ که به آن کلاس می‌گوییم.

؟ : معنی صفر یا یک کاراکتر را می‌دهد.

* : معنی صفر کاراکتر یا بیشتر

+: یک کاراکتر یا بیشتر

{}: شروع و پایان یک محدوده برای جستجو را تعیین می‌کنند. مثلا{x,y}  یعنی که ازx  تا  y را جستجو کن. فرض کنید که می‌خواهیم از a   d را جستجو کنیم٬ پس می‌شود.  {a , d } .

 

۲ نظر موافقین ۰ مخالفین ۰ ۰۵ مهر ۹۳ ، ۱۲:۳۵
سه شنبه, ۱ مهر ۱۳۹۳، ۰۳:۰۶ ب.ظ

درس دوازدهم- موارد بیشتری از امنیت تارنما

مقدمه
در درس پیشین مواردی از رعایت امنیت در ساخت تارنما را معرفی کردیم. در این درس به چند مورد مهم دیگر می پردازیم.

 

ارزیابی فایل‌ها با توجه به نوع آنها
در درس ارسال فایل (عکس) یاد گرفتیم که چطور یک فایل را به سیستم ارسال کرده و از آن استفاده کنیم. نکته ای که در این بحث مورد توجه است٬ این است که این ارسال امکان نفوذ به سیستم را از طریق فایل فراهم می‌کند. البته برای ارسال فایل ما از فیلتری برای بررسی نوع فایل استفاده کردیم که آن به شکل گرفتن نوع فایل از متغیر: $_FILES['upload']['type'] نمایان شد.

این نوع بررسی نوع فایل توسط مرورگر فراهم می‌شود که به نوعMIME  فایل رجوع می‌کند. علی رغم اینکه این بررسی کار مناسبی است٬ اما هنوز راه های نفوذ وجود دارند٬ بر همین اساس به راه‌های دیگر که پی‌اچ‌پی فراهم کرده اشاره می‌کنیم.

شیوه‌ای که در پی‌اچ‌پی نسخه ۵.۳ به بعد اضافه شده است به این شکل است: یک ظرفی برای شناسایی نوع فایل وجود دارد که نوع فایل و کدگذاری آن را بر اساس جستجوی اعداد جادویی در داخل محتوای فایل نمایان می‌کند. به این معنی که اطلاعاتی که فایلی را تشکیل می‌دهند٬ بر اساس نوع فایل با اعداد یا کاراکتر‌های ویژه آن فایل آغاز می‌شوند. بطور مثال فایل‌هایGIF  (نوعی فایل برای عکس)٬ باید با کاراکتر و کد اسکی (ASCII) مشخصGIF89a  یا GIF87a  آغاز شوند٬ و یا فایل‌هایPDF  باید با کد %PDF آغاز شوند. این کدها همانطور که گفته شد باید در ابتدای داده‌های سازنده آن فایل آورده شوند.

برای بکارگیری این تکنیک باید ابتدا یک ارجاع دهنده برای فایل بسازیم:

$fileinfo = finfo_open(FILEINF_MIME_TYPE);

این ارجاع دهنده در اصل مرجعی برای دست‌یابی به اطلاعات فایل بر اساس نوع داده شده است (در داخل پرانتز).

۰ نظر موافقین ۱ مخالفین ۰ ۰۱ مهر ۹۳ ، ۱۵:۰۶
پنجشنبه, ۲۷ شهریور ۱۳۹۳، ۰۳:۴۶ ب.ظ

درس یازدهم- امنیت تارنما از نگاه پی‌اچ‌پی

مقدمه
تا به این درس تکنیک‌های زیادی از پی‌اچ‌پی یاد گرفتیم که براحتی توسط آنها می‌توانیم یک تارنما با قابلیت پذیرش کاربر بنا کنیم. یکی از نکات مهمی که بحثی از آن در طول دوره نشده است٬ امنیت سیستم ساخته شده است. در این درس به توانمندی سیستم از نظر امنیتی می‌پردازیم٬ چرا که هر چقدر سیستم شما خوب کار کند٬ اگر امنیت لازم را فراهم نکرده باشید٬ براحتی قابل شکستن خواهد بود.

نکته بسیار مهم: در این دوره آموزشی٬ ما بحث امنیت را به عنوان یک یا چند درس بطور مجزا شرح می‌دهیم و تا قبل از این درس‌ها برای ساده‌تر کردن آموزش، نکته‌های امنیتی را برای درس‌های آخر گذاشتیم. حال ما بر آنیم که بحث امنیت را آغاز کنیم و به سراغ کد‌هایمان می‌رویم تا از نظر امنیتی آنها را مسلح کنیم. برای شما در زمان ساخت یک تارنما٬ به این شکل عمل کردن یک اشتباه محض است٬ یعنی نباید ابتدا تارنما را ساخته و بعد به فکر امن کردن آن باشید. کار امنیت برای تارنما باید از همان ابتدا در ذهن و کدهای شما بیاید. یعنی با توسعه هر قسمت٬ هم زمان آن بخش را هم از نظر امنیتی تجهیز کنید.

 

امنیت تارنما
برای شرح هر چه بیشتر این درس ما بحث امنیت را به بخش‌های مجزا تقسیم می‌کنیم و بعد بر اساس هر بخش نکات امنیتی آن را بررسی می‌کنیم.

غیر فعال کردن  phpinfo()
همانطور که می‌دانید این تابع مشخصات کاملی از پی‌اچ‌پی نصب شده در سرور را به ما می‌دهد که در زمان توسعه بسیار مفید است٬ اما بعد از کامل کردن سیستم باید این تابع از کار بیافتد. البته اگر شما سرور خود را داشته باشید و یا در حالت «محلی» تارنمای خود را توسعه داده‌اید٬ شما توانایی از کار انداختن این تابع را دارید. در غیر اینصورت با مدیر سرور تماس بگیرید. به احتمال زیاد این تابع قبلا از کار افتاده اما کار از محکم کاری عیب نمی‌کند. این تابع در فایل php.ini  قرار دارد٬ پس در صورت دسترس به این فایل رفته و با جستجوی عبارت disable_functions  با کمکctrl + F  مقدار روبروی این عبارت را با نام تابع پر کنید.

disable_functions = phpinfo

۰ نظر موافقین ۰ مخالفین ۰ ۲۷ شهریور ۹۳ ، ۱۵:۴۶
چهارشنبه, ۲۶ شهریور ۱۳۹۳، ۰۴:۱۹ ب.ظ

درس دهم- نمایش فایل و استفاده از جاوا اسکریپت

مقدمه
در درس قبلی یاد گرفتیم که چطور فایل (عکس) را به سیستم خود انتقال دهیم. در این درس می‌خواهیم از این عکس‌ها برای نمایش در تارنما استفاده کنیم و این نمایش را در قالب یک برگه جدید بنام نمایه (پروفایل) تجربه می‌کنیم. در ادامه به ساختن برگه‌ای دیگر می‌پردازیم که فهرستی از عکس‌های ارسال شده٬ بشکل آلبومی ساده ارائه می‌کند.

 

نمایه  profile.php
در پوشه خود فایلی با نام profile.php بسازید و کد‌های زیر را در آن قرار دهید:

<?php

session_start();

if(isset($_SESSION['first_name']))

{               $name = $_SESSION['first_name'];

                 $page_title = ' نمایه ' . $name;

}else{

$page_title = ' نمایه ' ;

}

include ('includes/header.html');

?>

<?php

if(isset($_POST['id']) && is_numeric($_POST['id'])){

                $id = $_POST['id'];

}

elseif(isset($_GET['id']) && is_numeric($_GET['id']))

{

                $id = $_GET['id'];

}else{

                echo 'دسترسی به این برگه برای شما مقدور نیست!';

                //header('LOCATION: index.php');

                header('REFRESH: 3; URL= index.php');

}

require_once('db_connection.php');

$query = "SELECT * FROM users WHERE id='$id'";

$result = mysqli_query($dbc, $query);

if(mysqli_num_rows($result) == 1)

{

$row = mysqli_fetch_array($result, MYSQLI_ASSOC) ;

?>

<div id="profile">

<div id="image">

<?php

if($row['image']){

                echo '<img src="uploads/'. $row['image'] . '" width="180" height="180"/>';

}?>

</div>

<div id="user-info">

<ul>

<li><span>نام  </span><h3><?php echo $row['first_name']; ?></h3></li>

<li><span>نام خانوادگی   </span><h3><?php echo $row['last_name']; ?></h3></li>

<li><span> شناسه کاربری   </span><h3><?php echo $row['username']; ?></h3></li>

<li><span> رایانامه  </span><h3><?php echo $row['email']; ?></h3></li>

</ul>

</div>

</div>

<?php}?>

<?php include ('includes/footer.html'); ?>

همانطور که مشاهده می‌کنید٬ این برگه را با تابعsession_start()  آغاز کردیم٬ چرا که می‌خواهیم از مقادیر داخل سشن استفاده کنیم. از آنجا که این برگه برای هر کاربر داده‌های مربوط به آن کاربر را نمایش می‌دهد٬ می‌خواهیم نام برگه را هم در صورت وجود به نام کاربر در کنار عبارت «نمایه» اضافه کنیم.

۰ نظر موافقین ۰ مخالفین ۰ ۲۶ شهریور ۹۳ ، ۱۶:۱۹
شنبه, ۲۲ شهریور ۱۳۹۳، ۰۲:۴۲ ب.ظ

درس نهم- ارسال فایل (عکس)

مقدمه
در دو درس قبل با چگونگی شناسایی کاربران ثبت نام کرده در سیستم آشنا شدیم. در این درس می‌خواهیم با معرفی تکنیک تازه ای –ارسال عکس به سیستم- به کاربر اجازه ارسال تصویر خود به سیستم را بدهیم.

 

ارسال فایل
همانند دیگر داده‌های ارسالی به سیستم ابتدا باید یک کادر برای ارسال فایل ایجاد کرد٬ اما نوع برخورد پی‌اچ‌پی با کادر ارسال فایل کمی با دیگر کادر‌ها متفاوت است. رند کلی ارسال فایل به این ترتیب است که ابتدا فایل ارسالی به یک پوشه موقتی فرستاده می‌شود و بعد از آنجا به پوشه دیگری انتقال می‌یابد.

کادر ارسال فایل

<input type="file"   name="upload” />

برای ساختن کادر فایل مانند دیگر کادرها عمل می‌کنیم٬ با این تفاوت که در داخل صفت در خواست کننه نوع فایل از کلمه "file"  استفاده می‌کنیم.

نکته: برای داشتن قابلیت ارسال فایل٬ باید یک تغییر کوچک هم در برچسب فورم بدهیم و آن اضافه کردن یک صفت تازه است. به برچسب فرم زیر دقت فرمایید:

<form  enctype="multipart/form-data"  action="upload_image.php"  method="post" >

همانطور که مشاهده می‌کنید٬ صفت enctype="multipart/form-data" به صفت‌های فرم اضافه شده است. این صفت به فرم قابلیت پذیرش فایل را اضافه می‌کند.

رفتار کادر ارسال فایل
در زمان ارسال فایل بر خلاف ارسال دیگر داده‌ها که مقدار داده را در متغییر آرایه‌ای $_POST قرار می‌دادند٬ کادر فایل مقدار را در متغییر آرایه‌ای $_FILES همراه صفت‌هایی پیش فرض قرار می‌دهد. "$_FILES[][]" یک آرایه دو بعدی است و در زمان ساخت آن ویژگی‌های متعددی از فایل مورد نظر را در خود حفظ می‌کند. بطور مثال ویژگی‌های: نوع فایل٬ نام موقتی فایل٬ اندازه فایل و نام اصلی فایل را در خورد نگهداری می‌کند که ما می‌توانیم با صفت‌هایی به همه آنها دسترسی داشته باشیم. نگهداری این مقادیر به شیوه زیر است:

$_FILES [‘نام کادر ارسال فایل’] [‘نام ویژگی’]

برای استفاده از قابلیت ارسال فایل پی‌اچ‌پی٬ باید یکسری مقدمات فراهم باشد:
۱. تنظیمات ابتدایی پی‌اچ‌پی (این تنظیمات توسط مدیر سرور انجام می‌شود٬ تنظیماتی مانند: فعال کردن ارسال فایل٬ محل موقتی نگهداری فایل‌ها٬ مشخص کردن میزان حجم فایل‌های ارسالی) در فایل php.ini. در صورت ساخت تارنما در حالت «محلی» شما به این فایل دسترسی دارید.

۲. وجود محل موقتی برای نگهداری فایل‌ها و تعیین سطح دسترسی به آن

۳. وجود محل پایانی و همیشگی برای نگهداری و تعیین سطح دسترسی به فایل‌ها

همانطور که قبلا هم گفته شده شما با استفاده از تابعphpinfo()  می‌توانید جزییات این تنظیمات را مشاهده کنید. بطور مثال تنظیمات باید چیزی مانند زیر باشند:

File_uplaods: on

upload_max_filesize: 2(پیش فرض)

post_max_size:

upload_tmp_dir:

البته در حالت نصب پی‌اچ‌پی با بستهWamp  یا  Xammpبه نظر این مقادیر به طور پیش فرض تنظیم هستند. در حالت روی خط هم می‌توانید در صورت عدم دسترسی به فایل php.ini از مدیر سرور٬ سرویس دهنده میزبانی کمک بخواهید.

حال برای آشنایی بیشتر با طرز کار این قسمت به ساخت برگه برای ارسال فایل اقدام می‌کنیم.

ابتدا قبل از هر کاری باید یک خانه به خانه‌های پایگاه داده‌ها و در داخل جدول کاربران اضافه کنیم. این خانه٬ نگهداری کننده نام فایل ارسالی هر کاربر برای او است.

۱ نظر موافقین ۰ مخالفین ۰ ۲۲ شهریور ۹۳ ، ۱۴:۴۲
چهارشنبه, ۱۹ شهریور ۱۳۹۳، ۰۶:۰۰ ب.ظ

درس هشتم- سشن (Session) و سرایند اچ‌تی‌تی‌پی HTTP Header

مقدمه
در درس قبل به فن استفاده از کوکی پرداختیم و یاد گرفتیم که چطور از کوکی‌ها برای ردیابی و شناسایی کاربران در تارنمایمان بهره بریم٬ اینکه چطور داده‌های مربوط به مشخصات کاربر را در همه برگه‌ها در دسترس داشته باشیم و با توجه به آن داده‌ها سرویس مشخصی را ارایه کنیم. در این درس در دنباله بحث ردیابی کاربران به معرفی تکنیک دیگری در این زمینه با نام «سشن» می پردازیم.

 

سشن
سشن نوع دیگری از ابزار در بکار گرفتن داده‌های کاربر در همه برگه‌ها (در کل تارنما) به منظور ردیابی آنها است. سشن‌ها داده‌ها را در سرور ذخیره می‌کنند و بعد یک شناساینده سشن٬ به شکل کوکی در رایانه کاربر ثبت می‌کنند. این کوکی که به نام شناساینده «سشن» مربوطه در رایانه کاربر ذخیره می‌شود٬ در اصل راهنمای یافتن محل سشن در سرور می‌شود. بعد از ثبت داده‌ها٬ می‌توان از آنها بصورت متغییر‌های سشن بهره برد٬ که این متغییر‌ها را تمام برگه‌ها قابل دسترسی هستند.

 

سشن یا کوکی
همانطور که در درس قبل گفتیم کوکی‌ها داده‌های مربوط به کاربر را در خود رایانه کاربر ثبت می‌کنند و در زمان نیاز به آنها مراجعه می‌کنند٬ در صورتی که سشن‌ها این داده‌ها را در سرور سرویس دهنده ثبت می‌کنند٬ و یک کوکی هم به عنوان مکان یاب در رایانه کاربر. اما دلایل استفاده از سشن‌ها را می‌توان در سه بخش به شرح زیر آورد:

۱. امنیت سشن‌ها به دلیل ثبت‌ آنها در سرور بالاتر است٬ زیرا سشن‌ها در مسیر کاربر و سرور در حال تردد نیستند و این احتمال دزدیده شدن آنها را کمتر می‌کند.

۲. سشن‌ها توانایی حمل داده‌های بیشتری را دارند.

۳. از آنجا که بعضی از کاربران ثبت کوکی‌ها در رایانه‌هایشان را مسدود می‌کنند٬ سشن‌ها بدون مشکل در این شرایط کار می‌کنند.

نکته: سشن‌ها بدون استفاده از کوکی راهنما هم قابل استفاده هستند.

 

استفاده از سشن با تابع session_start()
یک نکته ابتدایی و بسیار مهم در استفاده کردن از سشن‌ها٬ قرار دادن تابعsession_start()  در ابتدایی‌ترین (بالاترین) محل برگه‌ای است که می‌خواهد از سشن استفاده کنید. این تابع  پی‌اچ‌پی می‌گوید که از سشن از قبل درست شده استفاده کند و یا اینکه یک سشن تازه بسازد. فراموش نکنید که این تابع بخاطر خواندن کوکی راهنما باید قبل از هر چیز دیگر فراخوانی شود٬ یعنی قبل از این تابع هیچ داده‌ای به مرورگر فرستاده نشود. منظور از فرستاده نشدن داده به مرورگر در اصل داده‌ای است که برای مرورگر فرستاده‌ می‌شود تا چاپ و یا ... شود. پس محل این تابع باید قبل از سرایند فایل اچ‌تی‌‌ام‌ال شما باشد.

وقتی این تابع برای نخستین بار اجرا می‌شود٬ یک کوکی با نام پیش فرض PHPSESSID می‌فرستد. بعد از اینکه سشن آغاز شد می‌توان مقادیر را به متغییر‌های آنها سپرد البته به روش زیر:

$_SESSION ['key'] = value;

$_SESSION ['name'] = 'پیمان';

$_SESSION ['id'] = 3;

در اینجا برای بکاربردن و روشن‌تر کردن این بحث٬ به سراغ تارنمای از پیش ساخته خود رفته و به جای کوکی‌ها از سشن‌ها استفاده می‌کنیم٬ یعنی جای کوکی‌ها را با سشن‌ها تعویض می‌کنیم.

https://www.darsnameh.com/images/phpin/07/1.png

۰ نظر موافقین ۰ مخالفین ۰ ۱۹ شهریور ۹۳ ، ۱۸:۰۰
دوشنبه, ۱۷ شهریور ۱۳۹۳، ۰۶:۵۹ ب.ظ

درس هفتم- کوکی‌ها (Cookie) و ورود به سیستم (Login)

مقدمه
در این درس به معرفی یک تکنیک تازه‌ بنام کوکی می‌پردازیم. حتما در تارنما‌های بسیاری دیده‌اید که سیستم‌ها با ثبت‌نام و ورود، ابتدا شما را شناسایی کرده و بعد قابلیت‌هایی را برای شما فراهم می‌کنند. بطور مثال سیستم‌هایی مانند گوگل که به شما این قابلیت را می‌دهند که بعد از ثبت نام در آنها وارد شده و از توانایی فرستادن و گرفتن رایانامه بهره ببرید. در اصل یکسری از داده ها که مربوط به کاربر وارد شده به سیستم است توسط کوکی‌ها در تمام صفحه‌های تارنما قابل دسترسی می‌شوند و بعد با توجه به این داده‌ها سرویس مورد نظر به کاربر وارد شده ارایه می‌گردد. اما این قابلیت بطور پیش‌فرض در پروتکل اچ‌تی‌تی‌پی وجود ندارد٬ پس هر سند اچ‌تی‌تی‌پی یا صفحه تارنما که مشاهده می‌کنید فاقد این توانایی است. برای ردیابی و شناختن کاربران می‌باید از زبان‌های دیگر مانند پی‌اچ‌پی در قالب اچ‌تی‌تی‌پی استفاده کرد. پی‌اچ‌پی این امکان را فراهم می‌کند تا شناسایی و ردیابی کاربران برای سیستم قابل اجرا گردد. ابزارهای پی‌اچ‌پی برای این کار کوکی و سشن (Session که در درس بعدی به آن می‌پردازیم) هستند٬ در این درس به یادگیری کوکی می‌پردازیم.

 

کوکی
کوکی ابزاری است که سیستم سرویس دهنده توسط زبان برنامه نویسی شده در آن٬ یکسری داده‌های مربوط به کاربران را در رایانه هر کاربر بصورت یک فایل ثبت می‌کند. از آن به بعد هر بار که کاربر به آن تارنما یا سیستمی که در آن ثبت نام کرده مراجعه می‌کند٬ سیستم داده‌های مربوط به آن کاربر را خوانده و از آن برای ردیابی و ارائه سرویس‌های ویژه‌ی آن کاربر استفاده می‌کند. برای اینکه  کوکی‌های ساخته شده در رایانه خود توسط هر سیستم را مشاهده کنید٬ کافی‌ست که به آدرس آن در مرورگر خود بروید. بطور مثال به نشانی‌های زیر در مرورگر فایرفاکس مراجعه کنید٬ تا کوکی‌های ثبت شده را ببینید:

Firefox: Tools / Options / Privacy / Show Cookies.

برای دیدن کوکی تارنمای ویژه‌ای کافی‌ست که نشانی آن تارنما را در قسمت جستجو (Search) بزنید٬ بطور مثال ما برای دیدن کوکی تارنمای خود که در مکان محلی یا همان  Localhost است٬ این کلمه را وارد می‌کنیم و کوکی مورد نظر آورده می‌شود. بعد از دست‌یابی به کوکی٬ می‌بینید که شما قادر به پاک کردن آن هستید. اگر کوکی تارنمایی را پاک کنید٬ آن تارنما در زمان ورود دوباره شما به سیستم٬ دوباره کوکی تازه‌ای می‌سازد.

برای استفاده از کوکی٬ قسمت ورود را به سیستم خود اضافه می‌کنیم. در طول این درس با اضافه کردن قسمت «ورود» کاربران قادر به ثبت نام (که در درس‌های قبلی انجام دادیم) و ورود به سیستم می‌شوند.

 

۰ نظر موافقین ۰ مخالفین ۰ ۱۷ شهریور ۹۳ ، ۱۸:۵۹

مقدمه
در مجموعه درسهای گذشته با مفاهیم لازم برای ساخت یک تارنمای ساده آشنا شده‌ایم و همچنین تکنیک‌های پیشرفته‌ای را آموختیم. اما هنوز مفاهیم بیشتری برای پوشش دادن وجود دارند که در طول دوره به آنها خواهیم پرداخت. در این درس به یکی دیگر از این تکنیک‌ها یعنی نحوه ارسال رایانامه می‌پردازیم.

 

فرستادن رایانامه
حتما تا به امروز کلمه «تماس با ما» را در تارنماهای بسیاری مشاهده کرده‌اید. این برگه به شما اجازه می‌دهد که به مدیر آن تارنما یک پیغام از طریق رایانامه بفرستید. فرستادن رایانامه در پی‌اچ‌پی بسیار ساده است و تنها با دانستن یک تابع و پارامتر‌هایش این مهم اجرا خواهد شد.

تابع فرستادن رایانامه

mail (to, subject, body, [header] ) ;

mail (، بدنه، موضوع، به[سرایند]);

نکته: پارامترها می‌توانند بصورت ایستا (متن) و یا بصورت یک متغیر باشند.

mail ($to, $subject, $body, [$header] ) ;

به یا to
به معنی گیرنده رایانامه است. در صورتی که از این تکنیک برای دریافت رایانامه‌های ارسالی کاربران خود استفاده می‌کنید، باید نشانی رایانامه‌ای که می‌خواهید پیام‌های کاربرانتان را دریافت کند در این قسمت قرار دهید.

موضوع یا subject: همین طور که از نام پیداست به معنی موضوع پیام ارسالی است.

بدنه یا :body متن پیام در این قسمت گذاشته  و ارسال می‌شود.

سرایند یا :header در زمان ارسال هر رایانامه‌ای، انتخاب‌هایی  و یا گزینه‌های دیگری مانند  FROM، (Carbon Copy) CC و یا (Blind Carbon Copy) BCC وجود دارند که همه آنها در قسمت سرایند قرار می‌گیرند. این قسمت یک پارامتر انتخابی اشت و لزوما برای ارسال رایانامه نیازی به آن نیست، اما بهتر است که FROM در رایانامه گنجانده شود. در مورد باقی گزینه‌ها هم، خب، انتخاب با شماست.

 

۰ نظر موافقین ۰ مخالفین ۰ ۱۷ شهریور ۹۳ ، ۱۸:۵۸
دوشنبه, ۱۷ شهریور ۱۳۹۳، ۰۶:۵۶ ب.ظ

درس چهارم- ایرادیابی

مقدمه
خطاها بخش بدون تفکیک و دوری ناپذیر در برنامه نویسی هستند. این مسئله برای همه افرادی که رو به برنامه نویسی می‌آورند مشترک است. البته هر چقدر تجربه ما در نوشتن کدها بالاتر می‌رود، احتمالا از تعداد خطاها و ایرادها در برنامه‌هایمان کاسته می‌شود. اما فراموش نکنید که این جزوی از ساخت سیستم است و نوشتن برنامه بدون ایراد تقریبا غیر ممکن است.  برای اینکه این ادعا را روشن‌تر بیان کنیم و بیشتر مورد قبول شما قرار گیرد، به تجربه خودتان در استفاده از برنامه‌ها و یا ابزارک‌های نوشته شده رجوع کنید. بدون شک در طول کار با برنامه‌های متعدد بارها و بارها به ایراد‌ها برخوردید، شاید کلمه Bug یا اشکال برایتان از  این جهت  آشنا به نظر آید. در این درس نگاهی به دلایل و یا موجبات اشکالها و اثرات آنها در تارنماها پرداخته و تکنیک‌هایی را برای یافتن و رفع آنها بررسی می‌کنیم.

 

انواع خطاها
در ابتدا باید ذکر کرد که عامل یا محل اشکال می‌تواند در هر قسمتی از تارنما باشد. بطور مثال در برچسب‌های اچ‌تی‌ام‌ال، پی‌اچ‌پی و یا اس‌کیو‌ ال. معمولا خطاهای اچ‌تی‌ام‌ال آسان‌ترین در ردیابی و رفع هستند، چراکه شما نتیجه خطا را در صفحه مرورگر می‌بینید و احتمالا خیلی راحت آن را برطرف می‌کنید.

 خطاهای پی‌اچ‌پی شاید بیشترین باشند چرا که این برنامه در اصل هسته اصلی تارنما را تشکیل می‌دهد. این خطاها به سه دسته عمومی زیر تقسیم می‌شوند:

Syntactical یا خطای دستوری: شاید بیشترین تعداد خطاها، ایرادهای دستوری در میان کد‌های شما باشند که براحتی هم قابل پیدا کردن و اشکال زدایی هستند. مثلا فراموش کردن علامت $ ویا ; که اجازه اجرای کد را نمی‌دهند و باید ابتدا آنها را درست کرد. البته مشاهده این خطاها وابسته به فعال بودن قسمت نمایش ایرادها در پیکربندی پی‌اچ‌پی شما است (در ادامه درس به این نکته هم پرداخته خواهد شد).

Run-time: این دسته خطاها برنامه را از اجرا باز نمی‌دارند، بلکه اجرای برنامه بطوریکه نوشته شده انجام نمی‌شود و ممکن است شما نتیجه متفاوت از آنچه نوشته‌اید دریافت کنید. مثلا فراخوانی تابعی با تعداد یا نوع پارامترهای نادرست. در این گروه اشکال‌ها پی‌اچ‌پی معمولا یک پیغام خطا می‌دهد که اشکال را بطور مشخص نشان می‌دهد.

Logical: این دسته اشکالها شاید بدترین آنها باشند چراکه لزوما گزارش یا خطایی از پی‌اچ‌پی اعلام نمی‌شود و برنامه مسیر عادی خود را طی می‌کند. این نوع خطاها معمولا مشخص نیستند و در اجرای برنامه هم تاثیری ندارند. پس پیدا کردنشان کمی سخت‌تر به نظر می‌آید.

خطاهای اس‌ کیو ال: خطاها در زبان پرس‌و‌جوی اس‌کیو ال بیشتر به شکل ایرادهای دستوری هستند و در طول اجرای پرس‌و‌جو انجام و نمایش داده می‌شوند. ایرادیابی در این منطقه هم سخت به نظر نمی‌آیند. مثلا اشتباه در نوشتن دستوری از نظر ترتیب یا استفاده غلط از کلمات پیش فرض.

از خطاهای واضح و تکراری، پیغام عدم دسترسی به پایگاه و یا سطح دسترسی است که در قسمت‌های آینده بیشتر از آنها صحبت می‌کنیم.

 

۰ نظر موافقین ۰ مخالفین ۰ ۱۷ شهریور ۹۳ ، ۱۸:۵۶
جمعه, ۱۷ مرداد ۱۳۹۳، ۰۱:۰۳ ق.ظ

درس دوم- نرمال سازی و طراحی پایگاه داده‌ها

مقدمه
اکنون که دانش پایه‌ای ما در مورد پایگاه به حد قابل قبولی رسیده است، وقت آن رسیده تا با مفاهیم  عمیق‌تر و ساختاری این زبان آشنا شویم. تمرکز این درس بر مفاهیم طراحی پایگاه بر اساس نیازهای یک سیستم است، این بدین معنی‌ست که در این درس با مفاهیم کاملا تئوریک و ساختاری پایگاه داده‌ها کار می‌کنیم. اجازه بدهید این مقدمه را با جمله‌ای از آبراهام لینکون (شانزدهمین رئیس جمهور آمریکا که با گسترش برده‌داری مخالفت کرد) به پایان ببریم، او می‌گوید: اگر من ۶ ساعت برای قطع کردن درختی وقت داشتم، ۴ ساعت ابتدایی را صرف تیز کردن تبر خود می‌کردم. نکته را گرفتید؟

 

نرمال سازی
ابتدایی‌ترین کار در پایگاه داده‌های رابطه‌ای (Relational Database Management System) که بر اساس ارتباط یا رابطه بین اجزای آن عمل می‌کند، بوجود آوردن یک ساختار کلی برای آن است، که بدان طرح یا الگو نیز گفته می‌شود. برای بوجود آوردن یک سیستم کار‌آمد، طراحی یک پایگاه درست و مفید از موارد حیاتی است. اما قبل از طراحی پایگاه باید به شیوه و نحوه عملکرد برنامه‌ای که می‌نویسید کاملا اشراف داشته باشید، این به معنی دانستن هدف و نحوه کار سیستم است. بعد از مشخص کردن قوانین و نحوه کار سیستم باید پایگاهی که توانایی انجام امور مربوط به حفظ و نگهداری داده‌ها را داشته باشد طراحی شود. در این راستا مفهومی بنام نرمال سازی مطرح می‌شود که در بهینه کردن نحوه کار و از بین بردن تکرارهای بی مورد در عمل ارسال و دریافت کارآمد است.

 فرض بگیرید که می‌خواهید یک سیستم که قابلیت کاربر گیری دارد طراحی کنید، مسلما باید پایگاهی در خور این سیستم هم بسازید. پایگاهی که داده‌های مختلف را در خود جای دهد و در زمان نیاز، با بیشترین سرعت قابل دریافت باشند. موضوع این‌ست که شما می‌توانید این پایگاه را در یک جدول و یا در تعدادی جدول پایه گذاری کنید. در حال حاضر انتخاب تنها یک جدول برای نگهداری داده‌های بیشمار قسمت‌های مختلف کار درستی به نظر نمی‌آید. نرمال‌ سازی درست زمانی بکار می‌‌‌آید که تعداد جدول‌ها از یکی بیشتر می‌شود و بین داده‌ها در جداول مختلف ارتباط وجود دارد. با این تفاسیر تقریبا ما همیشه به این تکنیک نرمال سازی نیاز پیدا می‌کنیم که در یک تعریف کلی می‌شود از آن به بهینه سازی در استفاده از پایگاه نام برد.

اگر بخواهم تعریف دیگری از نرمال سازی بدهیم می‌گوییم: نرمال سازی یک پایگاه، پروسه‌ای است از تغییر ساختار پایگاه، بر اساس یکسری قوانین که به آنها فرم می‌گویند.

 

۰ نظر موافقین ۱ مخالفین ۰ ۱۷ مرداد ۹۳ ، ۰۱:۰۳