laravel session file upload download
このチュートリアルでは、Laravelセッション、ファイルのアップロード、ダウンロード、ファイルの許可、Laravelの認証と承認、メールの送信などについて、例を挙げて説明します。
の中に Laravelフォームと検証ルール のチュートリアル Laravelチュートリアルシリーズ 、例を使用してさまざまなフォーム要素について学習しました。
このチュートリアルでは、次の方法についても説明しました。 セッションデータの設定、取得、削除 Laravelセッションの下、およびを介して電子メールを送信する方法 メールトラップ 詳細に。
すべての例で、 Laravelバージョン7 。
jarファイルの使用方法
前提条件
以前のチュートリアルでは、 Laravelの基本機能 、 データベース処理、 そして フォーム処理 、およびこのチュートリアルをよりよく理解するには、これらのトピックに精通している必要があります。
さぁ、始めよう!
学習内容:
Laravelファイルのアップロード
Laravelでのファイルのアップロードは簡単です。開発者は指定することもできます Laravel ファイルのアクセス許可 ファイルの種類、ユーザーがアップロードできるファイルのサイズ制限など。
Laravelファイルのアップロード例
この例では、ファイルをアップロードするための検証を含む単純なフォームを作成しました。
ステップ1: コマンドプロンプトで次のコマンドを実行して、という名前のLaravelプロジェクトを作成します ファイルアップロード-チュートリアル 。
composer create-project --prefer-dist laravel/laravel:^7.0 file-uploading-tutorial
ステップ2: 次の2つのルートをに追加します ルート/web.php ファイル。
Route::get('file/upload','FileUploadController@create')->name('file.create'); Route::post('file/upload','FileUploadController@store')->name('file.store');
ステップ3: コマンドプロンプトで次のコマンドを実行して作成します FileUploadController 以下に示すように、既存のコードを変更します。
php職人make:controller FileUploadController
validate(('file' => 'required|mimes:doc,docx,xlx,csv,pdf|max:1024')); $file_name = time().'.'.$request->file->extension(); $request->file->move(public_path('file uploads'), $file_name); return back() ->with('success','Successfully uploaded a file!') ->with('file',$file_name); } }
ステップ4: 名前の付いたビューファイルを作成します create.blade.php 次のコードを追加します。
Laravel File Uploading Tutorial @if (count($errors) > 0) @foreach ($errors->all() as $error) - {{ $error }}
@endforeach
@endif @if ($message = Session::get('success')) × {{ $message }} @endif Laravel File Uploading
@csrf File
ステップ5: 名前の付いたフォルダを作成します ファイルのアップロード の中に 公衆 フォルダ。アップロードしたファイルが保存されているフォルダです。
ステップ6: 次のURLにアクセスすると、次のスクリーンショットのような出力が生成されます。
注意 :以下のURLはお客様のURLと異なる場合があります。
http://file-uploading-tutorial.test/file/upload
ステップ7: これで、有効なファイルをアップロードしてフォームを送信できます。アップロードされたファイルがに保存されていることを確認します ファイルのアップロード フォルダ。無効なファイル(無効なファイルタイプやサイズ制限を超えたファイル)をアップロードし、フォームを送信して検証を確認することもできます。
上記の例では、ユーザーは送信のみが許可されています doc 、 docx 、 19日 、 csv、 そして pdf 最大サイズが 1024バイト 。
例1: サイズが1024バイト未満のPDFファイルをアップロードします。
例2: 画像ファイル(PNG、JPEGなど)をアップロードします。
例3: サイズが1024バイトを超えるPDFファイルをアップロードします。
Laravelセッション
に セッション に慣れている 複数のユーザーリクエストにまたがるユーザーデータを保存する 。それは ウェブサイトのユーザーを追跡する 。 Laravelセッションの設定は、 config / session.php ファイル。デフォルトでは、 ファイルドライバー セッションデータの処理に使用されます。
Laravelセッションデータの取得
まず、HTTPリクエストを介してアクセスできるセッションのインスタンスを取得する必要があります。次に、 取得する() データにアクセスする方法。
$session_data = $request->session()->get('key');
Laravelセッションでのデータの保存
セッションにデータを保存する方法は2つあります。
#1) を使用して put() メソッド–このメソッドは、リクエストインスタンスを介してデータを保存します。
$request->session()->put('key', 'value');
#二) 使用する セッション ヘルパー–このメソッドは、グローバルヘルパーを介してデータを保存します。
session(('key' => 'value'));
Laravelセッションデータの削除
ザ・ forgot() メソッドは、セッションから特定のデータを削除するために使用されます。
$request->session()->forget(key);
ザ・ 流す() メソッドは、セッションからすべてのデータを削除するために使用されます。
Laravelセッションを使用したフラッシュデータ
ザ・ 閃光() メソッドは、セッションにデータを格納するためにも使用されますが、次のHTTPリクエストでのみ使用できます。
$request->session()->flash('status', Successful!');
Laravelセッションの例
方法を学びましょう セット、取得、 そして 削除 簡単なセッション例を使用したセッションデータ。
ステップ1: コマンドプロンプトで次のコマンドを実行して、という名前のLaravelプロジェクトを作成します セッション-チュートリアル 。
composer create-project --prefer-dist laravel/laravel:^7.0 session-tutorial
ステップ2: 次の3つのルートをに追加します ルート/web.php ファイル。
Route::get('session/set','SessionController@store')->name('session.store'); Route::get('session/get','SessionController@index')->name('session.index'); Route::get('session/delete','SessionController@delete')->name('session.delete');
ステップ3: コマンドプロンプトで次のコマンドを実行して作成します SessionController 以下に示すように、既存のコードを変更します。
php職人make:controller SessionController
session()->has('username')) echo $request->session()->get('username'); else echo 'No session data.'; } public function store(Request $request) { $request->session()->put('username','User A'); echo 'Session data stored.'; } public function delete(Request $request) { $request->session()->forget('username'); echo 'Session data deleted.'; } }
ステップ4: 次のURLに順番にアクセスしてください。 セットする 、 取得する、 そして 削除 セッションデータ。
注意 : 以下のURLはあなたのものと異なる場合があります。
#1) 次のURLにアクセスして セッションデータの設定 。
http://session-tutorial.test/session/set
以下のスクリーンショットのような出力が生成されます。
#二) 次のURLにアクセスして セッションデータを取得する 。
http://session-tutorial.test/session/get
以下のスクリーンショットのような出力が生成されます。
#3) 次のURLにアクセスして セッションデータを削除する 。
http://session-tutorial.test/session/delete
以下のスクリーンショットのような出力が生成されます。
#4) セッションデータを削除した後、次のURLに再度アクセスしてください。
http://session-tutorial.test/session/get
以下のスクリーンショットのような出力が生成されます。
Laravel認証
Laravel認証は簡単です。それはに慣れています ユーザーを特定する 。通常、それはによって達成されます ユーザーのユーザー名とパスワードを特定する 。ユーザーの資格情報が有効であると識別された場合、そのユーザーは 認証されたユーザー 。
ザ・ config / auth.php fileは認証構成ファイルです。 Laravel認証は 警備員 そして プロバイダー 。
警備員: リクエストごとにユーザーを認証する方法を定義します。
プロバイダー: 永続ストレージからユーザーを取得する方法を定義します。
さらに、必要に応じて追加のプロバイダーを定義することもできます。ただし、デフォルトの認証構成を変更する必要はありません。
その点に注意してください このチュートリアルでは、ガードとプロバイダーについて詳しく説明していません。
認証例
この例では、単純なLaravel7認証システムを作成しました。
ステップ1: コマンドプロンプトで次のコマンドを実行して、という名前のLaravelプロジェクトを作成します auth-チュートリアル 。
composer create-project --prefer-dist laravel/laravel:^7.0 auth-tutorial
ステップ2: プロジェクトをデータベースに接続し、コマンドプロンプトで次のコマンドを実行して、デフォルトの移行を実行します。
php artisan migrate
ステップ3: コマンドプロンプトで次のコマンドを実行して、 Laravel UI package 。
composer require laravel/ui
ステップ4: 次のステップは生成することです 認証スキャフォールディング と ブートストラップ、表示、 または React 。あなたは実行することができます 次のコマンドのいずれか 認証スキャフォールディングを作成します。
コマンドプロンプトで次のコマンドを実行して、次のコマンドで認証スキャフォールディングを生成します。 ブートストラップ 。
php artisan ui bootstrap --auth
コマンドプロンプトで次のコマンドを実行して、次のコマンドで認証スキャフォールディングを生成します。 見る 。
php artisan ui vue --auth
コマンドプロンプトで次のコマンドを実行して、次のコマンドで認証スキャフォールディングを生成します。 React 。
php artisan ui react --auth
ステップ5: コマンドプロンプトで次の2つのコマンドを実行し、インストールして新しいスキャフォールディングをコンパイルします npmの依存関係 。
npm install npm run dev
ステップ6: 次のURLにアクセスして、新しいユーザーを作成し(新しいユーザーを登録し)、システムにログインして認証をテストします。有効なデータと無効なデータの両方を試して、認証をテストできます。
注意 : 以下のURLはあなたのものと異なる場合があります。
まず、新しいユーザーを登録する必要があります。次のURLにアクセスして新しいユーザーを登録すると、次のスクリーンショットのような出力が生成されます。
http://auth-tutorial.test/register
新しいユーザーを登録した後、次のURLにアクセスしてシステムにログインすると、次のスクリーンショットのような出力が生成されます。
http://auth-tutorial.test/login
ログインに成功すると、ユーザーはにリダイレクトされます ホームページ/ダッシュボード 以下に示すように。
Laravelの承認
簡単な言葉で、 承認 かどうかを確認します 認証されたユーザーは、要求されたリソースにアクセスするために必要な権限を持っています 。
承認の例
この例では、単純なLaravel7認証システムを作成しました。
ステップ1: コマンドプロンプトで次のコマンドを実行して、という名前のLaravelプロジェクトを作成します 承認-チュートリアル 。
composer create-project --prefer-dist laravel/laravel:^7.0 authorization-tutorial
ステップ2: プロジェクトをデータベースに接続します。
ステップ3: コマンドプロンプトで次のコマンドを実行して、 add_role_column_to_users_table 以下に示すように、既存のコードを移行および変更します。
php職人make:migration add_role_column_to_users_table
enum('role', ('admin', 'manager', 'user'))->default('user'); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function (Blueprint $table) { // }); } }
ステップ4: コマンドプロンプトで次のコマンドを実行して、すべての移行を実行します。
php artisan migrate
ステップ5: サンプルデータをに追加します ユーザー 使用するテーブル いじくり回す 以下に示すように:
C:laragonwwwauthorization-tutorial php artisan tinker Psy Shell v0.10.4 (PHP 7.2.19 — cli) by Justin Hileman >>> $user = new AppUser; => AppUser {#3260} >>> $user->name = 'User A'; => 'User A' >>> $user->email = 'admina@user.com'; => 'admina@user.com' >>> $user->password = bcrypt('user123'); => 'y$E5hDEej0Cue1U5AY..tmR.Wd/YCo9LXN0kbqvX1por8Cdfi.NhGv6' >>> $user->role = 'admin'; => 'admin' >>> $user->save(); => true
ステップ6: コマンドプロンプトで次のコマンドを実行して、 Laravel UI package 。
composer require laravel/ui
ステップ7: 次のステップは生成することです 認証スキャフォールディング と ブートストラップ、表示、 または React 。あなたは実行することができます 次のコマンドのいずれか 認証スキャフォールディングを作成します。
コマンドプロンプトで次のコマンドを実行して、次のコマンドで認証スキャフォールディングを生成します。 ブートストラップ 。
php artisan ui bootstrap --auth
コマンドプロンプトで次のコマンドを実行して、次のコマンドで認証スキャフォールディングを生成します。 見る 。
php artisan ui vue --auth
コマンドプロンプトで次のコマンドを実行して、次のコマンドで認証スキャフォールディングを生成します。 React 。
php artisan ui react --auth
ステップ8: コマンドプロンプトで次の2つのコマンドを実行し、インストールして新しいスキャフォールディングをコンパイルします npmの依存関係 。
npm install npm run dev
ステップ9: を開きます AuthServiceProvider.php でファイル アプリ/プロバイダー 以下に示すように、既存のコードを変更します。
registerPolicies(); Gate::define('isAdmin', function($user) { return $user->role == 'admin'; }); Gate::define('isManager', function($user) { return $user->role == 'manager'; }); Gate::define('isUser', function($user) { return $user->role == 'user'; }); } }
ステップ10: の既存のコードを変更します home.blade.php 以下に示すようなファイル:
@extends('layouts.app') @section('content') {{ __('Dashboard') }} @if (session('status')) {{ session('status') }} @endif @can('isAdmin') I am an admin. @elsecan('isManager') I am a manager. @else I am a user. @endcan @endsection
ステップ11: 次のURLにアクセスすると、次のスクリーンショットのような出力が生成されます。次に、管理者、管理者、およびユーザーとして一度に1つずつシステムにログインします。
注意 :以下のURLは実際のものと異なる場合があります。
http://authorization-tutorial.test/login
- 管理者ログイン
としてログインしている場合 管理者 の場合、出力は次のスクリーンショットのようになります。
- マネージャーログイン
としてログインしている場合 マネージャー の場合、出力は次のスクリーンショットのようになります。
- ユーザーログイン
としてログインしている場合 ユーザー の場合、出力は次のスクリーンショットのようになります。
Laravelでメールを送信する
Mailtrapとは
Laravelでメールをテストするために利用できる無料のオンラインツールがいくつかあります。 メールトラップ そのようなツールの1つです。 Mailtrapは、偽のSMTPサーバーを使用して電子メールをテストします。ローカルホストからの電子メールを受け入れ、開発者またはテスターが実際の受信ボックスに送信する前に電子メールがどのように共有されるかをテストできるようにします。
メール送信の例
を使用して簡単な例を見てみましょう メールトラップ 。
ステップ1: コマンドプロンプトで次のコマンドを実行して、という名前のLaravelプロジェクトを作成します メール-チュートリアル 。
composer create-project --prefer-dist laravel/laravel:^7.0 email-tutorial
ステップ2: 訪問 URL 新しいMailtrapアカウントを作成するか、すでに持っている場合はMailtrapアカウントにログインします。
メモリリーク検出c ++
ステップ3: Mailtrapアカウントにログインした後、
#1) クリック デモ受信ボックス 。
#二) を特定します ユーザー名 そして パスワード 下 SMTP 。このユーザー名とパスワードは一意であり、次のステップで使用します。
注意: 訪問 URL Mailtrapについてもっと知るために。
ステップ4: を開きます。 環境 ファイルを入力し、 メールトラップ ユーザー名とパスワード。
MAIL_MAILER=smtp MAIL_HOST=smtp.mailtrap.io MAIL_PORT=2525 MAIL_USERNAME= enter your Mailtrap username here MAIL_PASSWORD= enter your Mailtrap password here MAIL_ENCRYPTION=null MAIL_FROM_ADDRESS=null MAIL_FROM_NAME='${APP_NAME}'
ステップ5: 次の2つのルートをに追加します ルート/web.php ファイル。
Route::get('/contact', 'ContactController@contact')->name('contact'); Route::post('/contact', 'ContactController@sendContactForm')->name('contact.send');
ステップ6: コマンドプロンプトで次のコマンドを実行して作成します FileUploadController 以下に示すように、既存のコードを変更します。
php職人make:controller ContactController
validate($request, ( 'name' => 'required', 'email' => 'required|email', 'subject' => 'required', 'message' => 'required', )); $data = array( 'name' => $request->name, 'email' => $request->email, 'subject' => $request->subject, 'message' => $request->message, ); Mail::to('user@test.com')->send(new ContactMail($data)); return redirect()->back()->with('success', 'Your message was submitted successfully. Thank you!'); } }
ステップ7: コマンドプロンプトで次のコマンドを実行して作成します ContactMail クラス。このコマンドは、という名前のファイルを作成します ContactMail.php の中に アプリ/メール ディレクトリ。
php artisan make:mail ContactMail
ステップ8: の既存のコードを変更します ContactMail.php 以下に示すようにファイルします。
data = $data; } /** * Build the message. * * @return $this */ public function build() { return $this->from($this->data('email')) ->subject('Contact Form') ->view('contact-template')->with('data', $this->data); } }
ステップ9: 次のビューファイルを作成し、コードを追加します。
#1) を作成します contact.blade.php ファイルを作成し、次のコードを追加します。
Contact Us @if (count($errors) > 0) @foreach ($errors->all() as $error) - {{ $error }}
@endforeach
@endif @if ($message = Session::get('success')) × {{ $message }} @endif Contact Us
@csrf Name Email Subject Message {{ old('message') }} Send
#二) を作成します contact-template.blade.php ファイルを作成し、次のコードを追加します。
Name: {{ $data('name') }}
Subject: {{ $data('subject') }}
Message: {{ $data('message') }}
ステップ10: 次のURLにアクセスすると、次のスクリーンショットのような出力が生成されます。
注意 :以下のURLはお客様のURLと異なる場合があります。
http://email-tutorial.test/contact
ステップ11: フォームに記入して送信します。
ステップ12: 今、あなたの訪問 メールトラップ アカウントを作成し、受信トレイを確認します。以下のスクリーンショットのような新しいメッセージが受信トレイに表示されます。
結論
Laravelファイルのアップロードは簡単で、開発者はLaravelファイルのアクセス許可を設定することもできます。 Laravelは、セッションデータを設定、取得、削除する簡単な方法を提供します。 Laravel認証はユーザーの識別に役立ち、Laravel認証は認証されたユーザーが要求されたリソースにアクセスする権限を持っているかどうかを確認します。
Mailtrapなどのツールを使用して、実際の受信トレイに送信する前にメールをテストできます。
このチュートリアルがお役に立てば幸いです。次のチュートリアルでまたお会いしましょう。 Laravelフォージとコレクション 。
幸せな学習!
<< PREV Tutorial | 次のチュートリアル>>