0

بررسی توابع PHP

 
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

تابع strtok ، تابع شکستن رشته به رشته های کوچک

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

 

مثال : در یک رشته هر گاه به اسپیس رسید کلمه را در یک سطر چاپ کند.

 

<?php

          // تعریف رشته

$string = "Hello world. Beautiful day today.";

// تابع رشته رو جدا کننده که فاصله است را گرفته و هر وقت به فاصله می رسد یک قسمت از رشته را بر می دارد
$token = strtok($string, " ");

while ($token != false)
  {
      echo "$token<br />";
      $token = strtok(" ");
  } 

?>

خروجی :

 

Hello
world.
Beautiful
day
today.

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

 

توابع مشابه :

 

تابع explode : تقسیم یک رشته به رشته های کوچک، ورودی تابع رشته ~~> خروجی تابع آرایه است.

 

جمعه 23 تیر 1391  8:18 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

تابع md5 ، تابع هش کردن یک رشته

تابع md5 : این تابع یک رشته را گرفته و هش می کند. یعنی رشته را به صورت یک طرفه و نامتقارن و غیر قابل decode تبدیل می کند. و برای هش کردن کلمه های عبور در بانک اطلاعاتی استفاده می شود از لحاظ امنیتی این تابع را نمی شود دیکد کرد ولی اگر کسی برنامه ای نوشته و تمام کاراکترهای مثلا 8 رقمی را با این تابع هش کند و معادل آن را هم ذخیره کند سپس می تواند با پسوردی که قبلا هش شده مقایسه کند و معادل آن که قبلا ذخیره کرده را پیدا کند ولی این روش برای کلمه های عبور ساده جواب می دهد و بخصوص اگر تعداد کاکترهای رمز عبور از 8 بیشتر باشد خیلی سخت و گاهی غیر ممکن می شود.

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

 

مثال :

 

<?php

$str = "Hello";
echo md5($str);

if (md5($str) == '8b1a9953c4611296a827abf8c47804d7')
  {
      echo "<br />Hello world!";
  }

?>

خروجی :

 

8b1a9953c4611296a827abf8c47804d7
Hello world!

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

لازم به این نکته اشاره کنم که هر کلمه و رشته ای معادل هش شده ای یکتای دارد مثلا معادل هش شده Hello همیشه برابر 8b1a9953c4611296a827abf8c47804d7 است.

 

شنبه 24 تیر 1391  4:08 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

تابع sha1 ، تابع هش رشته

تابع  sha1 : این تابع هم مانند تابع md5 وظیفه اش هش کردن رشته وردوی است md5 یک رشته هش ۱۲۸ بیتی (۳۲ کاراکتر هگزادسیمال) برمی گرداند  ولی sha1 یک رشته هش ۱۶۰ بیتی (۴۰ کاراکتر هگزادسیمال) را بر می گرداند.

HASH : در لغت به معنای خرد کردن چيزی و در هم کردن آن است. در رايانه Hash توابعی که رشته ورودی خود را به وسيله الگوریتمی تبدیل به رشته ای معادل یکتای می کند.

مثال : رشته را با تابع sha1 هش کرده و چاپ کند.

 

<?php

$str = 'Hello';
echo sha1($str);

if (sha1($str) == 'f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0')
  {
      echo "<br />Hello world!";
  }

?>

خروجی :

 

f7ff9e8b7bb2e09b70935a5d785e0cc5d9d0abf0
Hello world!

در این مثال هم تابع رشته را هش کرده و با معادل هش شده آن با همین تابع مقایسه کرده و چاپ می کند.

 

شنبه 24 تیر 1391  5:29 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

تابع crypt ، تابع هش رشته با salt (نمک)

تابع crypt : این تابع مانند دو تابع قبلی یعنی md5 , sha1 هش روی رشته را انجام می دهد با این تفاوت که برای اینکه امنیت بیشتر از salt (نمک) استفاده شده است.

دارای دو آرگومان است اولی، رشته ورودی و دومی، salt یا رشته ثابت که به رشته اضافه شده سپس هش انجام می شود.

Salt (نمک):

در دو تابع قبلی یعنی md5 , sha1 وقتی کسی به بانک اطلاعاتی که پسوردها با دو تابع قبل هش شده بودند دسترسی پیدا می کرد می توانست با ساختن یک دیکشنری از رشته ها و معادل هش شده آنها با توابع مورد نظر با مقایسه و صرف زمان به پسوردها برسد برای حل این مشکل اشاره شد که می توانیم یک رشته تصادفی به پسورد اضافه سپس هش را با توابع قبل انجام دهیم این باعث می شد که هکر نتواند با دیکشنری از قبل ساخته خود به کلمات عبور دسترسی پیدا کند و مجبور برای هر رکورد هش آن را دوباره محاسبه کند که خیلی سخت و زمان گیر و گاهی غیر ممکن است.

این رشته تصادفی اضافه شده به پسورد را Salt می گویند که باعث پیچیدگی کلمات عبور می شود و امنیت آنها را بالا می برد در این روش 4096 نوع هش از یک پسورد می توان ایجاد کرد و به همین دلیل پیدا کردن پسورد سخت می شود ولی باز هم امنیت کامل ایجاد نمی شود.

ساختار:

 

crypt(string , salt)

مثال :

<?php

// تعريف کلمه عبور
$password = "mypass";

// تعريف نمک
$salt = "secured";

// رمزگذاري کلمه عبور با تابع
// result: seBgtAkJR1wIw

$cipher = crypt($password, $salt);
echo $cipher;

?>

خروجی :

 

seBgtAkJR1wIw

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

 

دوشنبه 26 تیر 1391  1:41 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

تابع round ، تابع گرد کردن اعداد اعشاری

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

 

شکل کلی :

round(تعداد ارقام اعشار , نام متغیر ورودی)

مثال :

<?php

$num = (100/3);

// result: 33.3
$roundNum = round($num, 1);
echo $roundNum . "<br>";

// result: 33.3333333333
$roundNum = round($num, 10);
echo $roundNum;

// result: 1242000
echo round(1241757, -3);

?>

خروجی :

33.3
33.3333333333

متغیر تعریف کرده و با تابع round متغیر اعشاری را تا یک رقم رند می کند و چاپ می شود در تابع دوم 10 رقم برای اعشار در نظر گرفته شده است. و تابع سوم از سمت چپ سه رقم قسمت صحیح عدد را صفر می کند.

 

سه شنبه 3 مرداد 1391  2:16 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

تابع ceil، تابع گرد کردن اعداد به طرف بالا

تابع ceil : تابع گرد کردن اعداد اعشاری رو به بالا است یعنی حد بالای عدد اعشاری را در خروجی می دهد در مورد اعداد مثبت عدد بزرگتر و برای اعداد اعشاری منفی حد بالا، عدد کوچکتر است مثلاٌ حد بالا 5.4 را 6 گرفته و حد بالای 5.9- را 5- در نظر می گیرد.

 

شکل کلی :

ceil(ورودی تابع به صورت عدد اعشاری)

مثال :

<?php

echo(ceil(0.60) . "<br />");

echo(ceil(0.40) . "<br />");

echo(ceil(5) . "<br />");

echo(ceil(5.1) . "<br />");

echo(ceil(-5.1) . "<br />");

echo(ceil(-5.9));

?>

خروجی :

1
1
5
6
-5
-5

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

 

سه شنبه 3 مرداد 1391  2:17 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

تابع floor ، تابع گرد کردن اعداد به طرف پایین

تابع floor : تابع گر کردن عدد اعشاری به طرف پایین است یعنی اعداد اعشاری را به طرف عدد صحیح گرد می کند و دارای یک آرگومان ورودی است.

 

شکل کلی :

floor(ورودی تابع به صورت عدد اعشاری)

مثال :

<?php

echo(floor(0.60) . "<br />");

echo(floor(0.40) . "<br />");

echo(floor(5) . "<br />");

echo(floor(5.1) . "<br />");

echo(floor(-5.1) . "<br />");

echo(floor(-5.9));

?>

خروجی :

0
0
5
5
-6
-6

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

 

سه شنبه 3 مرداد 1391  3:45 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

توابع کار با اعداد اعشاری

در پست های قبل سه تابع کار با اعداد اعشاری را بررسی کردیم برای مقایسه آنها به مثال زیر توجه کنید.

 

مثال :

<?php

$num = (11/3);

$r =round($num) ;

$c =ceil($num) ;

$f =floor($num);

// result: "4 4 3"
echo "$r $c $f";

?>

خروجی :

4 4 3

تابع round ،دارای دو آرگومان است که آرگومان دوم تعداد ارقام اعشار را مشخص می کند و وقتی تعریف نشود عدد را گرد می کند قسمت اعشار کوچکتر از 50 باشد به طرف پایین گرد می کند و بزرگتر مساوی 50 باشد به طرف بالا گرد میکند مثلا عدد 2.5 را 3 و عدد 2.49 را 2 در خروجی تابع خواهیم داشت.

تابع ceil ، تابعی است که اعداد اعشاری را به طرف بالا گرد می کند که در اینجا 3.6666666666667 را تبدیل به 4 می کند.

تابع floor ، تابع گرد کردن اعداد اعشاری رو به پایین است که در این مثال 3.6666666666667 را به طرف پایین یعنی قسمت صحیح عدد می رود که 3 است.

 

سه شنبه 3 مرداد 1391  4:35 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

تابع sort ، تابع مرتب کردن صعودی

تابع sort : این تابع یک آرایه را گرفته و به صورت صعودی مرتب می کند. برای سرعت بیشتر جستجو قبل از جستجو استفاده می شود به خصوص وقتی الگوریتم جستجو، quick sort باشد.

 

مثال 1 : یک آرایه را مرتب کرده سپس چاپ کند.

<?php

$fruits = array( "Orange1", "arange2", "Orange3", "orange20" );

sort($fruits);

foreach ($fruits as $key => $val) {

echo "fruits[" . $key . "] = " . $val . "<br>"; }

?>

خروجی :

fruits[0] = apple
fruits[1] = banana
fruits[2] = lemon
fruits[3] = orange

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

 

مثال 2 : کوچکترین و بزرگترین عضو آرایه را پیدا کرده و چاپ کند.

<?php

$series = array(76, 7348, 56, 2.6, 189, 67.59, 17594, 2648, 1929.79, 54, 329, 820, -1.10, -1.101);

// مرتب کردن آرایه

sort($series);

result: "Minimum is -1.101 "

$min = $series[0];

echo "Minimum is $min ";

// result: "Maximum is 17594"

$max = $series[sizeof($series)-1];

echo "Maximum is $max";

?>

خروجی :

Minimum is -1.101 Maximum is 17594

در خط اول آرایه ای از اعداد تعریف شده و خط بعدی تابع آرایه را به صورت صعودی مرتب می کند که اولین عضو آرایه کوچکترین عضو و آخرین عضو آرایه بزرگترین عدد آرایه خواهد بود که کوچکترین مقدار آرایه با اندیس صفر چاپ می شود برای یافتن بزرگترین مقدار آرایه که آخرین مقدار آرایه مرتب شده است از تابع sizeof که کارش برگرداندن طول یک آرایه است استفاده می کنیم چون اندیس آرایه ها از صفر شروع می شود بنابراین یکی از طول آرایه کم می کنیم و بزرگترین عضو آرایه را چاپ می کنیم.

 

چهارشنبه 4 مرداد 1391  12:26 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

تابع number_format ، تابع فرمت بندی اعداد

تابع number_format : تابع قالب بندی اعداد به صورت دلخواه، کاربرد این تابع در فاکتورها و برنامه های حسابداری است. دارای چهار آرگومان است:

این تابع کار گرد کردن اعداد را هم انجام داده و اگر قسمت اعشاری کمتر از 50 باشد (یک دوم) به طرف پایین و بزرگتر مساوی 50 به طرف بالا گرد می کند مثلا 32.4999 را 32 گرد می کند.

  1. آرگومان اول عدد ورودی است.
  2. تعداد ارقام اعشاری عدد که در خروجی تابع در نظر گرفته می شود.
  3.  علامتی است که ممیز و مقدار اعشاری را جدا می کند.
  4. جدا کننده مقدار صحیح عدد است.

 

شکل کلی :

number_format(number,decimals,decimalpoint,separator)

 

مثال :

<?php

echo number_format("3957459.4999");

echo "<br />";

echo number_format("3957459.4999",2);

echo "<br />";

echo number_format("3957459.4999",2,",",".");

echo "<br />";

echo number_format("3957459.4999",2,',','\'');

?>

خروجی :

3,957,459
3,957,459.50
3.957.459,50
3'957'459,50

در تابع اول عدد را گرد کرده و به صورت سه رقمی با ویرگول جدا شده و چاپ می شود در تابع دوم مقدار اعشار دو رقم در نظر گرفته شده و چاپ می شود در تابع سوم آرگومان دوم که 2 است تعداد دو رقم اعشار را مشخص می کند که در خروجی تابع باشد و آرگومان سوم، علامت جدا کننده اعشار است که ویروگول قرار گرفته و آرگومان آخر جدا کننده مقدار صحیح است که دات "." می باشد.

تابع آخر هم از بک اسلش استفاده شده است.

 

چهارشنبه 4 مرداد 1391  2:09 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

توابع تبدیل اعداد به باینری، اکتال، هگزا دسیمال

تابع decbin : کار این تابع تبدیل دسیمال به باینری است یک عدد در مبنای 10 را گرفته و به مبنای 2 تبدیل می کند.

تابع decoct : تبدیل دسیمال به اکتال (مبنای هشت) است. عدد مبنای 10 را به مبنای 8 تبدیل می کند.

تابع dechex : تبدیل دسیمال به هگزا دسیمال است. عدد مبنای 10 را به مبنای 16 تبدیل می کند.

 

مثال :

<?php
   $num = 100;
   result: "Binary: 1100100 "
   $bin = decbin($num); echo "Binary: $bin ";
   result: "Octal: 144 "
   $oct = decoct($num); echo "Octal: $oct ";
   // تبدیل به هگزا دسیمال
   // result: "Hexadecimal: 64 "
   $hex = dechex($num);
   echo "Hexadecimal: $hex ";

?>

خروجی :

Binary: 1100100 Octal: 144 Hexadecimal: 64
جمعه 6 مرداد 1391  2:48 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

تابع تبدیل درجه به رادیان و بلعکس

تابع deg2rad : کار تابع  تبدیل درجه به رادیان است.

تابع rad2deg: کار تابع  تبدیل رادیان به درجه است.

 

مثال :

<?php
// result: "90 degrees = 1.57079632679 radians "
 $degrees = 90;
 $radians = deg2rad($degrees);
 echo "$degrees degrees = $radians radians <br>";

 // result: "1.57079632679491 radians = 90 degrees"
 $radians = 1.57079632679491;
$degrees = rad2deg($radians);
echo "$radians radians = $degrees degrees";
?>

خروجی :

90 degrees = 1.5707963267949 radians
1.5707963267949 radians = 90.000000000001 degrees

 

جمعه 6 مرداد 1391  3:09 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

تابع log ، تابع لگاریتم

تابع log : این تابع لگاریتم طبیعی یک عدد را به دست می آورد.

لگاریتم طبیعی : لگاریتمی است که پایه آن e است که ثابت مشخصی است که تقریباً برابر 2.718281828 است.

تابع log10 : لگاریتم عدد را بر مبنای 10 به دست می آورد.

 

مثال :

<?php
// result: "Natural log of 6 is 0.69314718056. "
$logBaseE = log(6);
echo "Natural log of 6 is $logBaseE. <br>";
// result: "Base10 log of 100 is 2"
$logBase10 = log10(100);
echo "Base10 log of 100 is $logBase10.";

?>

خروجی :

Natural log of 6 is 1.7917594692281.
Base10 log of 100 is 2.

 

جمعه 6 مرداد 1391  3:53 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

تابع log ، لگاریتم بر مبنای دلخواه

تابع log : این تابع لگاریتم طبیعی یک عدد را به دست می آورد.

البته در تابع log  می توانید با مشخص کردن مبنا در این تابع لگاریتم عدد را بر هر مبنای به دست آورید که آرگومان اول تابع عدد و آرگومان دوم مبنای لگاریتم است.

 

مثال :

<?php
// result: "Natural log of 6 is 0.69314718056. "
$logBaseE = log(6);
echo "Natural log of 6 is $logBaseE. <br>";

// result: "Base10 log of 100 is 2"
$logBase10 = log10(100);
echo "Base10 log of 100 is $logBase10.";


$logBase2 = log(64, 8);
echo "Octal log of 64 is $logBase2";
?>

خروجی :

Natural log of 6 is 1.7917594692281.
Base10 log of 100 is 2.
Octal log of 64 is 2

در تابع اول لگاریتم طبیعی عدد 6 به دست آمده و در تابع دوم لگاریتم 100 بر مبنای 10 که 10 است را چاپ می کند و تابع سوم لگاریتم 64 را بر مبنای 8 که 2 است را به دست می آورد شما می توانید لگاریتم را بر هر مبنای به دست آورید.

جمعه 6 مرداد 1391  4:19 PM
تشکرات از این پست
sahel_007
sahel_007
کاربر نقره ای
تاریخ عضویت : شهریور 1388 
تعداد پست ها : 353
محل سکونت : ایران زمین

توابع مثلثاتی در php

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

تابع cos : تابع محاسبه کسینوس است.

تابع  tan  : تابع محاسبه تانژانت است.

 

تابع  asin  : تابع محاسبه آرک سینوس است.

تابع  acos  : تابع محاسبه آرک کسینوس است.

تابع  atan  : تابع محاسبه آرک تانژانت است.

 

تابع sinh : تابع محاسبه سینوس هیپربولیک (هذلولی)  است.

تابع  cosh  : تابع محاسبه کسینوس هیپربولیک (هذلولی)  است.

تابع  tanh  : تابع محاسبه تانژانت هیپربولیک (هذلولی)  است.

 

مثال :

<?php

$angle = 45;

// محاسبه سينوس

// result: "Sine: 0.850903524534 "

$sine = sin($angle);

echo "Sine: $sine <br>";

 

// محاسبه کسينوس

// result: "Cosine: 0.525321988818 "

$csine = cos($angle);

echo "Cosine: $csine <br>";

 

// محاسبه تانژانت

//result: "Tangent: 1.61977519054 "

$tangent = tan($angle);

echo "Tangent: $tangent <br>";

 

// محاسبه آرک سينوس

// result: "Arc sine: -1.#IND "

$arcSine = asin($angle);

echo "Arc sine: $arcSine <br>";

 

// محاسبه آرک کسينوس

//result: "Arc cosine: -1.#IND "

$arcCsine = acos($angle);

echo "Arc cosine: $arcCsine <br>";

 

// محاسبه آرک تانژانت

//result: "Arc tangent: 1.54857776147 "

$arcTangent = atan($angle);

echo "Arc tangent: $arcTangent <br>";

 

// محاسبه سينوس هذلولي

//result: "Hyperbolic sine: 1.74671355287E+019 "

$hypSine = sinh($angle);

echo "Hyperbolic sine: $hypSine <br>";

 

// محاسبه کسينوس هذلولي

//result: "Hyperbolic cosine: 1.74671355287E+019 "

$hypCsine = cosh($angle);

echo "Hyperbolic cosine: $hypCsine <br>";

 

// محاسبه تانژانت هذلولي

//result: "Hyperbolic tangent: 1 "

$hypTangent = tanh($angle);

echo "Hyperbolic tangent: $hypTangent <br>";

?>

خروجی :

Sine: 0.85090352453412
Cosine: 0.52532198881773
Tangent: 1.6197751905439
Arc sine: NAN
Arc cosine: NAN
Arc tangent: 1.5485777614682
Hyperbolic sine: 1.7467135528743E+19
Hyperbolic cosine: 1.7467135528743E+19
Hyperbolic tangent: 1

 

پنج شنبه 12 مرداد 1391  5:47 PM
تشکرات از این پست
دسترسی سریع به انجمن ها