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

PHP Obfuscator

فرض کنید شما پروژه ای نوشتید و اون رو به مشتری تحویل دادید، اما به هر دلیلی تمایل ندارید مشتری آزادانه به کد های اون دسترسی داشته باشه؛ برای محافظت از کد های php در برابر تغییر غیر مجار روش های مختلفی هست که یکی از اون ها استفاده از PHP Obfuscator ها هست

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

https://www.gaijin.at/en/tools/php-obfuscator بیشتر به تغییر اسم توابع، کلاس ها و متغیر و کد کردن رشته ها متکی هست.

https://php-minify.com ز تابع eval()  استفاده میکنه و خواندن کد در حالت عادی عملی نیست

برای مثال کد زیر:

<?php
function sayHi($name){
    echo "Hello $name";    
}
sayHi('Mohammad');
?>

خروجی زیر رو میده:

<?php eval(base64_decode('CiBnb3RvIG5OTXhLOyBuTk14SzogZnVuY3Rpb24gc2F5SGkoJG5hbWUpIHsgZWNobyAiXDExMFwxNDVcMTU0XHg2Y1wxNTdcNDB7JG5hbWV9IjsgfSBnb3RvIG9JYjJxOyBvSWIycTogc2F5SGkoIlx4NGRcMTU3XHg2OFx4NjFceDZkXHg2ZFx4NjFceDY0Iik7IGdvdG8gVEprRnc7IFRKa0Z3OiA=')); ?>

 

کلاس های زیادی برای این کار هستن:

https://github.com/naneau/php-obfuscator

https://github.com/pH-7/Obfuscator-Class

۱۱ ارديبهشت ۹۹ ، ۲۲:۲۱ ۰ نظر موافقین ۰ مخالفین ۰
محمد ایرانی

خدمت نه چندان مقدس سربازی

از 1 دی 97

 

۱۳ بهمن ۹۸ ، ۱۳:۱۹ ۰ نظر موافقین ۰ مخالفین ۰
محمد ایرانی

کانفیگ مناسب TinyMCE برای زبان فارسی

به طور پیش فرص TinyMCE بصورت چپ به راست تنظیم شده و برای این که به طور پیش فرض برای زبان های راست به چپ مثل فارسی تنطیم بشه، باید اون رو کانفیگ کنیم

کانفیگ مناسب:

  tinymce.init({
            selector: '#text',
            plugins: "directionality image link table media",
            toolbar: "undo redo | styleselect | bold italic underline | link image alignleft aligncenter alignright ltr rtl",
            menubar: "",
            directionality: "rtl",
            relative_urls: false,
            remove_script_host: false,
            convert_urls: true

        });

برای این که toolbar بالای سایت هم به سمت راست بره راه های مختلفی هست که شخصا از این کد CSS استفاده میکنم:

#mceu_15-body{
    display: grid;
}

#mceu_16-body > div{
    float:right;
}

که 15 و 16 که در سلکتور های بالا هست ممکنه در پروژه شما متفاوت باشه که با به inspect کردن به راحتی میتونید پیداش کنید این لاین ها رو

<div id="mceu_15-body" class="mce-container-body mce-stack-layout">

و

<div id="mceu_16-body" class="mce-container-body mce-flow-layout">

 

 

۲۵ مرداد ۹۷ ، ۱۳:۳۲ ۰ نظر موافقین ۰ مخالفین ۰
محمد ایرانی

تبدیل اعداد فارسی به لاتین

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

 

با تغییر ورودی تابع traverse میتونید بر اساس نیاز خودتون تغییر بدید قسمت هایی که باید فارسی بشن

$(document).ready(function() {
    persian = {
        0: '۰',
        1: '۱',
        2: '۲',
        3: '۳',
        4: '۴',
        5: '۵',
        6: '۶',
        7: '۷',
        8: '۸',
        9: '۹'
    };

    function traverse(el) {
        if (el.nodeType == 3) {
            var list = el.data.match(/[0-9]/g);
            if (list != null && list.length != 0) {
                for (var i = 0; i < list.length; i++) el.data = el.data.replace(list[i], persian[list[i]]);
            }
        }
        for (var i = 0; i < el.childNodes.length; i++) {
            traverse(el.childNodes[i]);
        }
    }
    traverse(document.body);
});

 

 

۰۹ تیر ۹۷ ، ۲۲:۴۳ ۰ نظر موافقین ۱ مخالفین ۰
محمد ایرانی

پر کردن فیلد ها با اعداد تصادفی

پر کردن فیلد ها با اعداد تصادفی در mysql

UPDATE tableName SET columnName = FLOOR( 1 + RAND( ) *10 );

 نتیجه این کد پر کردن فیلد columnName با اعداد تصادفی 1 تا 10 هست.

۱۳ آبان ۹۶ ، ۲۲:۴۵ ۰ نظر موافقین ۰ مخالفین ۰
محمد ایرانی

پاک کردن محتوای ویرایشگر tinyMCE

کد پاک کردن محتوای درون ویرایشگر جاری:

tinyMCE.activeEditor.setContent('');

 

همچنین میشه از طریق id به ویرایشگر اشاره کرد:

tinymce.get("full_text").setContent('');

 

در هر دو حالت میتونیم درون کوتیشن ها متن مورد نظر رو بنویسیم که در اینجا خالی هست.

۲۲ اسفند ۹۵ ، ۲۲:۵۵ ۰ نظر موافقین ۰ مخالفین ۰
محمد ایرانی
شنبه, ۲۳ مرداد ۱۳۹۵، ۱۰:۲۳ ب.ظ محمد ایرانی
ریجکس بررسی فارسی بودن رشته

ریجکس بررسی فارسی بودن رشته

ریجکس زیر فقط کاراکتر های فارسی رو قبول میکنه:

/^[پچجحخهعغآ؟.،آفقثصضشسیبلاتنمکگوئدذرزطظژ!!ؤإأءًٌٍَُِّ\s]+$/u

و این ریجکس فقط کاراکتر های فارسی و انگلیسی رو قبول میکنه:

/^[پچجحخهعغآ؟.،آفقثصضشسیبلاتنمکگوئدذرزطظژ!!ؤإأءًٌٍَُِّ a-zA-Z\s]+$/u
۲۳ مرداد ۹۵ ، ۲۲:۲۳ ۰ نظر موافقین ۰ مخالفین ۰
محمد ایرانی
پنجشنبه, ۲۱ مرداد ۱۳۹۵، ۱۱:۲۱ ب.ظ محمد ایرانی
هش کردن رشته در mysql

هش کردن رشته در mysql

معمولا برای هش کردن داده ها از خود php استفاده میشه اما شاید نیاز باشه تا از این ویژگی در mysql استفاده کنیم.

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

همچنین mysql از تعداد محدودی از الگوریتم های هش پشتیبانی میکنه.

 

فرض کنید قصد داریم یه کاربر به جدول user اضافه کنیم و کلمه عبور بصورت md5 ذخیره بشه:

INSERT INTO `user` (`Username`, `Pass`) VALUES ('mohammad_salehi', MD5('mypassword'));

ادامه مطلب...
۲۱ مرداد ۹۵ ، ۲۳:۲۱ ۰ نظر موافقین ۰ مخالفین ۰
محمد ایرانی
يكشنبه, ۳ مرداد ۱۳۹۵، ۰۶:۲۸ ب.ظ محمد ایرانی
هش کردن پسورد در php

هش کردن پسورد در php

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

الگوریتم ها و تابع های زیادی برای hash کردن وجود داره و همچنین نکاتی هستن که در زمان Hash کردن باید به اون ها توجه کرد، مثل افزودن salt.

یکی از توابع pssword_hash() هست که کار کردن با اون بسیار آسون هست و همچنین از الگوریتم bcrypt استفاده میکنه که یکی از قوی ترین الگوریتم های موجود هست.

نکته جالب در مورد این تابع اینه که خودش بصورا خودکار salt رو تولید میکنه.

برای مقایسه رشته هش شده با رشته اصلی باید از تابع password_verify() استفاده بشه.

ادامه مطلب...
۰۳ مرداد ۹۵ ، ۱۸:۲۸ ۰ نظر موافقین ۰ مخالفین ۰
محمد ایرانی

چرا از Composer استفاده کنم؟

مزیت استفاده از Composer موقعی نمایان می شود که وب اپ شما وابسته به پکیج ها (کتابخانه ها) ی متفاوتی است که احتمال زیاد هر کدام از آن پکیج ها وابسته به پکیج های دیگری هستند. در این حالت اگر خودتان بخواهید آن ها را بگیرید - و از آنجایی که ممکن است نسخه ی خاصی هم از یک پکیج مورد نیاز باشد - دردسر شما برای دانلود و قرار دادن هر پکیج داخل وب اپتان کم نیست. اینجا Composer کار شما را راحت می کند. علاوه بر دانلود پکیج ها، به صورت خودکار نیز آن ها را در پروژه ی تان بارگذاری می کند (autoload) یعنی هر موقع که نیاز به کلاسی داشته باشید مثل قبل از آن استفاده می کنید و Composer در صورت
 نبود کلاس در نیم اسپیس فعلی، آن را برای شما include می کند. برای همین Composer در دسته بندی مدیریت وابستگی ها یا Dependency manager قرار دارد.

 

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

۰۸ تیر ۹۵ ، ۱۷:۴۴ ۰ نظر موافقین ۰ مخالفین ۰
محمد ایرانی