رفتن به مطلب

axa

عضو سایت
  • تعداد ارسال‌ها

    12
  • تاریخ عضویت

  • آخرین بازدید

نوشته‌ها ارسال شده توسط axa

  1. سلام

    قالب من برای ورود با حساب گوگل از این فایل استفاده می‌کنه

    من میخوام کاربر بعد از ورود به my account ریدایرکت نشه و همان صفحه فعلی ریفریش بشه

    فکر کنم مربوط به خط زیر باشه

     wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );

     

    و اینکه کاربر بعد از ورود، نام جیمیل او به همراه عدد تصادفی نمایش داده میشه،

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

    فکر کنم مربوط به  pre_user_nickname باشه

    کسی هست کمکم کنه
     

    <?php
    add_action( 'init', 'mf_register_auth_urls' );
    function mf_register_auth_urls() {
    	add_rewrite_rule( '^auth/([\w-]+)', 'index.php?social_driver=$matches[1]', 'top' );
    	flush_rewrite_rules();
    }
    
    add_filter( 'query_vars', 'mf_add_auth_query_vars' );
    function mf_add_auth_query_vars( $vars ) {
    	$vars[] = 'social_driver';
    
    	return $vars;
    }
    
    add_action( 'parse_request', 'mf_handle_social_urls' );
    function mf_handle_social_urls( $query ) {
    	if (
    		isset( $query->query_vars['social_driver'] )
    		&& mf_get_option( 'auth_google' )
    		&& mf_get_option( 'google_client_id' )
    		&& mf_get_option( 'google_client_secret' )
    	) {
    		$driver    = $query->query_vars['social_driver'];
    		$whitelist = [ 'google' ];
    		if ( in_array( $driver, $whitelist ) ) {
    			$method = 'mf_auth_by_' . $driver;
    			if ( function_exists( $method ) ) {
    				$method();
    			}
    		}
    		exit;
    	}
    }
    
    function mf_auth_by_google() {
    	$client_id     = mf_get_option( 'google_client_id' );
    	$client_secret = mf_get_option( 'google_client_secret' );
    
    	include MF_THEME_PATH . 'library/hybridauth/autoload.php';
    
    	$config = [
    		'callback' => esc_url( home_url( 'auth/google' ) ),
    		'keys'     => [ 'key' => $client_id, 'secret' => $client_secret ]
    	];
    
    	try {
    		$google = new Hybridauth\Provider\Google( $config );
    		$google->authenticate();
    		$userProfile = $google->getUserProfile();
    
    		if ( ! empty( $userProfile ) ) {
    			$email = $userProfile->email;
    
    			if ( email_exists( $email ) ) {
    				$user_data = get_user_by( "email", $email );
    				mf_login_user( $user_data );
    				wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
    			} else {
    				list( $user_login, $no_matter_data ) = explode( '@', $email );
    				$u_login            = $user_login . rand( 1000, 9999999 );
    				$password           = bin2hex( random_bytes( 15 ) );
    				$user_register_data = [
    					'user_login' => apply_filters( 'pre_user_login', $u_login ),
    					'user_email' => apply_filters( 'pre_user_email', $email ),
    					'user_pass'  => apply_filters( 'pre_user_pass', $password ),
    				];
    
    				$user_id = wp_insert_user( $user_register_data );
    				if ( ! is_wp_error( $user_id ) ) {
    					$user_data = get_user_by( "id", $user_id );
    					mf_login_user( $user_data );
    
    					do_action( 'user_register', $user_id );
    
    					wp_redirect( get_permalink( get_option( 'woocommerce_myaccount_page_id' ) ) );
    				}
    			}
    		}
    	} catch ( \Exception $e ) {
    		echo 'Oops, we ran into an issue! ' . $e->getMessage();
    	}
    }
    
    function mf_login_user( $user ) {
    	wp_set_current_user( $user->ID, $user->user_login );
    	wp_set_auth_cookie( $user->ID );
    	do_action( 'wp_login', $user->user_login, $user );
    }

     

    socials-auth.php

  2. سلام برای حل این مشکل

    در ویرایشگر وردپرس ابتدا جمله فارسی را نوشته و بعد روی کاراکتر ویژه کلیک کرده و گزینه left-to-right mark را انتخاب کرده
    بعد کلمه یا جمله ای که با کاراکتر ویژه شروع میشه را بنویسید

    مثال

    فایل .exe

    فایل ‎.exe میبینید که درست شد

     

  3. سلام

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

     

    <?php 
    
    // Allow direct file download (hotlinking)?
    // Empty - allow hotlinking
    // If set to nonempty value (Example: example.com) will only allow downloads when referrer contains this text
    define('ALLOWED_REFERRER', '');
    
    // If hotlinking not allowed then make hackers think there are some server problems
    if (ALLOWED_REFERRER !== ''
    && (!isset($_SERVER['HTTP_REFERER']) || strpos(strtoupper($_SERVER['HTTP_REFERER']),strtoupper(ALLOWED_REFERRER)) === false)
    ) {
      die("Internal server error. Please contact system administrator.");
    }
    
    
    // get the file request, throw error if nothing supplied
    // hide notices
    
    @ini_set('error_reporting', E_ALL & ~ E_NOTICE);
    
    /* turn off compression on the server 
    @apache_setenv('no-gzip', 1);
    @ini_set('zlib.output_compression', 'Off');
    
    
    /**/
    if(!isset($_REQUEST['f']) || empty($_REQUEST['f'])) 
    {
        header("HTTP/1.0 400 Bad Request");
        exit;
    }
    
    // sanitize the file request, keep just the name and extension
    // also, replaces the file location with a preset one ('./myfiles/' in this example)
    $file_path  = $_REQUEST['f'];
    $path_parts = pathinfo($file_path);
    $file_name  = $path_parts['basename'];
    $file_ext   = $path_parts['extension'];
    $file_path  = './myfiles/' . $file_name;
    
    // allow a file to be streamed instead of sent as an attachment
    $is_attachment = isset($_REQUEST['stream']) ? false : true;
    
    // make sure the file exists
    if (is_file($file_path))
    {
        $file_size  = filesize($file_path);
        $file = @fopen($file_path,"rb");
        if ($file)
        {
            // set the headers, prevent caching
            header("Pragma: public");
            header("Expires: -1");
            header("Cache-Control: public, must-revalidate, post-check=0, pre-check=0");
            header("Content-Disposition: attachment; filename=\"$file_name\"");
    
            // set appropriate headers for attachment or streamed file
            if ($is_attachment)
                    header("Content-Disposition: attachment; filename=\"$file_name\"");
            else
                    header('Content-Disposition: inline;');
    
            // set the mime type based on extension, add yours if needed.
            $ctype_default = "application/octet-stream";
            $content_types = array(
    				// archives
    				'zip' => 'application/zip',
    
    				// documents
    				'pdf' => 'application/pdf',
    				'doc' => 'application/msword',
    				'xls' => 'application/vnd.ms-excel',
    				'ppt' => 'application/vnd.ms-powerpoint',
    
    				// executables
    				'exe' => 'application/octet-stream',
    
    				// images
    				'gif' => 'image/gif',
    				'png' => 'image/png',
    				'jpg' => 'image/jpeg',
    				'jpeg' => 'image/jpeg',
    
    				// audio
    				'mp3' => 'audio/mpeg',
    				'wav' => 'audio/x-wav',
    
    				// video
    				'mpeg' => 'video/mpeg',
    				'mpg' => 'video/mpeg',
    				'mpe' => 'video/mpeg',
    				'mov' => 'video/quicktime',
    				'avi' => 'video/x-msvideo',
            );
            $ctype = isset($content_types[$file_ext]) ? $content_types[$file_ext] : $ctype_default;
            header("Content-Type: " . $ctype);
    
            //check if http_range is sent by browser (or download manager)
            if(isset($_SERVER['HTTP_RANGE']))
            {
                list($size_unit, $range_orig) = explode('=', $_SERVER['HTTP_RANGE'], 2);
                if ($size_unit == 'bytes')
                {
                    //multiple ranges could be specified at the same time, but for simplicity only serve the first range
                    //http://tools.ietf.org/id/draft-ietf-http-range-retrieval-00.txt
                    list($range, $extra_ranges) = explode(',', $range_orig, 2);
                }
                else
                {
                    $range = '';
                    header('HTTP/1.1 416 Requested Range Not Satisfiable');
                    exit;
                }
            }
            else
            {
                $range = '';
            }
    
            //figure out download piece from range (if set)
            list($seek_start, $seek_end) = explode('-', $range, 2);
    
            //set start and end based on range (if set), else set defaults
            //also check for invalid ranges.
            $seek_end   = (empty($seek_end)) ? ($file_size - 1) : min(abs(intval($seek_end)),($file_size - 1));
            $seek_start = (empty($seek_start) || $seek_end < abs(intval($seek_start))) ? 0 : max(abs(intval($seek_start)),0);
    
            //Only send partial content header if downloading a piece of the file (IE workaround)
            if ($seek_start > 0 || $seek_end < ($file_size - 1))
            {
                header('HTTP/1.1 206 Partial Content');
                header('Content-Range: bytes '.$seek_start.'-'.$seek_end.'/'.$file_size);
                header('Content-Length: '.($seek_end - $seek_start + 1));
            }
            else
              header("Content-Length: $file_size");
    
            header('Accept-Ranges: bytes');
    
            set_time_limit(0);
            fseek($file, $seek_start);
    
            while(!feof($file)) 
            {
                print(@fread($file, 1024*8));
                ob_flush();
                flush();
                if (connection_status()!=0) 
                {
                    @fclose($file);
                    exit;
                }           
            }
    
            // file save was a success
            @fclose($file);
            exit;
        }
        else 
        {
            // file couldn't be opened
            header("HTTP/1.0 500 Internal Server Error");
            exit;
        }
    }
    else
    {
        // file does not exist
        header("HTTP/1.0 404 Not Found");
        exit;
    }

     

  4. سلام دوستان

    من بعد از کلی جستجو در سایتهای خارجی، کد خوبی را پیدا کردم که بدون نیاز به دیتایس از فایلها محافظت میکنه

    و امکان ‌hotlink هم داره که بر امنیتش  اضافه میکنه

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

    این کد بهترین کد برای اکثر دوستان مثل من هست

    ولی متاسفانه مشکل resume شدن دانلود را نداره

    در ادامه

     

    <?php
    
    ###############################################################
    # File Download 1.31
    ###############################################################
    # Visit http://www.zubrag.com/scripts/ for updates
    ###############################################################
    # Sample call:
    #    download.php?f=phptutorial.zip
    #
    # Sample call (browser will try to save with new file name):
    #    download.php?f=phptutorial.zip&fc=php123tutorial.zip
    ###############################################################
    
    // Allow direct file download (hotlinking)?
    // Empty - allow hotlinking
    // If set to nonempty value (Example: example.com) will only allow downloads when referrer contains this text
    define('ALLOWED_REFERRER', '');
    
    // Download folder, i.e. folder where you keep all files for download.
    // MUST end with slash (i.e. "/" )
    define('BASE_DIR','/home/user/downloads/');
    
    // log downloads?  true/false
    define('LOG_DOWNLOADS',true);
    
    // log file name
    define('LOG_FILE','downloads.log');
    
    // Allowed extensions list in format 'extension' => 'mime type'
    // If myme type is set to empty string then script will try to detect mime type 
    // itself, which would only work if you have Mimetype or Fileinfo extensions
    // installed on server.
    $allowed_ext = array (
    
      // archives
      'zip' => 'application/zip',
    
      // documents
      'pdf' => 'application/pdf',
      'doc' => 'application/msword',
      'xls' => 'application/vnd.ms-excel',
      'ppt' => 'application/vnd.ms-powerpoint',
      
      // executables
      'exe' => 'application/octet-stream',
    
      // images
      'gif' => 'image/gif',
      'png' => 'image/png',
      'jpg' => 'image/jpeg',
      'jpeg' => 'image/jpeg',
    
      // audio
      'mp3' => 'audio/mpeg',
      'wav' => 'audio/x-wav',
    
      // video
      'mpeg' => 'video/mpeg',
      'mpg' => 'video/mpeg',
      'mpe' => 'video/mpeg',
      'mov' => 'video/quicktime',
      'avi' => 'video/x-msvideo'
    );
    
    
    
    ####################################################################
    ###  DO NOT CHANGE BELOW
    ####################################################################
    
    // If hotlinking not allowed then make hackers think there are some server problems
    if (ALLOWED_REFERRER !== ''
    && (!isset($_SERVER['HTTP_REFERER']) || strpos(strtoupper($_SERVER['HTTP_REFERER']),strtoupper(ALLOWED_REFERRER)) === false)
    ) {
      die("Internal server error. Please contact system administrator.");
    }
    
    // Make sure program execution doesn't time out
    // Set maximum script execution time in seconds (0 means no limit)
    set_time_limit(0);
    
    if (!isset($_GET['f']) || empty($_GET['f'])) {
      die("Please specify file name for download.");
    }
    
    // Nullbyte hack fix
    if (strpos($_GET['f'], "\0") !== FALSE) die('');
    
    // Get real file name.
    // Remove any path info to avoid hacking by adding relative path, etc.
    $fname = basename($_GET['f']);
    
    // Check if the file exists
    // Check in subfolders too
    function find_file ($dirname, $fname, &$file_path) {
    
      $dir = opendir($dirname);
    
      while ($file = readdir($dir)) {
        if (empty($file_path) && $file != '.' && $file != '..') {
          if (is_dir($dirname.'/'.$file)) {
            find_file($dirname.'/'.$file, $fname, $file_path);
          }
          else {
            if (file_exists($dirname.'/'.$fname)) {
              $file_path = $dirname.'/'.$fname;
              return;
            }
          }
        }
      }
    
    } // find_file
    
    // get full file path (including subfolders)
    $file_path = '';
    find_file(BASE_DIR, $fname, $file_path);
    
    if (!is_file($file_path)) {
      die("File does not exist. Make sure you specified correct file name."); 
    }
    
    // file size in bytes
    $fsize = filesize($file_path); 
    
    // file extension
    $fext = strtolower(substr(strrchr($fname,"."),1));
    
    // check if allowed extension
    if (!array_key_exists($fext, $allowed_ext)) {
      die("Not allowed file type."); 
    }
    
    // get mime type
    if ($allowed_ext[$fext] == '') {
      $mtype = '';
      // mime type is not set, get from server settings
      if (function_exists('mime_content_type')) {
        $mtype = mime_content_type($file_path);
      }
      else if (function_exists('finfo_file')) {
        $finfo = finfo_open(FILEINFO_MIME); // return mime type
        $mtype = finfo_file($finfo, $file_path);
        finfo_close($finfo);  
      }
      if ($mtype == '') {
        $mtype = "application/force-download";
      }
    }
    else {
      // get mime type defined by admin
      $mtype = $allowed_ext[$fext];
    }
    
    // Browser will try to save file with this filename, regardless original filename.
    // You can override it if needed.
    
    if (!isset($_GET['fc']) || empty($_GET['fc'])) {
      $asfname = $fname;
    }
    else {
      // remove some bad chars
      $asfname = str_replace(array('"',"'",'\\','/'), '', $_GET['fc']);
      if ($asfname === '') $asfname = 'NoName';
    }
    
    // set headers
    header("Pragma: public");
    header("Expires: 0");
    header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header("Content-Type: $mtype");
    header("Content-Disposition: attachment; filename=\"$asfname\"");
    header("Content-Transfer-Encoding: binary");
    header("Content-Length: " . $fsize);
    
    // download
    // @readfile($file_path);
    $file = @fopen($file_path,"rb");
    if ($file) {
      while(!feof($file)) {
        print(fread($file, 1024*8));
        flush();
        if (connection_status()!=0) {
          @fclose($file);
          die();
        }
      }
      @fclose($file);
    }
    
    // log downloads
    if (!LOG_DOWNLOADS) die();
    
    $f = @fopen(LOG_FILE, 'a+');
    if ($f) {
      @fputs($f, date("m.d.Y g:ia")."  ".$_SERVER['REMOTE_ADDR']."  ".$fname."\n");
      @fclose($f);
    }
    
    ?>

     

    ولی متاسفانه مشکلش نداشتن resume در حین دانلود هست

     

    کدی پیدا کردم که قابلیت resume را داره

    
    <?php
    $file = 'File address';
    if (file_exists($file)) {
    date_default_timezone_set('GMT');
    //
    $data_file = $file;
    $data_size = filesize($data_file); //
    $mime = 'application/otect-stream'; //
    $filename = basename($data_file); //
    //
    if (isset($_SERVER['HTTP_RANGE']) || isset($HTTP_SERVER_VARS['HTTP_RANGE'])) {
        $ranges_str = (isset($_SERVER['HTTP_RANGE']))?$_SERVER['HTTP_RANGE']:$HTTP_SERVER_VARS['HTTP_RANGE'];
        $ranges_arr = explode('-', substr($ranges_str, strlen('bytes=')));
        //
        if ((intval($ranges_arr[0]) >= intval($ranges_arr[1]) && $ranges_arr[1] != "" && $ranges_arr[0] != "" )
            || ($ranges_arr[1] == "" && $ranges_arr[0] == "")
        ) {
            //
            $ranges_arr[0] = 0;
            $ranges_arr[1] = $data_size - 1;
        }
    } else {
        $ranges_arr[0] = 0;
        $ranges_arr[1] = $data_size - 1;
    }
    //
    $file = fopen($data_file, 'rb');
    $start = $stop = 0;
    if ($ranges_arr[0] === "") { 
        //
        $stop = $data_size - 1;
        $start = $data_size - intval($ranges_arr[1]);
    } elseif ($ranges_arr[1] === "") { //No last
        //
        $start = intval($ranges_arr[0]);
        $stop = $data_size - 1;
    } else {
        // 
        $stop = intval($ranges_arr[1]);
        $start = intval($ranges_arr[0]);
    }    
    //
    fseek($file, $start, SEEK_SET);
    $start = ftell($file);
    fseek($file, $stop, SEEK_SET);
    $stop = ftell($file);
    $data_len = $stop - $start;
    //
    if (isset($_SERVER['HTTP_RANGE']) || isset($HTTP_SERVER_VARS['HTTP_RANGE'])) {
        header('HTTP/1.0 206 Partial Content');
        header('Status: 206 Partial Content');
    }
    header('Accept-Ranges: bytes');
    header('Content-type: ' . $mime);
    header('Content-Disposition: attachment; filename="' . $filename . '"'); 
    header("Content-Range: bytes $start-$stop/" . $data_size );
    header("Content-Length: " . ($data_len + 1));
    //
    fseek($file, $start, SEEK_SET);
    $bufsize = 2048000;
    ignore_user_abort(true);
    @set_time_limit(0);
    while (!(connection_aborted() || connection_status() == 1) && $data_len > 0) {
        echo fread($file, $bufsize);
        $data_len -= $bufsize;
        flush();
    }
    fclose($file);
    exit;
    }else{
    echo "not found";}
    ?>
    

     

     

    چطور میشه کدهایی که مریوط به resume هست را در کد اول قرار داد

    لطفا به من کمک کنین

    پیشاپیش ممنون

  5. سلام دوستان

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

    در وردپرس وقتی مینوسیم .htaccess کاراکتر دات  باید سمت چپ قرار بگیره

    و یا عبارت /root

     

    ایا  میشه با تابع preg_replace درستش کرد؟

    کد زیر براکت را درست میکنه

    function dtbaker_rtl_bracket_hack($content){
    	if(is_rtl()){
    		$content = preg_replace('#<p>([^<]+)\)\s*</p>#','<p>$1)&#x200E;</p>',$content);
    		$content = preg_replace('#<p>\s*\(([^<]+)</p>#','<p>&#x200E;($1</p>',$content);
    	}
    	return $content;
    }
    add_filter('the_content','dtbaker_rtl_bracket_hack',100,1);

     

    برای اینکه بخواهیم کاراکترهای . و / را درست کنیم کدش چطوری میشه

    لطفا کمک کنین

    ممنون

     

  6. با سلام

    دوستان قصد دارم پلاگین WooCommerce Print Invoice & Delivery Note  که به نظر من بهترین پلاگین فاکتور ووکامرس و البته رایگان را معرفی کنم البته شاید دوستان با این پلاگین آشنایی داشته باشند. توسعه دهنده این پلاگین متاسفانه برای راستچین کردن پلاگین مهارت کافی را ندارد. من خیلی بهش ور رفتم ولی متاسفانه نتیجه خوبی نداد وگرنه راستچین شداش را در اختیار توسعه دهنده میگذاشتم تا بسیاری از دوستان با زبان نوشتاری راست به چپ از این پلاگین لذت میبردند.

    دوستان ایا کسی هست که خیرخواهانه این پلاگین را راست چین کنه و دیگران را از این نعمت بهره مند سازه؟

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

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

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

    یاحق

  7. مچکرم برادر

    در 49 دقیقه قبل، محمدرضـا گفته است :

    ترجمه های افزونه و وردپرس هم آپدیت کردید ؟

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

    مچکرم برادر

    با پاک کردن کش توسط پلاگین WP Fastest Cache مشکل حل شد

    WP Fastest Cache > Database Cleanup

     

     

  8. سلام دوستان

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

    حتی فونت سایت را تغییر دادم و درست نشد

    ولی وقتی وکامرس را به ورژن قبل از 3 تغییر دادم قیمت ها فارسی شدند

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

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

    ممنون میشم اگر به صورت مبتدی مراحل را توضیح بدید

    وبسایت روی لوکال هست.

     

  9. سلام دوستان،خسته نباشین

    مشکل من نمایش غلط تعداد اپدیت های وردپرس هست

    تمام پلاگین های سایتم اپدیت هست ولی در بخش بروزرسانی ها تعداد اپدیت های را 8 عدد نشان میشه

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

    به نظر شما مشکل کجاست

×
×
  • اضافه کردن...