نمایش نتایج 1 تا 23 از 23

نام تاپیک: ... again Online Users

  1. #1

    ... again Online Users

    با سلام
    قبلا من در مورد الگوریتم این کار (تشخیص کاربران آنلاین) یه تاپیک زده بودم٬ اما حالا یه چیزایی گیرم اومده (راستش رو بخواین از rob تو community server)!
    ایشون در جواب بنده گفتن که شما باید یه SnapShot برای کنترل زمان آخرین فعالیت کاربران بسازی که با مثلا 10 دقیقه پیش تا حالا مقایسشون بکنه.
    خوب من هم یه Timer رو به کار گرفتم که هر n دقیقه یکبار میره و LastActive کاربران رو چک میکنه و تشخیص میده که از m دقیقه پیش(تو این سایت 5 دقیقه) تا حالا فعال بودند یا نه!
    و اما مشکل:
    من تو این موندم که
    1. بر چه مبنایی Active بودن کاربر رو تشخیص بدم؟
    2. کاربران مهمان (guest) رو چیجوری بشناسم؟

    و ...

    (البته باید بگم که من قبلا برای همه اینها یه روشهایی پیدا کرده بودم اما حالا میخوام که بهترین و بهینه ترین روش رو پیدا کنم!)

    با تشکر.

  2. #2
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    سن
    47
    پست
    88
    روشی که من استفاده کردم و تقریبا جواب گرفتم:
    1- یک جدول با دو فیلد نام کاربر و زمان تعریف کنید.(زمان بصورت time stamp)
    2- هنگام login هر کاربر و در session_start جدول فوق را پر کنید
    3- حالا باید یک روال بنویسید که با توجه به زمان فعلی٬ اطلاعات جدول خوانده و نام کاربران نمایش داده بشود.

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

  3. #3
    کاربر دائمی آواتار mohsen99
    تاریخ عضویت
    مرداد 1383
    محل زندگی
    Microsoft
    پست
    144
    - یک جدول با دو فیلد نام کاربر و زمان تعریف کنید.(زمان بصورت time stamp)
    2- هنگام login هر کاربر و در session_start جدول فوق را پر کنید

    اگر کاربر بدون logout از سایت خارج شد چی؟؟؟

  4. #4
    با سلام
    با تشکر از دوستان.
    من یکم دیگه روش فکر کردم و یه کم کدهای ASP.NET Forums رو بررسی کردم و به این نتیجه رسیدم:
    برای کنترل اینکه کاربر آنلاین هست یا نه٬ باید زمان آخرین فعالیتش رو با زمان حال(البته دقیقتر با n دقیقه پیش تا حالا که n قابل تنظیم هست و همونطور که گفتم تو این سایت برنامه نویس برابر 5 هستش) مقایسه بکنه! خب حالا::
    باید تو Page_Load هر صفحه و در هنگام Login شدن کاربر٬ زمان آخرین فعالیت update بشه٬ همین!
    بعدش هم که گفتم یه کلاس Timer (که کار همون snap shot رو میکنه) داشته باشیم که مثلا هر 10 دقیقه بیاد و
    1. اطلاعات مربوط به کاربران آنلاین قبلی رو از جدول مربوط به کاربران آنلاین پاک کنه!
    2. تمام کاربران رو چک کنه و آنلاین بودنشون رو مشخص کنه.
    3. کاربرانی که آنلاین بودنشون تایید شد٬ تو جدول مربوط به کاربران آنلاین ذخیره بشه.
    تمام.
    حالا من موندم که این روش بهترین و بهینه ترین روشه (چک کردن تمام کاربران! مثلا برای سایتی که 1 میلیون کاربر داره٬ اونم مثلا هر 10 دقیقه! :shock: مسلما چنین سایتی کاربران آنلاین زیادی هم داره پس پدر سرور در میاد که! (:D) )
    نظری ٬ چیزی؟
    با تشکر.

  5. #5
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    سن
    47
    پست
    88
    اگر کاربر بدون logout از سایت خارج شد چی؟؟؟
    ما کاری به logout شدن کاربر نداریم. چون مهم زمان login شدن کاربر است.
    ببینید در مرحله 3 کاربران آنلاین چطور بدست می آیند.
    در مرحله 2 نام کاربر و زمان login شدن آن در جدول ثبت میشود. و شما با داشتن زمان فعلی و مثلا زمان 10 دقیقه قبل ٬‌ به راحتی می توانید کاربرانی که زمان لاگین شدن آنها از 10 دقیقه قبل به بعد باشد را بدست آورید.

  6. #6
    با سلام
    آقای سلیمیان٬ روش شما یه مشکلی داره:
    اگه از زمان Login شدن کاربر بیش تر از 10 دقیقه بگذره و کاربر هنوز هم آنلاین باشه چی؟

    در ضمن کسی نیست که در مورد سوال من نظرشو بگه؟
    موفق باشین.

  7. #7
    مقاله جالبی است در مورد بازدید کنندگان
    http://www.stardeveloper.com/article...2102501&page=1

  8. #8
    در این مورد ، بهترین روش ، روشی است که اورکات ازش استفاده میکنه ؛
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  9. #9
    یکی از راه حل های استاندارد این امر که در اکثر فوروم های php و امثال آن استفاده می شود ، در مقاله ی php‌ زیر بررسی شده :

    http://www.phpbuddy.com/article.php?id=15



     Overview: You must have seen on some sites displaying the number of users online, this scripts exactly does that it displays number of users currently browsing your site.
    The table structure

    CREATE TABLE useronline (
    timestamp int(15) DEFAULT '0' NOT NULL,
    ip varchar(40) NOT NULL,
    file varchar(100) NOT NULL,
    PRIMARY KEY (timestamp),
    KEY ip (ip),
    KEY file (file)
    );

    User's Online Displays the numbers of users on your website at any one time.

    <?php
    $server = "xxx";
    $db_user = "xxx";
    $db_pass = "xxx";
    $database = "xxx";
    $db = mysql_connect($server, $db_user,$db_pass);
    mysql_select_db($database,$db);
    $timeoutseconds = 300; //5 minutes
    $timestamp = time();
    $timeout = $timestamp-$timeoutseconds;
    $insert = mysql_query("INSERT INTO useronline VALUES ('$timestamp','$REMOTE_ADDR','$PHP_SELF')" ,$db);
    if(!($insert)) {
    print "Useronline Insert Failed > ";
    }
    $delete = mysql_query("DELETE FROM useronline WHERE timestamp<$timeout",$db);
    if(!($delete)) {
    print "Useronline Delete Failed > ";
    }
    $result = mysql_query("SELECT DISTINCT ip FROM useronline WHERE file='$PHP_SELF'",$db);
    if(!($result)) {
    print "Useronline Select Error > ";
    }
    $user = mysql_num_rows($result);
    mysql_close();
    if($user == 1) {
    print("$user user online\n");
    } else {
    print("$user users online\n");
    }
    ?>



    در این مقاله جدولی برای یوزرهای آنلاین با رکوردهایی از 5 دقیقه قبل درست شده.
    سپس IP‌ های یونیک کاربران حاضر در سایت در دیتابیس ذخیره می شود.
    در ادامه این افراد اضافه شده در این بازه زمانی (که بر اساس زمان استاندارد یونیکس کار کرده) شمارش می شوند و همچنین یوزرهای قبل از 5 دقیقه قبل از این جدول حذف می شوند. (با توجه به فیلد file‌ آن، این کانتر یوزرها روی هر صفحه ای ، به صورت جداگانه قابل اعمال است)

    خوب! این مقاله برای نمایش دادن تمام کاربران حاضر در سایت مناسب است. (چه یوزر و چه مهمان)


    برای توسعه آن می توان کمی سورس رو تغییر داد.
    یک فیلد is_user‌ بهتر است به جدول اضافه شود با مقدار پیش فرض صفر (یعنی مهمان). (حالت یک یعنی یوزر)
    کاربری که به سایت وارد شده (فرقی نمی کند چه وضعیتی دارد) با پیش فرض صفر (مهمان)، آی پی اش ثبت می شود.
    سپس هنگامیکه لاگین کرد، در لحظه چک کردن یوزر نیم و پسورد ، در همین جا آی پی او با فیلد is_user=1 ثبت می شود. (اگر آی پی تکراری بود و در مشخصات بازدیدکنندگان از 5 دقیقه قبل وجود داشت ، فقط بیت مربوط به is_user‌ به 1 باید ادیت و آپدیت شود. )
    در این حالت کوئری نهایی به سادگی بر اساس فیلد is_user‌ قابل انجام است (چه از لحاظ نمایش تعداد یوزرها و مهمانها ، چه از لحاظ نمایش اسامی و چه از لحاظ نمایش تصاویر و avatars .)

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

    در آخر‌ با یک فایل php جداگانه برای سورس فوق و سپس include‌ کردن آن در سورس صفحه می توان این مورد را به یک ماژول تبدیل کرد (برای استفاده مجدد از کد).
    در ASP.NET‌ با یک یوزر کنترل ، کار به صورت ماژول قابل استفاده مجدد در می آید.

  10. #10
    روش فوق حتی از استفاده از Session ها هم بدتر هست ، علی الخصوص در محیط PHP . کد فوق ( و کدهائی از این دست ) بدون توجه به ماهیت زبان ( یعنی PHP ) دائما" در حال ایجاد و قطع ارتباط با بانک اطلاعاتی هستند ( هر بار فراخوانی این توابع یک اتصال مبتنی بر سوکت با بانک اطلاعاتی ایجاد میکنه ) و پر واضحه استفاده از این روشها چه تاثیرات منفی روی یک سایت با ویزیتورهای نسبتا" بالا داره .

    همونطور که عرض شد هوشمندانه ترین روش مدیریت کاربران حاضر یک سایت خصوصا در محیطهائی مثل دات نت استفاده از روشی است که سایت اورکات ازش استفاده میکنه . یعنی ضمن اینکه از Session برای شناسائی حرکات کاربر استفاده میشه ، از کنترل MS-XML و پروتکل XMLHTTP برای انتقال لحظه ای اطلاعات و حرکات کاربر استفاده میکنه . به عنوان مثال وقتی شما قصد دارید Fan ها رو تغییر بدید ، علی الظاهر هیچ اطلاعاتی از طریق برنامه دات نت منتقل نمیشه ، از کوکی هم استفاده نمیشه ( که اگر اینطور میبود تغییرات روی یک ماشین دیگه معتبر نمیبود ) یا اطلاعات توسط متغیرهای جلسه ذخیره و ارسال نمیشن ، بلکه با کلیک روی هر شکل یا علامت ، جاوا اسکریپت خاصی فعال میشه که با ساختن یک نسخه از MS-XML ، روند فعالیتهای کاربر رو بدون اینکه از اون صفحه خارج بشه یا اطلاعاتی رو Post یا Get کنه به سرور منتقل میکنه . به این ترتیب تنها چیزی که یک سرور برای هندل کردن فعالیتهای کاربری - لحظه به لحظه - احتیاج داره پهنای باند قابل قبول و دیتا ترنسفر لازم هست ؛ با استفاده از این تکنیک حتی میشه فعالیت کاربر داخل یک صفحه وب رو هم کنترل کرد ، بدون اینکه از یک صفحه به صفحهء دیگه بره ! ( حتی در یک مثال رویائی ، سرور میتونه مطلع بشه کاربر همین حالا داره توی ادیتورش یه چیزی مینویسه ، که حتی اگر یک ساعت هم طول بکشه ، بار اون یه جورائی داخل اون سایت هست و فعاله :P )

    موفق باشید :)
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  11. #11
    روش فوق حتی از استفاده از Session ها هم بدتر هست ، علی الخصوص در محیط PHP . کد فوق ( و کدهائی از این دست ) بدون توجه به ماهیت زبان ( یعنی PHP ) دائما" در حال ایجاد و قطع ارتباط با بانک اطلاعاتی هستند ( هر بار فراخوانی این توابع یک اتصال مبتنی بر سوکت با بانک اطلاعاتی ایجاد میکنه ) و پر واضحه استفاده از این روشها چه تاثیرات منفی روی یک سایت با ویزیتورهای نسبتا" بالا داره .
    مطلب فوق کاملا صحیح است، چه باز و بسته شده کانکشن های زیاد و چه مصرف حجم زیادی از حافظه ی سرور با سشن ها .... ولی در سایت هایی با تعداد بازدید کننده 200 تا 300 در روز آنچنان به نظر نمی رسد (البته بحث اورکات و حجم کاربران آن مسلما یک استثناء است.).

    در php مفهومی به نام Persistent Database Connections برای حل این مشکل وجود داره .
    Persistent connections are good if the overhead to create a link to your SQL server is high
    .

    http://ir.php.net/features.persistent-connections
    هر چند معایب و مزایای خاص خودش را دارد.


    در ASP.NET هم Connection pooling وجود دارد :
    http://www.dotnetspider.com/Technology/KBPages/346.aspx


    ولی همان overhead های ذکر شده جزء جدایی ناپذیر تمام این روش ها هستند (حتی فرستادن مشخصات از طریق XML‌ و ذخیره سازی آن در دیتابیس برای آنالیزهای بعدی هم اینطور است).

  12. #12
    البته بحث اورکات و حجم کاربران آن مسلما یک استثناء است

    ارسال اطلاعات به یک برنامهء وب یا یک سرویس وب ، نیازمند پهنای باند مناسب و توانائی پاسخگوئی سرور است ( بدون توجه به مقیاس ) اما برقراری اتصال با بانکهای اطلاعاتی یا استفاده از متغیرهای سمت سرور الزاما" به حافظهء بالا و توانائی قابل قبول پردازندهء سرور نیاز داره ؛ برقراری هر اتصال زمان و حافظه مخصوص به خودش رو میطلبه و باز نگهداشتن اون اتصال ( که در مورد MySQL چندان قابل اعتماد نیست ) هزینه های خاص خودش رو داره ، ضمن اینکه به هیچ وجه امکان ردیابی واقعی فعالیتهای کاربر - با تفاصیلی که گفته شد - با استفاده از تکنیکهائی مثل Session وجود نداره . در واقع برنامه نویسان هوشمند اورکات بهترین تکنیک رو برای Trace "کلیه" رفتارهای مهمانان اورکات بکار بردن که ارتباطی با حجم و مقیاس میزبانی اورکات نداره ؛ طبیعتا" گوگل با یکی از بزرگترین کلاسترهای مبتنی بر وب ، از پس هندل کردن چندین برابر ترافیک فعلی هم بر میاد ، لیکن وقتی بحث User Modeling و کیفیت کد بصورت همزمان مطرح باشه ، استفاده از Session یا بانکهای اطلاعاتی موقت ، راه حلهای چندان جالبی به نظر نمیرسن ، هر چند به عنوان یک نمونه ایراد ، استفاده از تکنیکهائی مانند آنچه گفته شد ، میتونه کاربران سایر مرورگرها رو بعضا" با مشکل مواجه کنه ( هر چند بخش اعظم کاربران از IE یا خانوادهء موزیلا : موزیلا ، فایرفاکس ، نت اسکیپ ) استفاده میکنن . ( کسانی که با اپرا اورکات رو مرور کردن حتما" میدونن چی دارم میگم )

    موفق باشید
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  13. #13
    کاربر تازه وارد
    تاریخ عضویت
    بهمن 1381
    محل زندگی
    تهران
    سن
    47
    پست
    88
    جناب MSYNK من برای تقریبی این مشکل در page_load بعضی صفحات و همچنین در یوزر کنترلی که این عملیات در آن صورت می گیرد. کاربر فعال را به همان جدول مفروض اضافه میکنم:
    if (Context.User.Identity.IsAuthenticated)
    {
    // todo : codes for insert current authenticated user info to table
    }

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

  14. #14
    با سلام
    سخنان جناب اینپرایز کاملا متینه!
    چون من قبلا از همین روش سشنها استفاده میکردم که واقعا هم نفسگیر هستش؟
    اما روشی که تو ASP.NET Forums استفاده شده همونیه که در بالا گفتم منتها به جای گشت و گذار زیاد در سرور اونا (منظورم بهترین برنامه نویسهای ASP.NET هستش) به استفاده زیاد از Cache علاقه دارن (:D)
    در این حالت دیگه زیاد اتصال و قطع اتصال با دیتابیس (که در برنامه نویسی تحت وب به عنوان پرهزینه ترین کارها از اونها یاد میشه) نداریم! که خودش مزیت بزرگیه٬ مگه نه؟
    راستی اگر phpBB هم از روش سشن ها استفاده میکنه پس این سرعت به نسبت خوبش ماله چیه؟ (منظورم تو یه سایت پرطرفدار مثل خود www.phpBB.com هستش)
    با تشکر.

  15. #15
    روش فوق حتی از استفاده از Session ها هم بدتر هست ، علی الخصوص در محیط PHP . کد فوق ( و کدهائی از این دست ) بدون توجه به ماهیت زبان ( یعنی PHP ) دائما" در حال ایجاد و قطع ارتباط با بانک اطلاعاتی هستند ( هر بار فراخوانی این توابع یک اتصال مبتنی بر سوکت با بانک اطلاعاتی ایجاد میکنه ) و پر واضحه استفاده از این روشها چه تاثیرات منفی روی یک سایت با ویزیتورهای نسبتا" بالا داره .
    در بخش php هم چند بار به نکاتی شبیه این اشاره کردید آیا امکانش هست که توضیحدهد چرا php از نظر شما در کار با DB ضعیف است؟
    Artists use lies to tell the truth while politicians use them to cover the truth up

  16. #16
    مهمان
    جناب اینپرایز میشه نمونه کد برای این روش که فرمودین هم بفرمایید
    با تشکر

  17. #17
    نقل قول نوشته شده توسط houtanal
    روش فوق حتی از استفاده از Session ها هم بدتر هست ، علی الخصوص در محیط PHP . کد فوق ( و کدهائی از این دست ) بدون توجه به ماهیت زبان ( یعنی PHP ) دائما" در حال ایجاد و قطع ارتباط با بانک اطلاعاتی هستند ( هر بار فراخوانی این توابع یک اتصال مبتنی بر سوکت با بانک اطلاعاتی ایجاد میکنه ) و پر واضحه استفاده از این روشها چه تاثیرات منفی روی یک سایت با ویزیتورهای نسبتا" بالا داره .
    در بخش php هم چند بار به نکاتی شبیه این اشاره کردید آیا امکانش هست که توضیحدهد چرا php از نظر شما در کار با DB ضعیف است؟

    ضعیف نیست عزیز برادر ؛

    PHP دو نوع اتصال با بانکهای اطلاعاتی میتونه ایجاد کنه ، یکی اتصالهای موقت یکی اتصالهای مانا . در حالت اول به ازای در درخواست یه اتصال برقرار میشه ، در حالت دوم به ازای در هر صفحه یه اتصال برقرار میشه و اتصال باقی میمونه تا timeout . بهر حال در محیط PHP ما یا با خیل عظیمی از درخواستهای اتصال به بانک اطلاعاتی مواجه هستیم یا با اتصالهای متعددی که باز موندن که هر دو Load قابل توجهی روی DataBase Server ایجاد میکنن . ASP .NET با استفاده از ADO .NET و ویژگی Connection Pooling و Connection Cache ای که داره ، این نقیصه رو بر طرف کرده .

    میشه نمونه کد برای این روش که فرمودین هم بفرمایید
    عرض کردم : اورکات .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  18. #18
    مهمان
    اورکات مگه اپن سورسه؟
    با تشکر

  19. #19
    دو نوع اتصال با بانکهای اطلاعاتی میتونه ایجاد کنه ، یکی اتصالهای موقت یکی اتصالهای مانا . در حالت اول به ازای در درخواست یه اتصال برقرار میشه ، در حالت دوم به ازای در هر صفحه یه اتصال برقرار میشه و اتصال باقی میمونه تا timeout . بهر حال در محیط PHP ما یا با خیل عظیمی از درخواستهای اتصال به بانک اطلاعاتی مواجه هستیم یا با اتصالهای متعددی که باز موندن که هر دو Load قابل توجهی روی DataBase Server ایجاد میکنن
    برای جلوگیری از این حالت چه راهی هست؟(اصلا هست؟!)در صورتی که این نقیصه در php وجود دارد سایت های بزرگی که از این زبان استفاده کرده اند (با توجه به تعداد خدمات گیرنده بالا در روز) چگونه این مشکل را حل کرده اند؟
    Artists use lies to tell the truth while politicians use them to cover the truth up

  20. #20
    اورکات مگه اپن سورسه؟
    HTML و جاوا اسکریپتهای موجود در هر سایتی اصولا" Open Source هستند ! :roll:

    اصلا هست؟
    بله . راه حلهای متفرقه متعددی وجود داره .

    در صورتی که این نقیصه در php وجود دارد سایت های بزرگی که از این زبان استفاده کرده اند (با توجه به تعداد خدمات گیرنده بالا در روز) چگونه این مشکل را حل کرده اند؟
    ببین مسئله دقیقا اینه : تو میتونی Load کمتری روی سرور بانک اطلاعاتی داشته باشی و خرج کمتری برای تقویت سرور بکنی ؛ یا هر وقت سیستمت جواب نداد تقویتش کنی و به کارت ادامه بدی ؛ این یه انتخابه . یقینا" وقتی یه سایت بزرگ با متقاضیان متعدد داره با PHP بدون مشکل کار میکنه ، اگر توان سرور بانک اطلاعاتیش رو کم کنه دیگه قادر به فعالیت نخواهد بود ، از اون طرف ، با استفاده از تکنیکهای عرض شده ( مثلا" دات نت ) میشه تعداد کاربران رو افزایش داد بدون اینکه لازم باشه توانائی سخت افزاری سرور افزایش پیدا کنه .

    خوش باشید
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  21. #21
    مهمان
    نه منظورم بیشتر نحوه ی استفاده از از اون چیزی است که خودتون گفتید اطلاعات را ارسال می کند یعنی همین موضوع که شما گفتید در حالت رویایی می توانید ادیتور کاربر را بخوانید . آیا اون صرفا با جاوا اسکریپت بود؟
    با تشکر

  22. #22
    آره . جاوا اسکریپت وظیفه اش ساختن یک شیء XMLHTTP هست . پس هز جا که بشه جاوا اسکریپت اجرا کرد ( مثلا" در رخدادگران ورود اطلاعات به یک EditBox ) میشه اطلاعات رو ارسال کرد .
    UNIX is simple. It just takes a genius to understand its simplicity
    -- Dennis Ritchie

  23. #23
    مهمان
    خیلی ممنون
    راستی یه سوال دیگه نقش XML این وسط چیه؟
    با تشکر

تاپیک های مشابه

  1. Users profile in AD
    نوشته شده توسط houtanal در بخش شبکه و Networking‌
    پاسخ: 3
    آخرین پست: چهارشنبه 06 شهریور 1387, 19:41 عصر
  2. پیداکردن مسیر پوشه All Users
    نوشته شده توسط hedi در بخش برنامه نویسی در Delphi
    پاسخ: 2
    آخرین پست: جمعه 12 بهمن 1386, 20:58 عصر
  3. dataBase & Users acount
    نوشته شده توسط فریدی در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 7
    آخرین پست: دوشنبه 01 مرداد 1386, 11:25 صبح
  4. Dcom Users
    نوشته شده توسط mzjahromi در بخش برنامه نویسی در Delphi
    پاسخ: 3
    آخرین پست: پنج شنبه 22 دی 1384, 13:17 عصر
  5. allow and deny users
    نوشته شده توسط PrinceDotNet در بخش ASP.NET Web Forms
    پاسخ: 1
    آخرین پست: پنج شنبه 02 تیر 1384, 13:36 عصر

قوانین ایجاد تاپیک در تالار

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