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

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

تعیین حداکثر زمان (time out) برای کلاس PDO در لاراول

سلام دوستان خوبم ، میخوام در این آموزش یک تجربه دیگر هم با شما به اشتراک بگذارم

شاید شما هم در پروژه های خودتون قصد داشته باشید به یک سرور خارجی (دیتابیس) متصل بشید و عملیات CRUD بروی آن انجام بدید و یا حتی میخواهید به دیتابیس لوکال یا محلی خودتون متصل بشید ولی این سرور بنابه دلایلی قطع میباشد ، در حالت پیشفرض لاراول بر اساس حداکثر زمان مجاز اجرای دستورات که بر روی برنامه وبسرور تنظیم شده عمل کرده و شمارو برای مدت زمان زیادی منتظر خواهد گذاشت تا در به دیتابیس متصل شود و برنامه شما یجورایی هنگ خواهد کرد و کنترل اون از دست شما خارج خواهد شد که این سبب میشه تا برای دستورات دیگه بعد از دستور اتصال، زمان انتظار زیادی جهت اجرا شدنشون بوجود بیاد و سرعت سیستم بشدت پائین خواهد اومد. یا در سناریویی دیگه شما قصد دارید مثلا آنلاین بودن 5 تا سرور رو چک کنید ، خب شما با یک پارامتر یا آپشن در کلاس PDO میتونید یک زمان حداکثری برای منتظر موندن این کلاس جهت ارتباط تعیین کنید تا در صورت موفقیت آمیز بودن اتصال عملیات مورد نظر شما بر روی دیتابیس انجام بشه و در صورت عدم اتصال هم سریع به شما یک خطایی رو برگردونه که با هندل کردن خطا سرور رو از حالت کرش نجات بدید.

برای اینکار وارد مسیر زیر در پروژه لاراولی (5.7) خود شوید و در داخل فایل connector.php حداکثر زمان انتظار برای اتصال رو در قسمت آپشن های کلاس اتصال تعیین کنید :

 

تایم اوت pdo

 
تنظیم زیر رو اضافه نمائید :
تایم اوت اتصال در لاراول
 
در پایان هم دستور زیر رو در کامپوزر اجرا کنید تا اتولود دوباره جنریت کنه همه چی رو

composer dump

موفق و موید باشید
ارادتمند مهدی حسامی
 
۰۴ آذر ۹۷ ، ۱۹:۳۱ ۰ نظر موافقین ۰ مخالفین ۰
مهندس مهدی حسامی

فراخوانی توابع در داخل ویوها در لاراول 5.7

برای فراخوانی یک تابع در داخل view ها پیشنهاد لاراول به شما این است که ابتدا یک فایل با نام helper.php در مسیر زیر ایجاد کنید :

app/Http/helpers.php

حال وارد فایل composer.json در پروژه لاراولی خود شوید و تغییرات زیر را در قسمت autoload ایجاد کنید :

"autoload": {
"files": [
"app/Http/helpers.php"
]
},

 

در اینجا شما فایل خودتونو برای لاراول مشخص کردید و حالا نوبت به این میرسه که این تغییرات رو بصورت کامل به لاراول اعلام کنید که چنین فایلی ایجاد شده و در فایل composer.json معرفی شد.

برای اینکار در cmd خود وارد مسیر پروژه لاراولی خودتون بشید و دستور زیر رو بنویسید :

$ composer dump

کارتون تموم شده و الان میتونید در داخل فایل helpers.php تمامی فانکشن هایی که قصد دارید در کل پروژه (ویوها) بهشون دسترسی داشته باشید داخل این فایل تعریف کنید.

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

<?php echo getReminderDays(); ?>

 

موفق و موید باشید.

مهدی حسامی

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

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

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

آی دی کانال تلگرامی سفارش پروژه :

https://t.me/sefaresh_projects

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

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

شاید شما هم به این مشکل بر خورد کنید که وقتی روت جدیدی با نام admin در لاراول ایجاد می کنید ، نمی تونید بهش دسترسی داشته باشید. 

منظورم همون چیزی که در تصویر زیر میبنید :

 

Route::group(['prefix' => 'admin'], function(){
 
Route::get('/index', 'AdminController@index');
Route::get('/comments', 'AdminController@comments');
 
});

دلیل این اتفاق اینه که شما داخل فولدر public پروژه یه پوشه بنام admin ایجاد کردید.

خب نباید هم اجازه بده چون تنظیمات وب سرور به گونه ای هست که این امر جز محدودودیت هاست.

برای رفع مشکل دو راهکار وجود داره:

1 - تغییر نام پوشه admin

2 - اصلاح فایل .htaccess

 

اگر میخواهید روش دوم رو انجام بدید که من اصلا توصیه نمیکنم بصورت زیر عمل کنید :

کدهای زیر رو به فایل .htaccess پروژه خودتون اضافه کنید:

# Handle Front Controller...
# RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]`
۰۹ مهر ۹۷ ، ۱۶:۴۹ ۳ نظر موافقین ۰ مخالفین ۰
مهندس مهدی حسامی

ایجاد پیام خوش آمد گویی بعد از ورود(لاگین) در لاراول

برای ایجاد پیام خوش آمدی گویی بهترین و ساده ترین راه استفاده از دستور زیر هست :

ابتدا وارد کنترلر زیر شوید : 

LoginController.php

سپس تغییرات زیر رو درون این فایل اعمال کنید :

 

// protected $redirectTo = '/profile';


 

public function authenticated()
{
return redirect('/profile')->with('success', 'You are successfully logged in');
}

 

 

حالا در داخل view مربوط به profile به شکل زیر وجود پیام خوش آمدگویی را از داخل سشن چک کنید و آلرت مورد نظر خودتون رو نمایش دهید.:

 

 

@if(Session::has('success'))
<script>
swal({
title: "خوش آمدید",
text: "کاربر عزیز به فروشگاه اینترنتی یکتا استور خوش آمدید",
icon: "success",
button: "تایید",
});
</script>
@endif

 

 

نکته : من در این مثال از پلاگین sweetalert برای نمایش پیام خوش آمدگویی استفاده کردم و شما هم اگر قصد استفاده از همین پلاگین رو دارید لینک CDN آن را در صفحه خودتون لینک کنید .

 

لینک پلاگین sweetalert :

<script src="https://unpkg.com/sweetalert/dist/sweetalert.min.js"></script>

 

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

دریافت اطلاعات رندوم از دیتابیس در لاراول 5.7

متد زیر یکی از کاربردی ترین متدهای لاراول هستش که میتونید ازش لذت ببرید. این تابع در لراول برای گرفتن اطلاعات تصادفی استفاده میشود و می توانید با تابع کمکی دیگه بنام take تعداد مورد نظر رو مشخص کنید.

 

inRandomOrder()->

نمونه کد کامل :

$randomProducts = DB::table('products')->inRandomOrder()->take(5)->get();
۲۰ شهریور ۹۷ ، ۱۲:۴۴ ۱ نظر موافقین ۰ مخالفین ۰
مهندس مهدی حسامی

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

برای تغییر پیغام های پیشفرض اعتبارسنجی لاراول 5.7 روش آسونی وجود داره که میتونید رشته های متنی دلخواه به زبان فارسی و حتی به هر زبان دیگه ای رو اضافه کنید.

روش کار :

وارد فایل موجود د ر مسیر زیر شوید

resources\lang\en\validation.php

 

در قسمت پائین به شما پیشنهادی رو داده که یتونید براحتی پیغامهای سفارشی اضافه کنید

/*
|--------------------------------------------------------------------------
| Custom Validation Language Lines
|--------------------------------------------------------------------------
|
| Here you may specify custom validation messages for attributes using the
| convention "attribute.rule" to name the lines. This makes it quick to
| specify a specific custom language line for a given attribute rule.
|
*/

 

'custom' => [

 

'name' =>['required' => 'الزامی میباشد'],
'email' =>['required' => 'الزامی میباشد'],
'password' =>['required' => 'الزامی میباشد'],
'email' => ['unique'=>':attribute قبلا ثبت شده'],


 

],

 

/*
|--------------------------------------------------------------------------
| Custom Validation Attributes
|--------------------------------------------------------------------------
|
| The following language lines are used to swap attribute place-holders
| with something more reader friendly such as E-Mail Address instead
| of "email". This simply helps us make messages a little cleaner.
|
*/

 

'attributes' => [

 

'name' => 'نام',
'email' => 'پست الکترونیک',
'password' => 'رمز عبور',

 

],

 

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

سفارشی سازی آدرس روت های احراز هویت پیشفرض لاراول

برای این کار روت های زیر را به وب روت لاراول خود اضافه کنید . (نسخه 5.7 لاراول)

 

 

// Authentication Routes...
Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');

 

// Registration Routes...
Route::get('register', 'Auth\RegisterController@showRegistrationForm')->name('register');
Route::post('register', 'Auth\RegisterController@register');

 

// Password Reset Routes...
Route::get('password/reset', 'Auth\ForgotPasswordController@showLinkRequestForm')->name('password.request');
Route::post('password/email', 'Auth\ForgotPasswordController@sendResetLinkEmail')->name('password.email');
Route::get('password/reset/{token}', 'Auth\ResetPasswordController@showResetForm')->name('password.reset');
Route::post('password/reset', 'Auth\ResetPasswordController@reset')->name('password.update');

 

// Email Verification Routes...
Route::get('email/verify', 'Auth\VerificationController@show')->name('verification.notice');
Route::get('email/verify/{id}', 'Auth\VerificationController@verify')->name('verification.verify');
Route::get('email/resend', 'Auth\VerificationController@resend')->name('verification.resend');

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