انتقال جداول یک فروم phpbb و ساختن یک فروم دست نویس با دیتابیس آن

saalek110

Well-Known Member
انتقال جداول یک فروم phpbb و ساختن یک فروم دست نویس با دیتابیس آن
 

saalek110

Well-Known Member
داستان:

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

پس به فکر انتقال دیتابیس اون به یک هاست دیگر و ساخت یک فروم دست نویس افتادم.



Phpbb چیه؟ یک قالب مجانی ساخت فروم. یک سرچ بکنید در مورد phpbb چیزهایی بخوانید. قالب فروم مجیدآنلاین وی بی بالتن است ، و پولی است. اکثر فروم های مطرح قالب وی بی بالتن دارند و از قالب مجانی استفاده نمی کنند. Mybb هم یک قالب مجانی فروم است. Smf هم یک قالب مجانی فروم است.‌هاست ها معمولا phpbb برای ملت نصب می کنند.
 
آخرین ویرایش:

saalek110

Well-Known Member
ساب دومین جدید ساختم برای ساخت فروم دست نویس:

من یک ساب دومین جدید ساختم .


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


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

saalek110

Well-Known Member
ساحتار جداول فروم phpbb:

خوب از همه مهم تر جدول پستها است ولی پستها صفت تاپیک دارند..
اجازه دهید برویم جداول این فروم را با هم ببینیم.

فروم phpbb 69 جدول داره. ورژن ۲ سال پیشش است.
حدود نیمی از جداول خالی است. چیزهای جنبی است که اصلا استفاده نشده.

فروم اول من تعداد ۱۳۸۵ پست دارد.
الان داخل دیتابیس همونم. جدول پست ها هم دقیقا ۱۳۸۵ پست دارد.
جدول پست ها ۲۹ ستون داره. من با خیلی هایش کاری ندارم.

ستون post_id خود افزایش یابنده است و اون کلید زرد کنارش است.
ستون های متنی utf8 bin است. ولی سابجکت پست utf8_unicode_ci است.
دلیل دیلت پست varchar 255 کاراکتری است.. دلیل ادیت هم varchar است. ولی خود پست مدیوم تکست است.

عکس میذارم خودتون نگاه کنید:

Screenshot_۲۰۲۴-۰۱-۲۲_۱۳۴۶۲۸.jpg
 

saalek110

Well-Known Member
ستون number:

دارم به ستون number فکر می کنم ، اگر جدول پستهای من ستون number خود افزایش یابنده داشته باشه ،
وقتی مثلا ۱۰۰ تا پست اول اون فروم را بیاورم ، خودبخود از مثلا 1 تا ۱۰۰ شماره می خورند...



بای فکر کنیم ببینیم اصلا کار ستون number چیه؟ برای اینه که موقع اجرای کوئری ها پست ها شماره داشته باشن .... حالا اگر یک پست اون فروم شماره اش ۲۰۰ باشه بیاید اینجا بشود ۳۰۰ مهم نیست. چون شماره پست کاری انجام نمی دهد ، فقط موقع اجرای کوئری ها دستاویز انجام کار کوئری است.

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

پس احتمالا مهم نیست پستهایی که از فروم های دیگه می آیند شماره پست اونها چی باشه.

یک کپی از پستها می آید ، اون فروم که دیلت نمیشه که نگران خراب کاری باشیم.پس جدول پستها را بسازیم ، برویم متن پستها را بیاوریم. بعلاوه شماره تاپیکش.
و بعد برویم سراغ جدول تاپیک ها. بزار ببینیم جدول تاپیک ها چند ستون دارد.
۳۸ ستون.
و جدول فروم ها ۵۰ ستون دارد.
هر دو فرومی که می خواهم منتقل کنم phpbb است. پس ساختارشون یکی است.
 

saalek110

Well-Known Member
شروع انتقال:
بیایید کار را شروع کنیم.
یک جدول پست می سازیم با ستون number خود افزایش یابنده ، این ستون را فعلا نساختیم هم نساختیم چون وقتی بسازیم اتوماتیک تمام پست ها را شماره می زنه. اصلا شماره پست فعلا اهمیتی ندارد..
پس فعلا محتوای پست را می اوریم... و شماره تاپیکش را.
ولی ما هم باید مثل فروم phpbb مدیوم تکست بگیریم نوع ستون را؟ من وقتی در فروم فوق پست می زدم هیچ وقت کمبود جا پیدا نکردم. پس با استاندارد phpbb کار می کنیم.
ولی تاپیک id را بیگ int گرفتم. فعلا دو ستون تکست و تاپیک id ساختم.
این اولین انتقال است.

یک سیستم پشتیبان گیر داره ، رفتم حالت کاستوم اون ، ۵۰ ردیف را انتخاب کردم.
من به حالت ، sql انتخاب کردم. یک فایل دانلود شد چند تا کوئری داره.. اولی و دومی ساخت جدول و insert است..بعدی ها تنظیم کلید است مثلا آخری تنظی ستون number به خود افزایش یابنده است...

من هنوز فایل کانکشن نساختم. اول باید فایل کانکشن بسازم.البته اسم فایل کانکشن و پوشه ای که داخلش می ذارم را متفاوت با اسامی این تاپیک انتخاب می کنم ، برای امنیت.آدرس خود فایل کانکشن را نوشتم ، اول فایل یک echo نوشته بودم ، که اون را چاپ کرد و خطا نداد. این از فایل کانکشن.
حالا باید اون فایل کوئری را آپلود کنم و کوئری ها را اجرا کنم.

سالک: من بعدا با اکسپورت phpmyadmin چند جدولی که نیاز داشتم را کامل آوردم.... یعنی دقیقا کپی جداول phpbb اومد توی هاست جدید... بحث های بالا ... قبل این کار است. پس بحث طراحی جدول توسط خودم منتفی شد بعدا و همان جداول phpbb را الان دارم برایش کد می نویسم.
 

saalek110

Well-Known Member
اتحاد فروم ها:
خوب،.... جداول دیتابیس لازم است را از هاست قدیمی به هاست جدید آوردم.
حالا باید ، کد فروم را بنویسیم.


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

یک فروم دیگه دارم با بالای ۲۰۰۰ پست و فکر کنم به دیتابیس اون هم دسترسی ندارم ، شاید بشه یک جوری پست هایش را خوند. بعدا بهش فکر می کنم.
 

saalek110

Well-Known Member
نوشتن کد فروم:

فرض کنید وسط بیابون یک دیتابیس پیدا کردید که مال یک فروم phpbb است و می خواهید برایش کد بنویسید....

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

saalek110

Well-Known Member
نوشتن کد صفحه اول فروم:

اولا من دیگه با هاست مبدا کاری ندارم و می بندمش. فقط الان با هاست مقصد کار دارم که به تازگی از profreehost گرفتمش.

آدرس سایتم اینه:



خوب من کوئری می خوام جدول فروم ها را بخونم...چون در صفحه اول فروم لیست تالارها را داریم.
میرم صفحه ۹ کد بیاورم.
woow ، تعداد ۱۸۰ تا تالار داشته ، خودم خبر نداشتم.
این کوئری را استفاده کردم

PHP:
         $sql = "SELECT * FROM phpbb_forums";
و با این خط اسامی تالارها را خواندم:
PHP:
                       $name=$info['forum_name'];
کد خوندن یک جدول را باید نوشت ، کد کامل را نمی ذارم.
 

saalek110

Well-Known Member
کارهای اولیه:

اولین کار این بود که تالارهایی که خصوصی بودند و الان اسمشون اومده صفحه اول را تغییر نام دادم.

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

خلاصش اینکه خصوصی و عمومی با هم قاطی شده و باید یک جوری قضیه را جمع کرد.
 

saalek110

Well-Known Member
آشنایی با ساختار جداول فروم phpbb :

در جدول فروم ها:
ستون forum_type شامل صفر و ۱ و ۲ است ... نمی دونم برای چیه.سرچ کردم در گوگل ، گویا اونهایی که صفر است کاتگوری یا لینک است و قابل پست زدن نیست. گویا ۳ نوع لینک و کاتگوری و فروم معمولی داریم ، تایپ اینه گویا.
من نام تالارها و forum_type را کنار هم چاپ کردم... درسته صفر برای کاتگوری است ، و یک برای فروم معمولی و ۲ برای لینک است.

در جدول فروم ها:
ستون display_on_index همه ردیف ها عددش یک بود.

در جدول فروم ها:
forum_topics_approved
forum_posts_approved
تعداد تاپیک ها و پستهای هر تالار است.

در جدول فروم ها , اگر parent_id صفر باشد ، یعنی تالار مادر ندارد.
 

saalek110

Well-Known Member
نقشه کار:
تالارهایی که خصوصی بوده یا به هر دلیلی نمی خواهیم نمایش دهیم ، یک ستون خودمون به جدول تالارها اضافه می کنیم به نام kenar ، و این تالارها در صفحه اول نمایش داده نمی شود و جای دیگری نمایش داده می شود.

تالارهایی که فرزند هر کاتگوری است زیر اون لیست میشه به جز اونهایی که صفت kenar برابر با ۱ دارند.
نوع جدول کنار int و از نوع tinyint می گیریم چون عدد بزرگی قرار نیست داخلش نوشته بشود.

پس تالارهای فرزند کاتکوری ها زیر نوار رنگی کاتگوری نمایش داده می شوند.
این تالارها لینک می دهند به یک صفحه دیگر که اون صفحه ورودی عددی داره که شماره اون تالار ی است که در صفحه اول ظاهر شده زیر کاتگوری...مثلا اگر تالاری که زیر کاتگوری در صفحه اول نشسته کدش ۳۳ باشه ، این عدد ۳۳ را می فرسته به صفحه ثانویه ، و اون صفحه ثانویه ، تالارهای زیرتالار تالار ۳۳ را لیست می کند و اگر تالار ۳۳ دارای تاپیکهایی هم بشه لیست میشود.

هر نام تاپیک هم لینک می دهد به فایل show_topic.... این اسم show_topic , از اسمهای ورژن های قدیمی قالب phpbb است. شاید الان هم این اسم استفاده شود.

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

saalek110

Well-Known Member
جدول پست ها هم توسط همون export و import خود phpmyadmin منتقل شد به هاست جدید...
فروم در محل جدید تقریبا آماده است.


البته خیلی کارها باید رویش انجام بشود ، ولی اسکلت کلی اش آماده است.‌
 

saalek110

Well-Known Member
روش انتقال فروم دوم:

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

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

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

چرا کارها را پیشاپیش می گویم؟
اینکه من پیشاپیش روش انجام را میگم ، چون ممکن است نتوانم خود کار را انجام بدهم ، پس بهتره ایده و روشش را بدهم ، چون یک نفر ممکن است خودش روش را پیاده کند. در پست های قبلی هم روش خیلی از کارها را به شکل کلی گفتم و بعد به کارهای دیگر پرداختیم ، شاید نرسیم اون چیزهایی که مطرح کردیم را خودم پیاده کنم ولی اگر روش کلی اش را بگیم ممکن است بعضی خودشان پیاده کنند.
علت انتقال فرمها :
اولا فروم دوم کلا خراب است و اصلا نمایش ندارد. آدرسشفکر کنم این بود saalek1110.unaux.com در مورد بازی ساز game maker و بازی ساز سه بعدی معروف UDK است. باید کاری کنم اون فروم صاحب نمایش شود.

در مورد فروم اول هم ، انتقال کمک می کند بتوانم قدرت مانور بیشتری روی اون داشته باشم.
البته در مورل فروم اول یعنی saalek110.rf.gd الان کار می کند و من تالارهای خصوصی را که اینجا نمایش ندادم ، اونجا می توانم استفاده کنم. اون فروم کاربر داره و در حال استفاده از اون فروم هستند ، و قرار نیست اون فروم نابود شود... ممکن است هم در اونجا پست بزنم و هم اینجا... نباید وسواس داشت... میشه از مزایای هر دو حالت دست نویس و قالب آماده استفاده کرد.
 

saalek110

Well-Known Member
ادیتور فروم و فایل جایگزین سازی:

در این فروم دست نویس ، ادیتور نیاز داریم.

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


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

saalek110

Well-Known Member
من دارم آماده میشم بروم جداول فروم دوم را بیاورم.....
برای همین ۴ جدول فروم اول را پیشوند f1 بهش دادم. مخفف فروم ۱.
عکس زیر:

Screenshot_۲۰۲۴-۰۱-۲۵_۱۰۲۰۲۱.jpg

اون جدول posts اضافه است ، باید پاک بشه.
 

saalek110

Well-Known Member
انتقال جداول فروم دوم:





کار آوردن ۴ جدول فروم دوم که ۵۰۰ ست دارد کلا یک دقیقه یا نهایتا دو دقیقه طول کشید.

فایل سنگینش که پستها هست ۳۰۰ کیلو است یعنی یک سوم مگا. و ۳ فایل دیگر روی هم ۱۰۰ کیلو نمیشه. یعنی ۴ فایل جمعا ۴۰۰ کیلو حجم داره، حجم یک عکس است.



قبل تغییر نام ۴ فایل آورده شده خوبه شما ببینینید.


Screenshot_۲۰۲۴-۰۱-۲۵_۱۰۴۳۰۶.jpg



در عکس بالا فایلهایی که پیشوند phpbb دارد را الان آوردم. می خواهم به اونها پیشوند f2 بدهم.

بعد تغییر نام حالا چنین شد:


Screenshot_۲۰۲۴-۰۱-۲۵_۱۰۵۱۰۶.jpg

الان دو سری جدول ۴ جدولی داریم ، با پیشوندهای f1 و f2
 

saalek110

Well-Known Member
روش های دیگری هم میشد کار کرد ، مثلا یک دیتابیس دیگر می ساختم و با فایل کانکشن متفاوت کدهای هر کدوم کار می کرد. شاید اون روش بهتر بود ، شاید هم نه. فکر نکنم زیاد فرقی بکنه. ولی به نظرم داشتن دو تا دیتابیس یک کم از لحاظ روانی بارش بیشتره. البته نظر شخصی است. یکی ممکنه بگه اون جوری مطمئن تره. بگذریم.

ساخت تابع برای مدیریت دو دسته جدول از دو فروم:

من یک تابع می سازم ، که نام ۴ جدول ورودی های اون است. این جوری:
PHP:
my_function(posts,topics,forums,users)
{

}
و در بالای صفحه اول سایت ، یک بار با اسامی جداول فروم اول این تابع فراخوانی میشه ..
و پایین صفحه اول سایت ، با اسامی جداول فروم دوم این تابع فراخوانی میشه.

و تابع می آید بالای صفحه صفحه اول سایت لیست تالارهای فروم اول را چاپ‌ می کند..
و در پایین صفحه صفحه اول سایت لیست تالارهای فروم دوم را لیست می کند.

قبلش باید بروم باز در جدول فروم ها ، یک ستون با نام kenar بسازم و تالارهای خصوصی را مقدار ۱ بدهم در این ستون. مثل کاری که در فروم اولی کردم.

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

حالا باید کدهایی که الان در صفحه اول است منتقل شود به تابع ئی که گفتم.
 

saalek110

Well-Known Member
کد صفحه اول حالا اینه:

PHP:
require "base/ccoonn.php";
     include"functions/my_index.php";
         mysqli_set_charset($ccoonn, "utf8");

   my_index("f1_posts","f1_topics","f1_forums","f1_users",1);

  my_index("f2_posts","f2_topics","f2_forums","f2_users",2);

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



اون عدد ۱ و ۲ که ته خط فراخوانی تابع است ، به تابع اطلاع می دهد که کدوم فروم تابع را فراخوانی کرده، البته از اسم جدول ها هم معلوم بود ولی این جوری سیستمیک تر است.

حالا تابع چاپ تالارها با توجه به اون عدد که اسمش $halat ، یعنی حالت است ، بین فروم ها فرق می ذاره ، مثلا رنگ متفاوتی بهشون می زنه.


در عکس زیر می بیند که تالارهای فروم دوم با استفاده از متغیر $halat رنگ متفاوتی گرفته اند.
Screenshot_۲۰۲۴-۰۱-۲۵_۱۲۰۶۲۵.jpg

در عکس بالا همچنین می بینید امروز پنجشنبه است و دقیقا یک هفته از افتتاح تاپیک گذشته و ساعت ۱۲ ظهر است.. و شارژ تبلت من ۸۱ درصد است ... و اون پایین می بینید من هنوز از ادیتور ACE استفاده می کنم ، چون ادیتور بهتری هنوز پیدا نکردم. آیکون قشنگی داره. ازش راضی ام ولی وقتی تبلیغ میاد قفل میشه و باید ببندم از اول باز کنم. و نرم افزاری که من عکس میگیرم اسمش screenshot touch است و شکل ایکونش در عکس بالا ، اون پایین مشخص است
 

saalek110

Well-Known Member
خوب... این از صفحه اول...
حالا برویم سراغ صفحه forums

یک پروتکل انتقال داریم به نام GET و روشش این جوری است که در لینک عددی یا متنی همراه لینک ارسال میشه.
خط زیر را ببینید:
PHP:
        echo'<a href="forums.php?f='.$forum_id.'">'.$name.'</a>';
در کد بالا لینک داده به صفحه forums.php ولی می بینید بعد لینک علامت سوال گذاشته و مساوی قرار داده و متغیر forum_id را به عنوان f فرستاده به اون صفحه.
حالا چون کد php است کمی شلوغ است ، ترتمیزش این طوری میشه:
کد:
forums.php?f=12

در فایل forums.php این خط کد را داریم:
PHP:
     $f=$_GET['f'];
در کد بالا اون عدد که در لینک ارسال شده بود ، در متغیر $f ریخته شده.

پس راهی برای ارتباط صفحه اول سایت من با صفحه نمایش تالارها هست.

کل پروتکل GET همین دو خط بود.
ولی نمی دونم چرا infinityfree این پروتکل را از کار انداخت یکی دو ماه پیش و من مجبور شدم همه پروتکل ها را با روش POST بنویسم. در روش پست در فایل مبدا یک فرم با دکمه داریم ، روش دریافتش را هم که بارها در تمرینات فرم دیدید....
PHP:
$f=$_POST['f'];
همون کدهایی است که من اسمشون را جواب به فرم گذاشتم.

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

حالا برگردیم به فروم دوقلوی من.

الان قسمت بالاده یعنی تالارهای قسمت بالای صفحه اول سایت من درست کار می کنند ،
چون فایل forums.php داره با ۴ جدول با پیشوند f1 کار می کنه ... همون جداول فروم اول ...
ولی باید وقتی پایین ده ، یعنی تالارهای پایین صفحه اول بهش پیام می دهند باید با جداول با پیشوند f2 کار کند.....


راه حل چیست؟
الان در لینک شماره تالار برای فایل forums.php ارسال میشه ولی این فایل باید بدونه از کدوم جدول بخونه ، با پیشوند f1 یا پیشوند f2.‌خوب یک راهش اینه وقتی صداش می زنیم علاوه بر شماره تالار ، شماره پیشوند را هم بگیم. مثلا این جوری:
کد:
forums.php?f=12&h=2

h اول کلمه حالت است. یعنی داره به فایل forums.php میگه جداول سری دوم را استفاده کن.

و کدش این میشه:
PHP:
$f=$_GET['f'];
$h=$_GET['h'];

من راه ارتباط صفحه اول با صفجه بعدی را گفنم.
صفحه دوم با توجه به شماره تالار ، میره نگاه می کنه ببینه والد کدوم تالارها و تاپیک ها این شماره است ، اونها را لیست می کند.
یک کوئری select است و یک WHERE ... یعنی وقتی که...
کوئری اش اینه:
SQL:
         $sql = "SELECT * FROM forums WHERE parent_id=$f";

       $sql = "SELECT * FROM topics WHERE forum_id=$f";
پس در فایل forums.php فرزندان شماره تالار f که با خط
$f=$_GET['f'];

اول صفحه دریافت کردیم . شامل تالارها و تاپیکها با دو کوئری بالا.
چون هر تالار ممکن اسن هم زیرتالار داشته باشه و هم تاپیک.

می مونه اون متغیر $h که مشخص می کنه کدوم فروم است f1 یا f2
خب یک if می نویسیم میگیم اگر h یک بود فلان کوئری را اجرا کن و اگر h دو بود فلان کوئری را اجرا کن.
فقط کوئری صفحه forums.php برای دو فروم دوقلو فرق داره. کدش:
PHP:
if ( $h==1)

       $sql = "SELECT * FROM f1_forums WHERE parent_id=$f";

if ($h==2)
       $sql = "SELECT * FROM f2_forums WHERE parent_id=$f";

پس فقط کوئری های فایل forums.php برای دو حالا h فرق داره. چون برای تالارها ی کوئری داره و برای تاپیک ها یک کوئری گفتم کوئری ها.

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

جدیدترین ارسال ها

بالا