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

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

۶۰ مطلب با موضوع «آموزش های عمومی و نکته های طراحی سایت» ثبت شده است

اجرای مای اس کیو ال (mysql) بصورت سرویس ویندوز

دوستان عزیز شاید شماهم قصد داشته باشید mysql رو به عنوان یکی از سرویس های ویندزو ران کنید ، اینطوری هر موقع که ویندوز بالا اومد این سرویس هم بصورت خودکار اجرا میشه و برای شما کار میکنه و نیازی نیست که شما بصورت دستی این برنامه رو اجرا کنید.

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

 

مسیر نصب برنامه رو پیدا کنید و فایل اجرایی mysqld.exe رو باید به سرویس ها اضافه کنید

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

C:\wamp64\bin\mysql\mysql5.7.21\bin\mysqld.exe

حالا CMD ویندوز رو باز کنید و دستور زیر رو در اون وارد کنید و کلید Enter رو فشار دهید :

"C:\wamp64\bin\mysql\mysql5.7.21\bin\mysqld.exe" --install

 

دقت داشته باشید که مسیر رو داخل دابل کوتیشن قرار دهید تا بدرستی نصب شود و همینطور برنامه CMD رو در مد  administrator  اجرا کرده باشید.

سرویس مای اس کیو ال

 

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

"C:\wamp64\bin\mysql\mysql5.7.21\bin\mysqld.exe--install mysql

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

مای اس کیو ال سرویس

 

در صورت تمایل به حذف سرویس مورد نظر از لیست سرویسهای ویندوز نیز میتونید از دستور زیر در CMD استفاده کنید :

 

sc delete ServiceName

 

 

با آرزوی موفقیت برایتان

ارادتمند مهدی حسامی

 

 

 

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

آموزش نصب لاراول 5.7 بر روی هاست

کل فایلهای پروژه رو غیر از public یه level بالاتر از public_html سرور و داخل یه فولدری بنام laravel قرار بدید
و محتوای داخل فولدر public لاراول رو هم از فولدرش بیرون بیارید و داخل public_html سرور بریزید سپس وارد فایل index.php در داخل public_html بشید و دستور مربوط به اتولود رو به شکل زیر تغییر بدید:

 

 
require dirname(dirname(FILE)).'/laravel/vendor/autoload.php';

تا اینجای کار رو که انجام دادید سایت به درستی بالا خواهد اومد ولی شما با تابع File::exists لاراول مشکل خواهید داشت و شما نخواهید توانست فایل های assets پروژه خودتون که داخل public_html قرار دارند رو  از نظر موجود بودن چک کنید که برای حل این مشکل و اشاره صحیح این تابع به مسیر گفته شده باید تغییرات زیر رو هم انجام بدید:

برای اینکه File::exists به مسیر زیر نگاه کنه 
"/home/mydomain/public_html"

وارد فایل index.php  شوید و تابع public_path رو override کنید ، به شکل زیر :

 

$app->bind('path.public', function() {
return __DIR__;
});

 

 

محتوای فایل index.php  بصورت زیر خواهد بود :

 

<?php

 

/**
* Laravel - A PHP Framework For Web Artisans
*
* @package Laravel
* @author Taylor Otwell <taylor@laravel.com>
*/

 

define('LARAVEL_START', microtime(true));

 

/*
|--------------------------------------------------------------------------
| Register The Auto Loader
|--------------------------------------------------------------------------
|
| Composer provides a convenient, automatically generated class loader for
| our application. We just need to utilize it! We'll simply require it
| into the script here so that we don't have to worry about manual
| loading any of our classes later on. It feels great to relax.
|
*/

 

require dirname(dirname(__FILE__)).'/laravel/vendor/autoload.php';

 

/*
|--------------------------------------------------------------------------
| Turn On The Lights
|--------------------------------------------------------------------------
|
| We need to illuminate PHP development, so let us turn on the lights.
| This bootstraps the framework and gets it ready for use, then it
| will load up this application so that we can run it and send
| the responses back to the browser and delight our users.
|
*/

 

$app = require_once dirname(dirname(__FILE__)).'/laravel/bootstrap/app.php';



 

// بازنویسی تابع public_path
$app->bind('path.public', function() {
return __DIR__;
});








 

/*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/

 

$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);

 

$response = $kernel->handle(
$request = Illuminate\Http\Request::capture()
);

 

$response->send();

 

$kernel->terminate($request, $response);
۱۵ آذر ۹۷ ، ۰۹:۴۰ ۰ نظر موافقین ۰ مخالفین ۰
مهندس مهدی حسامی

اتصال به مای اس کیو ال 8 (mysql 8) با لاراول

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

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

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

Illuminate\Database\QueryException  : SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client (SQL: select * from information_schema.tables where table_schema = laravel_tut and table_name = migrations)

  at /Users/home/Projects/laravel_tut/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::("PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]")
      /Users/home/Projects/laravel_tut/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

  2   PDO::__construct("mysql:host=127.0.0.1;port=3306;dbname=laravel_tut", "root", "fdgkadgaf9g7ayaig9fgy9ad8fgu9adfg9adg", [])
      /Users/home/Projects/laravel_tut/vendor/laravel/framework/src/Illuminate/Database/Connectors/Connector.php:70

 

دلیل اش اینه که لاراول یا بهتر بگم php از caching_sha2_password

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

ALTER USER 'yourusername'@'localhost'
IDENTIFIED WITH mysql_native_password BY 'new_password'

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

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

ارادتمند مهدی حسامی

 

 

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

تعیین حداکثر زمان (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>

 

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