آموزش php (وبلاگ یک پی اچ پی کار)

آموزش زبان برنامه نویسی php , html , css , تجربیات یک برنامه نویس

۹ مطلب با موضوع «مقالات طراحی وب» ثبت شده است

انکد و دیکد با base64 در زبان جاوا اسکریپت

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

 

buff = Buffer.from(data.message, 'utf8');

base64data = buff.toString('base64');

 

 

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

decodeURIComponent(escape(atob(data)));

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

تابع رمزنگاری با الگوریتم AES-128-CTR در زبان برنامه نویسی php

 

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

 

function EncryptString($string)

{

    try {

        $ciphering = "AES-128-CTR";

        $iv_length = openssl_cipher_iv_length($ciphering);

        $options = 0;

        $iv = "1234567890123456";

        $key = "1234567890123456";

        $result = openssl_encrypt($string,$ciphering,$key,$options,$iv);

        return $result;

 

    } catch (\Throwable $th) {

        // return $th->getMessage();

        return false;

    }

 

}

 

 

 

 

برای رمزگشایی هم از تابع زیر استفاده کنید :

 

 

function DecryptString($string)

{

    try {

        $ciphering = "AES-128-CTR";

        $iv_length = openssl_cipher_iv_length($ciphering);

        $options = 0;

        $iv = "1234567890123456";

        $key = "1234567890123456";

        $result = openssl_decrypt($string,$ciphering,$key,$options,$iv);

        return $result;

 

    } catch (\Throwable $th) {

        return false;

    }

 

}

 

 


 

۲۵ فروردين ۹۹ ، ۰۹:۰۹ ۰ نظر موافقین ۰ مخالفین ۰
مهندس مهدی حسامی

رمزنگاری اطلاعات

 

 

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

 

شاید بپرسید اصلا رمزنگاری چی هست ؟! 

داستان رمزنگاری اینه که ما تصمیم داریم به دلایل مختلفی که در پائین توضیح میدم یک متن یا محتوایی رو به یک شکل دیگر ( یک رشته رمزآلود ) تبدیل کنیم.

ادامه مطلب...
۲۴ فروردين ۹۹ ، ۲۰:۱۴ ۰ نظر موافقین ۰ مخالفین ۰
مهندس مهدی حسامی

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

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

اگر خیلی خلاصه اش کنیم ، شما ابتدا یک جدول بنام کاربران ایجاد خواهید کرد که اطلاعات مایگریشن اون با فرض فیلدهایی که من در نظر گرفتم به شرح زیر خواهد بود :

 

Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('email');
$table->string('first_name');
$table->string('last_name');
$table->string('password');
$table->string('gender');
$table->rememberToken();
$table->timestamps();
});

 

شما بایستی یک جدول دیگر با اسم Followers ایجاد کنید که مایگریشن اون به شرح زیر باشه :

 

Schema::create('followers', function (Blueprint $table) {

 

$table->increments('id');
$table->integer('follower_id')->unsigned();
$table->integer('following_id')->unsigned();
$table->timestamps();
});

 

جدول followers متعلق به جدول users هست و دو تا کلید خارجی داریم داخلش داریم که هر دو به جدول users ارجاع داده شدن ، بنابراین کافیست شما وارد مدل User خودتون بشید که لاراول براتون در مسیر App\User ساخته و دو تا فانکشن زیر رو به آن اضافه کنید :

 

// users that are followed by this user
public function following() {
return $this->belongsToMany(User::class, 'followers', 'follower_id', 'following_id');
}

 

// users that follow this user
public function followers() {
return $this->belongsToMany(User::class, 'followers', 'following_id', 'follower_id');
}

 

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

$userA_object->following()->attach($userB_id);

که کاربر A قصد فالوو کاربر B رو داره و برای برداشتن فالوو هم از دستور زیر استفاده کنید :

$userA_object->following()->detach($userB_id);

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

$a_followers = $a->followers()->get();

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

$a_followers = $a->following()->get();

 

امیدوارم براتون مفید بوده باشه

 

 

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

رمزگذاری فایلهای پروژه php

یکی از دغدغه های برنامه نویسان php کپی برداری از پروژه هایشان هست که وقتی سورس برنامه رو به مشتری شان ارائه میکنند ، مشتری می تواند براحتی از این سورس سو استفاده کنه و با کمی تغییرات برای خودش فروش کنه و برنامه نویس اصلی متضرر بشه

ولی شما برنامه نویس عزیز نباید نگران سورس کد خودت باشی چون ما سورس شمارو کدگذاری می کنیم ما اینکار رو با هزینه ای بسیار ناچیز انجام میدیم و بر اساس پارامترهایی مثل دامنه ، آی پی ، تاریخ انقضا می تونیم سورس رو کد کنیم تا دیگر قابلیت تکثیر سورس پروژه برای مشتریان وجود نداشته باشه و مجبور باشن برای تهیه نسخه بعدی باز هم به خود شما مراجعه کنند .

 

هزینه هر فایل php برابر است با :  15 هزار تومان

 

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

۱۶ فروردين ۹۷ ، ۱۷:۱۰ ۰ نظر موافقین ۰ مخالفین ۰
مهندس مهدی حسامی

مشکل عدم اجرای دستور php artisan migrate در لاراول

مایگریشن در لاراول

شاید شما هم مثل من وقتی یه پروژه لاراولی رو دارید راه اندازی میکنید با مشکل عدم اجرای مایگریت ها مواجه بشید . منظورم اینه که وقتی میخواهید دستور زیر رو اجرا کنید ، کامپوزر به مشکل بر میخوره و یکسری خطاهایی رو به شما بده که من نمونه هایی رو در زیر آوردم :

 

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

php artisan migrate
 

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

 

خطا : 

 Illuminate\Database\QueryException  : SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long;

max key length is 1000 bytes (SQL: alter table `users` add unique `users_email_unique`(`email`))

  at C:\wamp64\www\MyProjects\siblearn\vendor\laravel\framework\src\

Illuminate\Database\Connection.php: 664
    660|         // If an exception occurs when attempting to run a query, we'll format the error
    661|         // message to include the bindings with SQL, which will make this exception a
    662|         // lot more helpful to the developer instead of just the database's errors.
    663|         catch (Exception $e) {
  > 664|             throw new QueryException(
    665|                 $query, $this->prepareBindings($bindings), $e
    666|             );
    667|         }
    668|

  Exception trace:

  1   PDOException::("SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long; max key length is 1000 bytes")
      C:\wamp64\www\MyProjects\siblearn\vendor\laravel\framework\src\

Illuminate\Database\Connection.php : 458

  2   PDOStatement::execute()
      C:\wamp64\www\MyProjects\siblearn\vendor\laravel\framework\src\Illuminate\

Database\Connection.php : 458

  Please use the argument -v to see more details.

 

-----------------------------------

 

راهکار حل مشکل :

در پروژه لاراولی خودتون وارد فایل زیر شوید :

config/database.php

 

عبارت زیر رو پیدا کنید :

 

'engine' => null',
 
حال آنرا پاک کنید و بجای آن عبارت زیر را جایگزین کنید :
 
'engine' => 'InnoDB ROW_FORMAT=DYNAMIC',
 
حالا مجددا به محیط کامند لاین کامپوزر برگردید و دستور اجرای migration ها رو اجرا کنید که بصورت زیر میباشد :
 
php artisan migrate
 
 
۲۰ اسفند ۹۶ ، ۲۱:۰۴ ۴ نظر موافقین ۰ مخالفین ۰
مهندس مهدی حسامی

کنسل کردن درخواست ایجکس

سلام دوستان 
یه آموزش خیلی کوچولو رو امروز براتون آماده کردم
شاید شما هم در پروژه های تحت وب خودتون از ایجکس استفاده کرده اید و درخواست هایی رو بوسیله Ajax به سرور ارسال می کنید و میخواهید یک دکمه کنسل هم در کنار دکمه ارسال قرار بدید که اگه کاربر بعد از کلیک کردن دکمه ارسال و در لحظه ارسال درخواست  به سمت سرور تمایل داشت تا درخواست رو لغو کنه ، از این دکمه کنسل استفاده کنه 
برای این کار لازمه که یک متغییر سراسری درون تگ script  در رویداد ready  مربوط به document ایجاد کنید و درخواست Ajax خودتون رو درون این متغییر بریزید ،  مثلا من اسم این متغییر رو به دلخواه xhr گذاشتم ، اکنون این متغییر یک شی محسوب میشه که میتونید خیلی راحت با استفاده از دستور زیر و با کمک متد abort این درخواست رو در هر حالتی که هست لغو کنید.
دستور لغو هم به این شکل نوشته خواهد شد:   

xhr.abort();  

مثال : 

var = xhr;
xhr =  $.ajax({url:'functions/register.php'});
xhr.abort();

امیدوارم براتون مفید واقع بشه
آرزوی بهترین ها براتون دارم
ارادتمند مهدی حسامی

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

نمایش تصویر لودینگ در زمان بارگذاری سایت

تصویر لودینگ سایت

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

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