کاربر تایید شده
آخرین فعالیت ١ ماه پیش

@mahdi_mahdi

پارس کلیکی از ۸ ماه پیش

تجربه

2200

  • ٣ ماه پیش @mahdi_mahdi یک گفتگو به اسم تامین امنیت در ورود به سایت درست کرد.

    سلام رفقا .

    من برای ورود کاربر به سایتم همچنین کاری رو می کنم: بررسی می کنم ببینم آیا کاربری که درخواست ارسال کرده داخل دیتابیس ام هس یا نه (بررسی های وجود نام کاربری، یکی بودن گذرواژه وارد شده با گذرواژه هش شده و ....)

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

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

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

    امکانش هست دوستانی که مطلع هستند . راهنمایی بفرمایند؟

    پیشاپیش از محبت دوستان مچکر و سپاسگذارم :)

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

  • ممنونم از همه دوستانی که من رو محروم نکردند از دیدگاهشون

    @mas1375 عزیز باعث خوشحالی من هست که بتونم کدهام رو در معرض دید شما قرار بدم. اما متاسفانه اکثریت پروژه های من خصوصی هستند و امکان منتشر کردن اونها وجود نداره.

    @shahryarjb و @president عزیز . یکی دیگه از دلایل اصلی من به خاطر عدم استفاده از لاراول چیزی هست که @matin عزیز گفته.

    @matin شما تجربه ای داری؟ این نکته رو هم باید عرض کنم که وب اپلیکیشن قرار هست روی شبکه داخلی سازمان بالا بیاد و دسترسی خارجی وجود نخواهد داشت

  • ۴ ماه پیش @mahdi_mahdi یک گفتگو به اسم کد نویسی با فریم ورک یا از پایه نویسی MVC درست کرد.

    سلام دوستان، امیدوارم اصل حالتون عالی باشه:)

    من چند سالی هست که دارم با php کد می زنم و وب اپلیکیشن تولید می کنم. عموما وب اپلیکیشن هایی که تولید کردم رو خودم از بیس نوشتم PHP MVC . طی روزهای آتی قرار هست یه برنامه ی تحت وب رو برای سازمان دولتی بنویسم. یه برنامه ای که تو مرور زمان قرار هست دیتا زیادی بهش وارد بشه.

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

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

    به نظر شما برای چنین پروژه ای سمت فریم ورک (لاراول) بیام یا اینکه با فریم ورک شخصی کار رو پیش ببرم؟ اگر پاسختون مثبت و یا منفی هست لطفا من رو از خوندن دلایلتون محروم نکنید

    دوستدارتونم :)

  • ۴ ماه پیش @mahdi_mahdi به گفتگوی کار با گیت در ایران جواب داد.

    ممنونم از پاسخ کاملتون. منتهی منظور من از ست کردن dns چیزه دیگه ای بود. شرکت هایی رو دیدم که از سایت dynu.net ساب دامین رایگان میگیرند و پروژه گیت خودشون رو با ساب دامینی که از این سایت گرفتند مدیریت می کنند.

    مثلا وقتی آدرس myurl.dynu.net رو میزنند صفحه ورود گیت لب باز میشه و....

  • ۴ ماه پیش @mahdi_mahdi یک گفتگو به اسم کار با گیت در ایران درست کرد.

    سلام رفقا :)

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

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

    چه راه حل هایی هست که بتونیم این مشکل رو رفع کنیم؟ تو برخی از شرکت های دیدم که dns تنظیم می کنند و... اما هیچ آشنایی با نحوه انجام اینکار ندارم.

    ممنون میشم راهنماییم کنید

  • ۴ ماه پیش @mahdi_mahdi به گفتگوی چگونگی ایجاد لایو فیلترینگ جواب داد.

    ممنونم راستش یکم برای من غیر قابل فهم بود مثالتون. امکانش هست کمی با توضیح بیشتر راهنماییم کنید؟ (با مثال که باشه عالیه)

  • ۵ ماه پیش @mahdi_mahdi به گفتگوی چگونگی ایجاد لایو فیلترینگ جواب داد.

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

    کد های جاوا اسکریپت و صدا زدن تابع ای جکس:

        $(function () {
            setResumeFilter();
        });
    
        $('#resume-status').on('change',function () {
            setResumeFilter();
        });
    
        $('#first-name').on('keyup',function () {
            setResumeFilter();
        });
        $('#last-name').on('keyup',function () {
            setResumeFilter();
        });
        $('#year-action').on('change',function () {
            setResumeFilter();
        });
        $('#signature').on('change',function () {
            setResumeFilter();
        });
        $('#dec-status').on('change',function () {
            setResumeFilter();
        });
        $('#item-count').on('change',function () {
            setResumeFilter();
        });
    

    محتویات تابع setResumeFilter :

        function setResumeFilter(index) {
            var resume_status               = $('#resume-status').val();
            var first_name                      = $('#first-name').val();
            var last_name                       = $('#last-name').val();
            var year_action                     = $('#year-action').val();
            var signature                       = $('#signature').val();
            var dec_status                      = $('#dec-status').val();
            var item_count                      = $('#item-count').val();
            var url_content                     =   'cv/cv_content/';
            var url_pagination              = 'cv/cv_pagination/';
    
            if(index == undefined){
                index = 1;
            }
    
            var form_data = new FormData();
            form_data.append("index", index);
            form_data.append("resume_status", resume_status);
            form_data.append("first_name", first_name);
            form_data.append("last_name", last_name);
            form_data.append("year_action", year_action);
            form_data.append("signature", signature);
            form_data.append("dec_status", dec_status );
            form_data.append("item_count", item_count);
            getPointerContent(url_content,url_pagination,form_data);
        }

    محتویات تابع getPointerContent :

    function getPointerContent(url_content,url_pagination,form_data) {
        $.ajax(base_url() + url_content,{
            type: 'POST',
            dataType: 'json',
            cache: false,
            contentType: false,
            processData: false,
            data:form_data,
            success: function(data){
                $('#content').empty();
                $('#content').append(data.content);
            }
        });
    }

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

    public function cv_content(){
    
            $string_if = '';
    
            if ($_POST['resume_status'] != 'unknow'){
                $resume_status = $_POST['resume_status'];
                $string_if .= '1';
            }else{
                $string_if .= '0';
            }
            if (!empty($_POST['first_name'])){
                $frist_name = arabicToPersian($_POST['first_name']);
                $string_if .= '1';
            }else{
                $string_if .= '0';
            }
            if (!empty($_POST['last_name'])){
                $last_name = arabicToPersian($_POST['last_name']);
                $string_if .= '1';
            }else{
                $string_if .= '0';
            }
            if ($_POST['year_action'] != 'unknow'){
                $year_action = convert_data_to_gregorian($_POST['year_action']);
                $string_if .= '1';
            }else{
                $string_if .= '0';
            }
            if ($_POST['signature'] != 'unknow'){
                $signature = $_POST['signature'];
                $string_if .= '1';
            }else{
                $string_if .= '0';
            }
            if ($_POST['dec_status'] != 'unknow'){
                $dec_status = $_POST['dec_status'];
                $string_if .= '1';
            }else{
                $string_if .= '0';
            }
    
            $item_count = $_POST['item_count'];
            $page_index = $_POST['index'] ;
            $start_item = ($page_index - 1) *  $item_count;
    
            switch ($string_if) {
                case '000000':
                    /*No Filter*/
                    $all_resume = CVModel::getResumeLimitNoFilter($start_item, $item_count);
                    break;
                case '100000':
                    /*Posted Status Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFilter($start_item, $item_count,$resume_status);
                    break;
                case '010000':
                    /*FirstName Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameFilter($start_item, $item_count,$frist_name);
                    break;
                case '001000':
                    /*LastName Filter*/
                    $all_resume = CVModel::getResumeLimitLastNameFilter($start_item, $item_count,$last_name);
                    break;
                case '000100':
                    /*Year Action Filter*/
                    $all_resume = CVModel::getResumeLimitYearActionFilter($start_item, $item_count,$year_action);
                    break;
                case '000010':
                    /*Signature Filter*/
                    $all_resume = CVModel::getResumeLimitSignatureFilter($start_item, $item_count,$signature);
                    break;
                case '000001':
                    /*Resume Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitDecStatusFilter($start_item, $item_count,$dec_status);
                    break;
                case '110000':
                    /*Posted Status && FirstName Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameFilter($start_item, $item_count,$resume_status,$frist_name);
                    break;
                case '101000':
                    /*Posted Status && LastName Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusLastNameFilter($start_item, $item_count,$resume_status,$last_name);
                    break;
                case '100100':
                    /*Posted Status && YearAction Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusYearActionFilter($start_item, $item_count,$resume_status,$year_action);
                    break;
                case '100010':
                    /*Posted Status && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusSignatureFilter($start_item, $item_count,$resume_status,$signature);
                    break;
                case '100001':
                    /*Posted Status && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusDecStatusFilter($start_item, $item_count,$resume_status,$dec_status);
                    break;
                case '011000':
                    /*FirstName && LastName Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameLastNameFilter($start_item, $item_count,$frist_name,$last_name);
                    break;
                case '010100':
                    /*FirstName && Year Action Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameYearActionFilter($start_item, $item_count,$frist_name,$year_action);
                    break;
                case '010010':
                    /*FirstName && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameSignatureFilter($start_item, $item_count,$frist_name,$signature);
                    break;
                case '010001':
                    /*FirstName && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameDecStatusFilter($start_item, $item_count,$frist_name,$dec_status);
                    break;
                case '001100':
                    /*Last Name && Year Action Filter*/
                    $all_resume = CVModel::getResumeLimitLastNameYearActionFilter($start_item, $item_count,$last_name,$year_action);
                    break;
                case '001010':
                    /*LastName && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitLastNameSignatureFilter($start_item, $item_count,$last_name,$signature);
                    break;
                case '001001':
                    /*LastName && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitLastNameDecStatusFilter($start_item, $item_count,$last_name,$dec_status);
                    break;
                case '000110':
                    /*Year Action && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitYearActionSignatureFilter($start_item, $item_count,$year_action,$signature);
                    break;
                case '000101':
                    /*Year Action && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitYearActionDecStatusFilter($start_item, $item_count,$year_action,$dec_status);
                    break;
                case '000011':
                    /*Signature && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitSignaturenDecStatusFilter($start_item, $item_count,$signature,$dec_status);
                    break;
                case '111000':
                    /*PostedStatus && FirstName && LastName Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameLastNameFilter($start_item, $item_count,$resume_status,$frist_name,$last_name);
                    break;
                case '110100':
                    /*PostedStatus && FirstName && Year Action Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameYearActionFilter($start_item, $item_count,$resume_status,$frist_name,$year_action);
                    break;
                case '110010':
                    /*PostedStatus && FirstName && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameSignatureFilter($start_item, $item_count,$resume_status,$frist_name,$signature);
                    break;
                case '110001':
                    /*PostedStatus && FirstName && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameDecStatusFilter($start_item, $item_count,$resume_status,$frist_name,$dec_status);
                    break;
                case '101100':
                    /*PostedStatus && LastName && Year Action Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusLastNameYearActionFilter($start_item, $item_count,$resume_status,$last_name,$year_action);
                    break;
                case '101010':
                    /*PostedStatus && LastName && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusLastNameSignatureFilter($start_item, $item_count,$resume_status,$last_name,$signature);
                    break;
                case '101001':
                    /*PostedStatus && LastName && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusLastNameDecStatusFilter($start_item, $item_count,$resume_status,$last_name,$dec_status);
                    break;
                case '100110':
                    /*PostedStatus && YearAction && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusYearActionSignatureFilter($start_item, $item_count,$resume_status,$year_action,$signature);
                    break;
                case '100101':
                    /*PostedStatus && YearAction && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusYearActionDecStatusFilter($start_item, $item_count,$resume_status,$year_action,$dec_status);
                    break;
                case '100011':
                    /*PostedStatus && Signature && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusSignatureDecStatusFilter($start_item, $item_count,$resume_status,$signature,$dec_status);
                    break;
                case '011100':
                    /*FirstName && LastName && YearAction Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameLastNameYearActionFilter($start_item, $item_count,$frist_name,$last_name,$year_action);
                    break;
                case '011010':
                    /*FirstName && LastName && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameLastNameSignatureFilter($start_item, $item_count,$frist_name,$last_name,$signature);
                    break;
                case '011001':
                    /*FirstName && LastName && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameLastNameDecStatusFilter($start_item, $item_count,$frist_name,$last_name,$dec_status);
                    break;
                case '010110':
                    /*FirstName && YearAction && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameYearActionSignatureFilter($start_item, $item_count,$frist_name,$year_action,$signature);
                    break;
                case '010101':
                    /*FirstName && YearAction && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameYearActionDecStatusFilter($start_item, $item_count,$frist_name,$year_action,$dec_status);
                    break;
                case '010011':
                    /*FirstName && Signature && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameSignatureDecStatusFilter($start_item, $item_count,$frist_name,$signature,$dec_status);
                    break;
                case '001110':
                    /*LastName && Year Action && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitLastNameYearActionSignatureFilter($start_item, $item_count,$last_name,$year_action,$signature);
                    break;
                case '001101':
                    /*LastName && Year Action && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitLastNameYearActionDecStatusFilter($start_item, $item_count,$last_name,$year_action,$dec_status);
                    break;
                case '001011':
                    /*LastName && Signature && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitLastNameSignatureDecStatusFilter($start_item, $item_count,$last_name,$signature,$dec_status);
                    break;
                case '000111':
                    /*Year Action && Signature && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitYearActionSignatureDecStatusFilter($start_item, $item_count,$year_action,$signature,$dec_status);
                    break;
                case '111100':
                    /*Psted Status && First Name && Last Name && YearAction Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameLastNameYearActionFilter($start_item, $item_count,$resume_status,$frist_name,$last_name,$year_action);
                    break;
                case '111010':
                    /*Psted Status && First Name && Last Name && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameLastNameSignatureFilter($start_item, $item_count,$resume_status,$frist_name,$last_name,$signature);
                    break;
                case '111001':
                    /*Psted Status && First Name && Last Name && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameLastNameDecStatusFilter($start_item, $item_count,$resume_status,$frist_name,$last_name,$dec_status);
                    break;
                case '110110':
                    /*Psted Status && First Name && YearAction && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameYearActionSignatureFilter($start_item, $item_count,$resume_status,$frist_name,$year_action,$signature);
                    break;
                case '110101':
                    /*Psted Status && First Name && YearAction && DecStatus Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameYearActionDecStatusFilter($start_item, $item_count,$resume_status,$frist_name,$year_action,$dec_status);
                    break;
                case '110011':
                    /*Psted Status && First Name && Signature && DecStatus Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameSignatureDecStatusFilter($start_item, $item_count,$resume_status,$frist_name,$signature,$dec_status);
                    break;
                case '101110':
                    /*Psted Status && Last Name && YearAction && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusLastNameYearActionSignatureFilter($start_item, $item_count,$resume_status,$last_name,$year_action,$signature);
                    break;
                case '101101':
                    /*Psted Status && Last Name && YearAction && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusLastNameYearActionDecStatusFilter($start_item, $item_count,$resume_status,$last_name,$year_action,$dec_status);
                    break;
                case '101011':
                    /*Psted Status && Last Name && Signature && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusLastNameSignatureDecStatusFilter($start_item, $item_count,$resume_status,$last_name,$signature,$dec_status);
                    break;
                case '100111':
                    /*Psted Status && YearAction && Signature && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusYearActionSignatureDecStatusFilter($start_item, $item_count,$resume_status,$year_action,$signature,$dec_status);
                    break;
                case '011110':
                    /*FirstName && LastName && YearAction && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameLastNameYearActionSignatureFilter($start_item, $item_count,$frist_name,$last_name,$year_action,$signature);
                    break;
                case '011101':
                    /*FirstName && LastName && YearAction && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameLastNameYearActionDecStatusFilter($start_item, $item_count,$frist_name,$last_name,$year_action,$dec_status);
                    break;
                case '011011':
                    /*FirstName && LastName && Signature && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameLastNameSignatureDecStatusFilter($start_item, $item_count,$frist_name,$last_name,$signature,$dec_status);
                    break;
                case '010111':
                    /*FirstName && YearAction && Signature && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameYearActionSignatureDecStatusFilter($start_item, $item_count,$frist_name,$year_action,$signature,$dec_status);
                    break;
                case '001111':
                    /*LastName && YearAction && Signature && Dec Status Filter*/
                    $all_resume = CVModel::getResumeLimitLastNameYearActionSignatureDecStatusFilter($start_item, $item_count,$last_name,$year_action,$signature,$dec_status);
                    break;
                case '111110':
                    /*Posted Status && First Name && Last Name && YearAction && Signature Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameLastNameYearActionSignatureFilter($start_item, $item_count,$resume_status,$frist_name,$last_name,$year_action,$signature);
                    break;
                case '111101':
                    /*Posted Status && First Name && Last Name && YearAction && DecStatus Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameLastNameYearActionDecStatusFilter($start_item, $item_count,$resume_status,$frist_name,$last_name,$year_action,$dec_status);
                    break;
                case '111011':
                    /*Posted Status && First Name && Last Name && Signature && DecStatus Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameLastNameSignatureDecStatusFilter($start_item, $item_count,$resume_status,$frist_name,$last_name,$signature,$dec_status);
                    break;
                case '110111':
                    /*Posted Status && First Name && YearAction && Signature && DecStatus Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusFirstNameYearActionSignatureDecStatusFilter($start_item, $item_count,$resume_status,$frist_name,$year_action,$signature,$dec_status);
                    break;
                case '101111':
                    /*Posted Status && LastName && YearAction && Signature && DecStatus Filter*/
                    $all_resume = CVModel::getResumeLimitPostedStatusLastNameYearActionSignatureDecStatusFilter($start_item, $item_count,$resume_status,$last_name,$year_action,$signature,$dec_status);
                    break;
                case '011111':
                    /*FirstName && LastName && YearAction && Signature && DecStatus Filter*/
                    $all_resume = CVModel::getResumeLimitFirstNameLastNameYearActionSignatureDecStatusFilter($start_item, $item_count,$first_name,$last_name,$year_action,$signature,$dec_status);
                    break;
                case '111111':
                    /*FULL FILTER*/
                    $all_resume = CVModel::getResumeLimitFullFilter($start_item, $item_count,$resume_status,$first_name,$last_name,$year_action,$signature,$dec_status);
                    break;
            }
    }

    امیدوارم نوع ساختار کد به شکلی باشه که خوانایی مناسبی داشته باشه

  • @tilkacoder از وقتی که صرف پاسخگویی کردی سپاسگذارم. دقیقا دنبال همچنین جوابی بودم.

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

    در نهایت مجددا ازت سپاسگذارم

  • مجددا از پاسخی که ارسال کردی سپاسگذارم.و خیلی شرمنده ام که بقدری بد توضیح می دم که شما رو در دریافت منظورم دچار اشکال می کنم.

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

    شما اگر به انتهای صفحه اسکرول کنید، مشاهده می کنید که قبل از بارگزاری پست های جدید، قالب نمایشی اون رو نشون میده (مثل تصویر زیر)

    Image of Yaktocat

    مثل کاری که تو اینستاگرام دیدیم و ... برای این کار پلاگینی وجود داره؟ روشی وجود داره؟ یا ...

  • @tilkacoder عزیز، ممنونم از محبتی که داشتی و جوابی که ارسال کردی.

    منتهی احساس می کنم بد توضیح دادم و شما رو در دریافت محتوای سوالم دچار اشکال کردم. چیزی که ارسال کردم و نمونه ای که ارایه دادم (اینستاگرام) رو چند جای دیگه هم دیدم و همه این ها دارند دقیقا از یک افکت و حالت استفاده می کنند. مثال دیگه ای که بخوام عرض کنم سایت ویرگول هست. https://virgool.io/

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

    احساس می کنم یک روش خاص و یا بهتر بگم یک پلاگین خاصی برای اینکاری که اسمش رو هم نمی دونم چی هست وجود داره

  • ۵ ماه پیش @mahdi_mahdi یک گفتگو به اسم نمایش قالب کاری قبل از بارگذاری اطلاعات درست کرد.

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

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

    اگر عنوان نامناسبی انتخاب کردم و یا نوع توضیح که ارایه دادم نامناسب بوده، پیشاپیش از حضور عزیزتون عذر خواهی می کنم

  • ۵ ماه پیش @mahdi_mahdi یک گفتگو به اسم چگونگی ایجاد لایو فیلترینگ درست کرد.

    سلام بچه ها ! خوشحالم که این اجازه رو دارم تا بتونم سوالم رو مطرح کنم

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

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

    راه حل خودم : من در حال حاظر این قسمت رو پیاده سازی کردم و خوب کار رو راه انداخته اما احساس خوش آیندی به کدی که زدم ندارم :(

    من برای هر کدوم از فیلد ها دو تا وضعیت در نظر گرفتم. وضعیت 0 و وضعیت 1 . وضعیت 0 یعنی اینکه اون فیلد خالی هست و یک بالعکس اون.

    حالا در نهایت کد 6 رقمی رو به سرور ارسال می کنم. مثلا به این شکل : 100000 این کد یعنی فقط فیلتر اولی اعمال شده. یا مثلا کد 110000 که معنیش این میشه که فیلتر اولی و دومی اعمال شده و ...

    سمت سرور با ‍‍swich case امدم کد رو بررسی کردم و برای هر کد یه کویری به دیتابیس و... زدم

    امیدوارم متوجه کاری که کردم شده باشید .

    مشکلی که با این نوع کد زدن دارم این هست که خیلی کد زیادی رو زدم و توسعه پذیری رو برای آینده سخت کرده. ایا روش بهتری داریم برای اینکار؟

  • سلام کار زیر رو نمی تونید انجام بدید؟ یک جدول جدید (به طور مثال: user_group) ایجاد کنید و داخل اون گروه های کاربری خودتون رو درج کنید : مثلا گروه مدیریت، گروه نویسندگان، کاربران عضو

    هر کدوم از این گروه ها یک id دارند. داخل جدول "کاربران" هم یک ستون جدید ایجاد کنید به نام group_id و با کمک middleware ها قسمت هایی که تمایل دارید برای گروه های کاربری محدود کنید.

  • @matin عزیز ممنونم از پاسخ شما.

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

    مورد بعدی که خیلی بعید می دونم این هست که شخصیتی مثل @amir عزیز همچنین روحیه ای داشته باشه که بخواد استفاده از لاراول رو پنهان کرده باشه که اگر اینکار رو کرده خیلی برام جذاب هست که دلیلش رو بدونم (البته خیلی نزدیک به صفر هست این حالت.)

    من همچنان منتظر نظر خود جناب عظیمی هستم، امیدوارم شاهد این باشم که ایشون پاسخ بدند این موضوع رو (با آگاهی به مشغله زیادی که باید داشته باشند.)

  • @amir عزیز سلام.

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

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

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

    1. درست هست؟
    2. فریم ورک خاصی کار کردید و یا از فریم ورک های دیگه استفاده کردی؟
    3. اگر این یک فریم ورک شخصی هست، چرا ترجیحت این بوده که خودت از بیس بنویسی؟