آموزش PHP مبتدی تا حرفه ای

در این بخش میتوانید آموزش های مربوط به نیوک را مشاهده فرمائید.
bahramr2012
کاربر فعال
کاربر فعال
پست: 152
تاریخ عضویت: پنج‌شنبه ۲۷ تیر ۱۳۹۲, ۳:۳۹ ق.ظ
تشکر کرده: 20 دفعه
تشکر شده: 26 دفعه
تماس:

Re: آموزش PHP مبتدی تا حرفه ای

پست توسط bahramr2012 »

shahin2010b نوشته شده:قسمت 10

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

ابتدا یک فایل به اسم exam.php بسازید و در آنرا در هاست یا لوکال انتقال دهید.

کد زیر را در آن وارد کنید :

[php]
echo
"<form action='exam.php' method='post'>".
"Your Name : "."<input type='text' name='fname' />".
"<br>".
"Your Email : "."<input type='text' name='email' />".
"<input type='submit' value='Check' />".
"</form>";

if(isset($_POST['fname']) && ($_POST['email'])){
$fname=$_POST['fname'];
$em=$_POST['email'];
echo
"Name : ".$fname.
"<br>".
"Your Email : ".$em.
"<form action='exam.php' method='post'>".
"<input type='hidden' name='val1' value='$fname' />".
"<input type='hidden' name='val2' value='$em' />".
"<input type='submit' value='Send' />".
"</form>";
}
if(isset($_POST['val1']) && ($_POST['val2'])){
$fname1=$_POST['val1'];
$em1=$_POST['val2'];
$to='Reciever!!';
$subject = 'Subject';
$message = 'Name : '.$fname1."<br>"."Email : ".$em1;
$from = "Your Email";
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'From: '.$from."\r\n" ;
$headers .= 'Content-type: text/html; charset=utf-8' . "\r\n";
mail($to, $subject, $message, $headers);
echo " SEND ";
}

[/php]

با استفاده از این کد یک فرم را ایجاد کرده اید که 2 مقدار name و email را می توانید وارد کنید و سپس توسط کاربر بررسی و بعد از آن در صورت صحیح بودن ایمیل خواهد شد.

نکته : به صورت معمول در لوکال ارسال ایمیل امکان پذیر نمی باشد !

توضیحات کامل :

با تابع isset مقادیر $_POST['fname'] و $_POST['email'] را بررسی می کنیم که وجود دارد یا خیر !

درصورت وجود داشتن آن را نمایش داده و سپس یک فرم دیگر ایجاد کرده و به صورت hidden مقادیر را وارد می کنیم برای ارسال !

در قسمت بعدی دوباره وجود مقادیر را بررسی می کنیم.

حال در صورتی که مقادیر وجود داشته باشد :

شما باید در روبروی متغییر $to ایمیل شخص دریافت کننده که می توانید خودتان یا هرکس دیگر باشد را پر کنید.

در متغییر $subject می توانید موضوع ایمیل را مشخص کنید.

متغییر $from باید ایمیل را وارد کنید که قصد ارسال با آن را دارید.

در نهایت ایمیل ارسال خواهد شد.

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

لطفا سوالات خودرا در اینجا بیان نکنید...

قسمت بعدی : آموزش کار با دیتابیس



دستت درد نکنه . آموزش خوبی بود . ایشا الله موفق باشیتصویر


قالب های قرارداده شده توسط کاربران
تالارگفتمان IPBoard (مهم)
مد استایل دمو
[CENTER]اگریک روزی هنگام پاسخ دادن به سوال کسی غروربرت داشت به روزاولی که خودت شروع کردی فکرکن[/CENTER][CENTER]

[/CENTER]
shahin2010b
کاربر فعال
کاربر فعال
پست: 929
تاریخ عضویت: جمعه ۱۴ آبان ۱۳۸۹, ۱۲:۰۰ ق.ظ
تشکر کرده: 32 دفعه
تشکر شده: 313 دفعه
تماس:

Re: آموزش PHP مبتدی تا حرفه ای

پست توسط shahin2010b »

قسمت 11 { کار با دیتابیس }

ابتدا فایلی را که ضمیمه شده دانلود کنید و سپس به توضیحات توجه کنید.

در لوکال هاست یا هاست خودتان یک دیتابیس بسازید و فایل database.sql که در فایل ضمیمه شده قرار داده شده بود را در آن import کنید.

این فایل حاوی این اطلاعات هستش :

کد: انتخاب همه

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
CREATE TABLE IF NOT EXISTS `form` (
  `id` int(20) NOT NULL,
  `name` text CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
  `family` text CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
  `email` text CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
  `subject` text CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
  `comment` longtext CHARACTER SET utf8 COLLATE utf8_persian_ci NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

توضیحات :

جدولی می سازه به اسم form که شامل فیلد های id با 20 کاراکتر از نوع integer ، فیلد name ، فیلد family ، فیلد email و subject که همگی از نوع text هستند و

فیلد comment که از نوع longtext هستش و همچنین فیلد id به عنوان PRIMARY KEY انتخاب شده.


پس از اطمینان از import شدن کامل ، فایل config.php را باز کنید که حاوی اطلاعات زیر می باشد :

[php]
$server = 'localhost';
$username = '';
$password = '';
$database = '';
$Connection = mysql_connect( $server , $username , $password ) or die(mysql_error());
mysql_select_db( $database , $Connection ) or die(mysql_error());
[/php]


آنرا ویرایش کنید و اطلاعات مربوط به دیتابیس مربوط را در آن وارد کنید :
متغییر username ، نام کاربری دیتابیس را می خواهد ، متغییر password ، رمز عبور دیتابیس ساخته شده هستش و database هم نام دیتابیس ساخته شده ی شما هستش.


پس از ذخیره ، فایل index.php را باز کنید که حاوی اطلاعات زیر می باشد :

[php]
if (isset($_POST['confirm'])){
@include('config.php');
$nm=$_POST['nm'];
$fm=$_POST['fm'];
$em=$_POST['em'];
$code=$_POST['code'];
$sub=$_POST['sub'];
$cm=$_POST['cm'];
if(empty($nm))
die('complete name');
if(empty($fm))
die('complete family');
if(empty($em))
die('complete email');
if(empty($sub))
die('complete subject');
if(empty($cm))
die('complete comment');
mysql_query("INSERT INTO `form` SET `name`='$nm',`family`='$fm',`email`='$em',`subject`='$sub',`comment`='$cm',`id`='$code' ") or die(mysql_error());
echo "Accept";
}

[/php]


که میاد اطلاعات را از جهت خالی یا پر بودن بررسی می کنه و سپس تبدیل به یک رکورد در دیتابیس می شه.

با insert into در فیلد name که داخل دیتابیس هست ، محتویات متغییر $nm را میریزیم و بقیه به همین صورت...

و فایل admin.php که اطلاعات داخل دیتابیس را که قبلا پر شده نشون میده که حاوی برنامه ی زیر می باشد :

[php]
@include('config.php');
mysql_query("SET NAMES 'UTF8'");
mysql_query("SET character_set_connection = 'utf8'");
$result=mysql_query("SELECT * FROM form");
echo "<table border='2' width='700'>
<tr>
<th>name</th>
<th>family</th>
<th>email</th>
<th>code</th>
<th>subject</th>
<th>comment</th>
</tr>";
while($row=mysql_fetch_array($result))
{
echo "<tr>";
echo "<td align='center' bgcolor='#00CCFF'>". $row['name']."</td>";
echo "<td align='center' bgcolor='#00CCFF'>". $row['family']."</td>";
echo "<td align='center' bgcolor='#00CCFF'>". $row['email']."</td>";
echo "<td align='center' bgcolor='#00CCFF'>". $row['id']."</td>";
echo "<td align='center' bgcolor='#00CCFF'>". $row['subject']."</td>";
echo "<td align='center' bgcolor='#00CCFF'>". $row['comment']."</td>";
echo "</tr>";
}
echo "</table>";

[/php]


فایل admin.php هیچ امنیتی نداشته و صرفا جهت نمایش می باشد.

در قسمت بعدی بر روی امنیت و بروز رسانی و حذف رکورد ها کار خواهد شد
پیوست ها
mysql_lr.zip
(2.26 کیلو بایت) 175 مرتبه دانلود شده
shahin2010b
کاربر فعال
کاربر فعال
پست: 929
تاریخ عضویت: جمعه ۱۴ آبان ۱۳۸۹, ۱۲:۰۰ ق.ظ
تشکر کرده: 32 دفعه
تشکر شده: 313 دفعه
تماس:

Re: آموزش PHP مبتدی تا حرفه ای

پست توسط shahin2010b »

قسمت 12 { کار با دیتابیس - کوکی و سیشن }

بابت غیبت طولانی پوزش میطلبم.

در قسمت 11 ، آموزش ساخت فرم و وارد کردن اطلاعات آن به دیتابیس را یاد گرفتید.

برای اینکه بتونید یک صفحه ورود کاربر را طراحی کنید قبل از این نیاز دارید درباره ی کوکی (cookie)و سیشن(session) آموزش ببینید.

کوکی یک فایل متنی در حد 4 کیلوبایت هستش که هر کوکی یک اسم داره و یک مقدار که میتونی هرچیزی باشه...

کوکی در مرورگر ذخیره می شه و برای ذخیره شدن می توان زمان باید برای اون مشخص کرد یعنی :

یک کوکی ست می کنیم برای 1 ساعت ، درصورتی که خودمون حذف نکنیم ( logout ) خود کوکی اتوماتیک بعد از 1 ساعت حذف می شه.

نکته : مقدار هر کوکی برای هر سایت جداست و به راحتی قابل مشاهده می باشد.

اما session اصلا مشخص نیست که مقدارش چیه ، در سرور ذخیره می شه ، امنیت بیشتری داره

ولی انعطاف پذیری مثل کوکی نداره ...

اگر از من بپرسن از session استفاده بکنی بهتره یا cookie در پاسخ می گم کوکی ولی :

1-حتما مقدار کوکی را کد می کنم ( در ادامه خواهیم گفت چجوری)

2-به هیچ عنوان پسورد را داخل کوکی ذخیره نمی کنم

اما چگونه از session و cookie استفاده کنیم ؟

برای استفاده از session یا جلسه ابتدا باید یک جلسه را شروع کرد.برای مثال :

[php]
session_start();
$_SESSION['username']='shahin';
[/php]

الان ما یک session داریم به اسم username که محتوای اون shahin هستش.

حالا اگه نیاز بشه محتوای سیشن را نمایش بدیم باید چیکار کرد ؟

[php]
session_start();
echo $_SESSION['username'];

[/php]

نکته : برای نشان دادن سیشن هم باید از session_start(); استفاده کرد،درغیر اینصورت ارور میگیرید.

حالا فرض کنید بخواهیم سیشن را از بین ببریم یا درواقع logout کنیم :

اگر بخواهیم همه ی سیشن های ساخته شده را از بین ببریم از این کد استفاده می کنیم (توصیه نمی شه ) :

[php]
session_start();
session_destroy();

[/php]

اگر بخواهیم سیشن مورد نظر را از بین ببریم از کد زیر استفاده می کنیم :
[php]
session_start();
unset($_SESSION['username']);

[/php]


نکته : در هربار استفاده از سیشن به شما یک کد داده می شود ( به صورت اتوماتیک)که از این کد هم استفاده های زیادی می شه کرد.

نمونه ای از این کد :

کد: انتخاب همه

5u6gfrpgd2os0nd2siguaurar5

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

[php]
session_start();
echo session_id();

[/php]

فکر می کنم به صورت کامل سیشن هارا گفته باشم،بهتره به کوکی ها بپردازیم :

برای ایجاد کوکی از دستور زیر استفاده می کنیم :

[php]
setcookie('username','shahin',time()+60*60);
[/php]

کوکی ایجاد کردیم به اسم username که محتوای اون shahin هستش و زمان 1 ساعت انقضا داره.

برای نمایش :

[php]
echo $_COOKIE['username'];
[/php]


برای حذف کوکی زمان را به عقب بر میگردونیم ، یعنی :

[php]
setcookie('username','',time()-60*60);
[/php]

مقدار کوکی را نیز باید خالی کرد !!!!

بقیه ی موارد در جلسه ی بعدی آموزش داده خواهد شد

موفق باشید
آخرین ويرايش توسط 1 on shahin2010b, ويرايش شده در 0.
shahin2010b
کاربر فعال
کاربر فعال
پست: 929
تاریخ عضویت: جمعه ۱۴ آبان ۱۳۸۹, ۱۲:۰۰ ق.ظ
تشکر کرده: 32 دفعه
تشکر شده: 313 دفعه
تماس:

Re: آموزش PHP مبتدی تا حرفه ای

پست توسط shahin2010b »

قسمت 13 { کار با دیتابیس - کوکی و سیشن:: ایجاد شناسه ی منحصر بفرد }

سلام مجدد .

در بیشتر فرم ها و یا عضو گیری ها نیاز به یک شناسه ی یکتا یا منحصر به فرد داریم یعنی هیچ موقع تکرار در اون پیش نیاد !

در php ، تابع uniqid دقیقا همین کار را انجام میده،البته از توابع rand می شه استفاده کرد ولی بهتر از اون اینه که همون تابع rand در uniqid استفاده بشه.

ساختار uniqid به شکل زیر می باشد :

[php]
uniqid (prefix , more_entropy)
[/php]


حال اگر بخواهیم یک ترکیب درست کنیم که تکرار در اون پیش نیاد و خیلی مفید باشه بهتره که به روش زیر عمل کنیم :
[php]
md5(uniqid(rand(),true));
[/php]
تابع rand وظیفه ی تولید اعداد تصادفی داره که به صورت پیشوند قرار میگیره و تابع md5 هم وظیفه ی کد گذاری روی اعداد و حروف داره...
در هر بار اجرای دستور بالا در صورتی که echo کنید یک کد به شما نمایش داده می شه.

اگر بخوام دراین مورد بیشتر توضیح بدم در واقع با همین یک خط کد می تونید جلوی باگ CSRF را بگیرید !

برای هر کاربر یک کد مشخص می کنید حالا با سیشن که امنیت بیشتری داره و باعث می شه فقط کاربرانی که وارد سایت شده اند بتوانند به سایت درخواست بفرستند

(منظور کاربران ثبت نام کرده نیست،یعنی هر کسی که وارد سایت شده باشد)

درصورتی که این مسئله برای شما مبهم و گیج کننده هستش از طریق پیغام خصوصی در ارتباط باشید

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

موفق باشید.
shahin2010b
کاربر فعال
کاربر فعال
پست: 929
تاریخ عضویت: جمعه ۱۴ آبان ۱۳۸۹, ۱۲:۰۰ ق.ظ
تشکر کرده: 32 دفعه
تشکر شده: 313 دفعه
تماس:

Re: آموزش PHP مبتدی تا حرفه ای

پست توسط shahin2010b »

بروز رسانی قسمت 11 :: کار با دیتابیس


همانطور که می دانید با بروز رسانی نسخه ی PHP برخی از دستورات تغییر کرده و دستورات جدیدی به آن اضافه شده است.

در قسمت 11 آموزش اتصال به دیتابیس را یاد گرفتید که از mysql_connect استفاده کردیم ، اما در نسخه های جدید تر بهتر هستش که از mysqli استفاده کنیم.

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

[php]
define('SERVER_HOST','localhost');
define('SERVER_USERNAME','root');
define('SERVER_PASSWORD','password');
define('DATABASE_NAME','new_eagle');
$con=mysqli_connect(SERVER_HOST,SERVER_USERNAME,SERVER_PASSWORD,DATABASE_NAME);
if (mysqli_connect_errno()) {
die("database error");
}

[/php]

توضیحات : در اینجا 4 ثابت ایجاد کردیم ، تفاوت ثابت با متغیر در توانایی آنها در مقدار گیری مجدد می باشد،یعنی یک متغیر می تواند چندین بار مقدارش پشت سرهم عوض شود

اما ثابت ها فقط یکبار تعیین می شوند و خاصیت دیگر ثابت ها کمتر اشغال شدن حافظه می باشد.

نحوه ی شکل گیری ثابت ها :

کد: انتخاب همه

define(Name , Value ,[true/false]);

موفق باشید.
shahin2010b
کاربر فعال
کاربر فعال
پست: 929
تاریخ عضویت: جمعه ۱۴ آبان ۱۳۸۹, ۱۲:۰۰ ق.ظ
تشکر کرده: 32 دفعه
تشکر شده: 313 دفعه
تماس:

Re: آموزش PHP مبتدی تا حرفه ای

پست توسط shahin2010b »

قسمت 14 - ساخت یک شیء (object) توسط یک کلاس (class)


زمانی که ما یک کلاس (class) تعریف می کنیم، تا زمانی که توسط آن کلاس، یک شیء (object) نسازیم، هیچ اتفاقی نخواهد افتاد.

در واقع مثل این است که شما یک کارخانه ساخت ماشین ساخته اید اما خط تولید آن را راه نینداخته اید.

بنابراین هیچ ماشینی در خروجی کارخانه وجود نخواهد داشت. زمانی هم که ما یک کلاس تعریف می کنیم اما توسط آن، شیء نسازیم، هیچ خروجی برای استفاده توسط بخش های دیگر کد و یا برای نمایش به کاربر، وجود نخواهد داشت.

فرم کلی یک class :

کد: انتخاب همه

class name{
function name($values){
//instructions

}

}

به مثال توجه کنید :

[php]
class nuke{

function test_n1(){
echo "hi";
}

}

[/php]


توجه : در انتخاب نام تابع و کلاس ها (function و class) ها دقت کنید، در صورتی که از قبل رزرو شده باشد به مشکل بر می خورید.

برای فراخوانی یا اجرای کد بالا باید یک شئ بسازیم :
[php]
$obj=new nuke;
$obj->test_n1();
[/php]
خروجی به شکل زیر خواهد بود :


تحلیل : شئ به اسم $obj ساختیم ، حال باید تابع درون آنرا فراخوانی کنیم.

نکته : ممکن است چندین تابع درون کلاس باشد که می توانیم آنهارا فراخوانی و به آنها مقدار دهیم.

نکته : کلاس ها می توانند از یک دیگر ارث بری داشته باشند.

نکته : ثابت ها (define که قبلا توضیح داده شد)خاصیت global دارند.

نکته : برای global شدن متغیری درون تابع از دستور زیر استفاده می کنیم :
[php]
function name(){
global $str;
//instructions
}
[/php]


لطفا در صورتی که مشکلی در آموزش بالا قرار دارد فقط در پیغام خصوصی مطرح کنید
shahin2010b
کاربر فعال
کاربر فعال
پست: 929
تاریخ عضویت: جمعه ۱۴ آبان ۱۳۸۹, ۱۲:۰۰ ق.ظ
تشکر کرده: 32 دفعه
تشکر شده: 313 دفعه
تماس:

Re: آموزش PHP مبتدی تا حرفه ای

پست توسط shahin2010b »

قسمت 15 - ارث بری کلاس از کلاس دیگر

ابتدا به مثال زیر توجه ، سپس درباره ی آن توضیح خواهیم داد :

[php]
class a{
function test()
{
echo "class a"."<br />";
}
function show($var)
{
echo "in class a: the varible is $var"."<br />";
}
}
class b extends a {
function test()
{
echo "class b"."<br />"; ;
}
}

}
$a = new a();
$b = new b();

$a->test();
$b->test();
$b->show('Nuke');

[/php]

خروجی به شکل زیر خواهد بود :

کد: انتخاب همه

in class a 
in class b 
in class a: the varible is Nuke

یکی از مزیت های شی گرایی(oop)یا object-oriented programming ارث بری یا Inheritance میباشد با استفاده از ارث بری می توان به بقیه ی کلاس ها دسترسی داشت

و از قابلیت ها یا ویژگی های بقیه ی کلاس برخوردار شد !

با دستور extends که در کد بالا مشاهده می کنید از کلاس دیگری ارث خواهیم برد.

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

در مثال بالا کلاس a پدر و کلاس b فرزند می باشد.

به طور واضح تر همیشه فرزند می تواند ویژگی های پدرش را به ارث ببرد در برنامه شی گرایی دقیقا به همین صورت هستش.

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

بسیار سخت و نا مفهوم می باشد.

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

بازگشت به “آموزش و مقالات - Learning & Articles”