laravel session file upload download
Ten samouczek obejmuje sesję Laravel, przesyłanie plików, pobieranie, uprawnienia do plików, uwierzytelnianie i autoryzację Laravel, wysyłanie e-maili itp. Z przykładami:
w Formularze Laravel i zasady walidacji samouczek Seria samouczków Laravel , poznaliśmy różne elementy formularzy z przykładami.
W dalszej części tego samouczka omówiliśmy również, jak to zrobić ustaw, pobierz, usuń dane sesji w sesjach Laravel i jak wysyłać e-maile przez Mailtrap szczegółowo.
We wszystkich przykładach użyliśmy Laravel wersja 7 .
zapewnienie jakości a kontrola jakości
Wymagania wstępne
W naszych poprzednich samouczkach omówiliśmy podstawowe cechy Laravel , obsługa baz danych, i obsługa formularzy i musisz zapoznać się z tymi tematami, aby lepiej zrozumieć ten samouczek.
Zaczynajmy!
Czego się nauczysz:
- Przesyłanie plików Laravel
- Sesja Laravel
- Uwierzytelnianie Laravel
- Autoryzacja Laravel
- Wysyłanie wiadomości e-mail w Laravel
- Wniosek
Przesyłanie plików Laravel
Przesyłanie plików do Laravel jest łatwe. Deweloper może również określić Laravel uprawnienia do plików takie jak typy plików, limity rozmiaru plików, które mogą być przesłane przez użytkownika itp.
Przykład przesyłania plików Laravel
W tym przykładzie utworzyliśmy prosty formularz z walidacją do przesyłania plików.
Krok 1: Uruchom następujące polecenie w wierszu polecenia, aby utworzyć projekt Laravel o nazwie samouczek przesyłania plików .
composer create-project --prefer-dist laravel/laravel:^7.0 file-uploading-tutorial
Krok 2: Dodaj następujące dwie trasy do route / web.php plik.
Route::get('file/upload','FileUploadController@create')->name('file.create'); Route::post('file/upload','FileUploadController@store')->name('file.store');
Krok 3: Uruchom następujące polecenie w wierszu polecenia, aby utworzyć plik FileUploadController i zmodyfikuj istniejący kod, jak pokazano poniżej.
php rzemieślnik make: kontroler 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); } }
Krok 4: Utwórz plik widoku o nazwie create.blade.php i dodaj następujący kod:
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
Krok 5: Utwórz folder o nazwie przesyłanie plików w publiczny teczka. Jest to folder, w którym przechowywane są przesłane pliki.
Krok 6: Odwiedź następujący adres URL, a wygeneruje wynik podobny do poniższego zrzutu ekranu.
Uwaga : Poniższy adres URL może różnić się od Twojego.
http: //file-uploading-tutorial.test/file/upload
Krok 7: Teraz możesz przesłać prawidłowy plik i przesłać formularz. Sprawdź, czy przesłany plik jest przechowywany w przesyłanie plików teczka. Możesz także spróbować przesłać nieprawidłowy plik (plik z nieprawidłowym typem pliku i / lub przekroczono limit rozmiaru) i przesłać formularz, aby sprawdzić poprawność.
W powyższym przykładzie użytkownik może tylko przesyłać doc , docx , dziewiętnasty , csv, i pdf pliki o maksymalnym rozmiarze 1024 bajty .
Przykład 1: Przesyłanie pliku PDF o rozmiarze mniejszym niż 1024 bajty.
Przykład 2: Przesyłanie pliku obrazu (PNG, JPEG itp.).
Przykład 3: Przesyłanie pliku PDF o rozmiarze większym niż 1024 bajty.
Sesja Laravel
DO sesja jest używany w celu przechowywać dane użytkownika w wielu żądaniach użytkowników . To pomaga śledzić użytkowników serwisu . Konfigurację sesji Laravel można wykonać w pliku config / session.php plik. Domyślnie sterownik plików służy do obsługi danych sesji.
Pobieranie danych sesji Laravel
Najpierw musisz uzyskać instancję sesji, do której można uzyskać dostęp za pośrednictwem żądania HTTP. Następnie użyj otrzymać() metoda dostępu do danych.
$session_data = $request->session()->get('key');
Przechowywanie danych w sesji Laravel
Istnieją dwa sposoby przechowywania danych w sesji.
# 1) Używając położyć() metoda - ta metoda przechowuje dane za pośrednictwem instancji żądania.
$request->session()->put('key', 'value');
#dwa) Za pomocą sesja pomocnik - ta metoda przechowuje dane za pośrednictwem globalnego pomocnika.
session(('key' => 'value'));
Usuwanie danych sesji Laravel
Plik zapomniałem () służy do usuwania określonych danych z sesji.
$request->session()->forget(key);
Plik spłukać() służy do usunięcia wszystkich danych z sesji.
Dane Flash przy użyciu sesji Laravel
Plik Lampa błyskowa() Metoda służy również do przechowywania danych w sesji, ale jest dostępna tylko dla następnego żądania HTTP.
$request->session()->flash('status', Successful!');
Przykład sesji Laravel
Nauczmy się, jak to zrobić set, get, i kasować dane sesji przy użyciu prostego przykładu sesji.
Krok 1: Uruchom następujące polecenie w wierszu polecenia, aby utworzyć projekt Laravel o nazwie samouczek sesji .
composer create-project --prefer-dist laravel/laravel:^7.0 session-tutorial
Krok 2: Dodaj następujące trzy trasy w route / web.php plik.
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');
Krok 3: Uruchom następujące polecenie w wierszu polecenia, aby utworzyć plik SessionController i zmodyfikuj istniejący kod, jak pokazano poniżej:
php artisan 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.'; } }
Krok 4: Odwiedź następujące adresy URL w podanej kolejności, aby zestaw , otrzymać, i kasować dane sesji.
Uwaga : Poniższe adresy URL mogą różnić się od Twoich.
# 1) Odwiedź następujący adres URL, aby ustaw dane sesji .
http: //session-tutorial.test/session/set
Wygeneruje dane wyjściowe podobne do przedstawionych na poniższym zrzucie ekranu.
#dwa) Odwiedź następujący adres URL, aby pobierz dane sesji .
http: //session-tutorial.test/session/get
Wygeneruje dane wyjściowe podobne do przedstawionych na poniższym zrzucie ekranu.
# 3) Odwiedź następujący adres URL, aby usunąć dane sesji .
http: //session-tutorial.test/session/delete
Wygeneruje dane wyjściowe podobne do przedstawionych na poniższym zrzucie ekranu.
# 4) Po usunięciu danych sesji odwiedź ponownie następujący adres URL.
http: //session-tutorial.test/session/get
Wygeneruje dane wyjściowe podobne do przedstawionych na poniższym zrzucie ekranu.
Uwierzytelnianie Laravel
Uwierzytelnianie Laravel jest proste. Jest do tego przyzwyczajony identyfikować użytkowników . Zwykle osiąga się to przez identyfikacja nazwy użytkownika i hasła użytkownika . Jeśli poświadczenia użytkownika zostaną zidentyfikowane jako prawidłowe, mówi się, że użytkownik jest Uwierzytelniony użytkownik .
Plik config / auth.php plik jest plikiem konfiguracji uwierzytelniania. Uwierzytelnianie Laravel składa się z gwardia i dostawców .
Gwardia: Określa, w jaki sposób użytkownicy są uwierzytelniani dla każdego żądania.
Dostawcy: Definiuje sposób pobierania użytkowników z pamięci trwałej.
Ponadto w razie potrzeby można zdefiniować dodatkowych dostawców. Nie trzeba jednak zmieniać domyślnej konfiguracji uwierzytelniania.
Proszę to zanotować nie omawialiśmy szczegółowo strażników i dostawców w tym samouczku.
Przykład uwierzytelnienia
W tym przykładzie stworzyliśmy prosty system autoryzacji Laravel 7.
Krok 1: Uruchom następujące polecenie w wierszu polecenia, aby utworzyć projekt Laravel o nazwie auth-tutorial .
composer create-project --prefer-dist laravel/laravel:^7.0 auth-tutorial
Krok 2: Połącz projekt z bazą danych i uruchom następujące polecenie w wierszu polecenia, aby uruchomić migracje domyślne.
php artisan migrate
Krok 3: Uruchom następujące polecenie w wierszu polecenia, aby zainstalować Pakiet Laravel UI .
composer require laravel/ui
Krok 4: Następnym krokiem jest wygenerowanie auth scaffolding z Bootstrap, Widok, lub Reagować . Możesz biec jedno z następujących poleceń do tworzenia rusztowania uwierzytelniania.
Uruchom następujące polecenie w wierszu polecenia, aby wygenerować rusztowanie uwierzytelniania za pomocą programu Bootstrap .
php artisan ui bootstrap --auth
Uruchom następujące polecenie w wierszu polecenia, aby wygenerować rusztowanie uwierzytelniania za pomocą programu Widok .
php artisan ui vue --auth
Uruchom następujące polecenie w wierszu polecenia, aby wygenerować rusztowanie uwierzytelniania za pomocą programu Reagować .
php artisan ui react --auth
Krok 5: Uruchom następujące dwa polecenia w wierszu polecenia, aby skompilować nowe rusztowanie przez instalację npm dependencies .
npm install npm run dev
Krok 6: Odwiedź poniższe adresy URL, aby przetestować uwierzytelnianie, tworząc nowego użytkownika (rejestrując nowego użytkownika) i logując się do systemu. Możesz wypróbować zarówno prawidłowe, jak i nieprawidłowe dane, aby przetestować uwierzytelnianie.
Uwaga : Poniższe adresy URL mogą różnić się od Twoich.
Najpierw musisz zarejestrować nowego użytkownika. Odwiedź poniższy adres URL, aby zarejestrować nowego użytkownika, a wygeneruje wynik podobny do poniższego zrzutu ekranu.
http: //auth-tutorial.test/register
Po zarejestrowaniu nowego użytkownika zaloguj się do systemu, odwiedzając następujący adres URL, a wygeneruje wynik podobny do poniższego zrzutu ekranu.
http: //auth-tutorial.test/login
Pomyślne logowanie przekieruje użytkownika do strona główna / dashboard jak pokazano niżej.
Autoryzacja Laravel
W prostych słowach, upoważnienie sprawdza, czy uwierzytelnieni użytkownicy mają niezbędne uprawnienia dostępu do żądanych zasobów .
Przykład autoryzacji
W tym przykładzie stworzyliśmy prosty system autoryzacji Laravel 7.
Krok 1: Uruchom następujące polecenie w wierszu polecenia, aby utworzyć projekt Laravel o nazwie samouczek autoryzacji .
composer create-project --prefer-dist laravel/laravel:^7.0 authorization-tutorial
Krok 2: Połącz swój projekt z bazą danych.
Krok 3: Uruchom następujące polecenie w wierszu polecenia, aby utworzyć plik add_role_column_to_users_table migrację i zmodyfikuj istniejący kod, jak pokazano poniżej:
php artisan make: migracja 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) { // }); } }
Krok 4: Uruchom następujące polecenie w wierszu polecenia, aby uruchomić wszystkie migracje.
php artisan migrate
Krok 5: Dodaj przykładowe dane do Użytkownicy tabela przy użyciu majstrować jak pokazano niżej:
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
Krok 6: Uruchom następujące polecenie w wierszu polecenia, aby zainstalować Pakiet Laravel UI .
composer require laravel/ui
Krok 7: Następnym krokiem jest wygenerowanie auth scaffolding z Bootstrap, Widok, lub Reagować . Możesz biec jedno z następujących poleceń do tworzenia rusztowania uwierzytelniania.
Uruchom następujące polecenie w wierszu polecenia, aby wygenerować rusztowanie uwierzytelniania za pomocą programu Bootstrap .
php artisan ui bootstrap --auth
Uruchom następujące polecenie w wierszu polecenia, aby wygenerować rusztowanie uwierzytelniania za pomocą programu Widok .
php artisan ui vue --auth
Uruchom następujące polecenie w wierszu polecenia, aby wygenerować rusztowanie uwierzytelniania za pomocą programu Reagować .
przykładem wymagania funkcjonalnego jest _________
php artisan ui react --auth
Krok 8: Uruchom następujące dwa polecenia w wierszu polecenia, aby skompilować nowe rusztowanie przez instalację npm dependencies .
npm install npm run dev
Krok 9: Otworzyć AuthServiceProvider.php plik w Aplikacja / dostawcy i zmodyfikuj istniejący kod, jak pokazano poniżej:
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'; }); } }
Krok 10: Zmodyfikuj istniejący kod w home.blade.php plik, jak pokazano poniżej:
@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
Krok 11: Odwiedź następujący adres URL, a wygeneruje wynik podobny do poniższego zrzutu ekranu. Następnie zaloguj się do systemu jako administrator, menedżer i użytkownik pojedynczo.
Uwaga : Poniższe adresy URL mogą różnić się od Twoich.
http: //authorization-tutorial.test/login
- Logowanie administratora
Jeśli jesteś zalogowany jako Administrator , wynik będzie podobny do poniższego zrzutu ekranu.
- Logowanie menedżera
Jeśli jesteś zalogowany jako menedżer , wynik będzie podobny do poniższego zrzutu ekranu.
- Login użytkownika
Jeśli jesteś zalogowany jako użytkownik , wynik będzie podobny do poniższego zrzutu ekranu.
Wysyłanie wiadomości e-mail w Laravel
Co to jest Mailtrap
Dostępnych jest kilka bezpłatnych narzędzi online do testowania wiadomości e-mail w Laravel i Mailtrap jest jednym z takich narzędzi. Mailtrap używa fałszywego serwera SMTP do testowania wiadomości e-mail. Przyjmuje wiadomości e-mail od lokalnego hosta, co pozwala deweloperowi lub testerowi przetestować, w jaki sposób wiadomości e-mail będą udostępniane przed wysłaniem ich do prawdziwych skrzynek odbiorczych.
Przykład wysyłania e-maili
Zróbmy prosty przykład za pomocą Mailtrap .
Krok 1: Uruchom następujące polecenie w wierszu polecenia, aby utworzyć projekt Laravel o nazwie samouczek e-mail .
composer create-project --prefer-dist laravel/laravel:^7.0 email-tutorial
Krok 2: Odwiedzić URL i utwórz nowe konto Mailtrap lub zaloguj się do konta Mailtrap, jeśli już je masz.
Krok 3: Po zalogowaniu się na konto Mailtrap,
# 1) Kliknij Demo Inbox .
#dwa) Zidentyfikuj Nazwa Użytkownika i Hasło pod SMTP . Ta nazwa użytkownika i hasło są unikalne i użyjemy ich w następnym kroku.
Uwaga: Odwiedzić URL aby dowiedzieć się więcej o Mailtrap.
Krok 4: Otworzyć . env plik i wprowadź swój Mailtrap Nazwa użytkownika i hasło.
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}'
Krok 5: Dodaj następujące dwie trasy do route / web.php plik.
Route::get('/contact', 'ContactController@contact')->name('contact'); Route::post('/contact', 'ContactController@sendContactForm')->name('contact.send');
Krok 6: Uruchom następujące polecenie w wierszu polecenia, aby utworzyć plik FileUploadController i zmodyfikuj istniejący kod, jak pokazano poniżej.
php artisan make: kontroler 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!'); } }
Krok 7: Uruchom następujące polecenie w wierszu polecenia, aby utworzyć plik ContactMail klasa. To polecenie utworzy plik o nazwie ContactMail.php w Aplikacja / poczta informator.
php artisan make:mail ContactMail
Krok 8: Zmodyfikuj istniejący kod w ContactMail.php plik, jak pokazano poniżej.
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); } }
Krok 9: Utwórz następujące pliki widoku i dodaj kody.
# 1) Utwórz plik contact.blade.php plik i dodaj następujący kod.
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
#dwa) Utwórz plik contact-template.blade.php plik i dodaj następujący kod.
Name: {{ $data('name') }}
Subject: {{ $data('subject') }}
Message: {{ $data('message') }}
Krok 10: Odwiedź następujący adres URL, a wygeneruje wynik podobny do poniższego zrzutu ekranu.
Uwaga : Poniższy adres URL może różnić się od Twojego.
http: //email-tutorial.test/contact
Krok 11: Wypełnij formularz i prześlij.
Krok 12: Teraz odwiedź swój Mailtrap konto i sprawdź skrzynkę odbiorczą. Zobaczysz nową wiadomość w swojej skrzynce odbiorczej podobną do poniższego zrzutu ekranu.
Wniosek
Przesyłanie plików Laravel jest łatwe, a programista może również ustawić uprawnienia do plików Laravel. Laravel zapewnia łatwy sposób ustawiania, pobierania i usuwania danych sesji. Uwierzytelnianie Laravel pomaga zidentyfikować użytkowników, podczas gdy autoryzacja Laravel sprawdza, czy uwierzytelnieni użytkownicy mają uprawnienia dostępu do żądanych zasobów.
Możemy użyć narzędzi takich jak Mailtrap do testowania wiadomości e-mail przed wysłaniem ich do rzeczywistych skrzynek odbiorczych.
Mamy nadzieję, że ten samouczek okazał się pomocny! Mam nadzieję, że zobaczymy się ponownie w następnym samouczku, w którym omówimy Laravel kuźnia i kolekcje .
Miłej nauki!
<< PREV Tutorial | NASTĘPNY samouczek >>
rekomendowane lektury
- Samouczek PHP Laravel dla początkujących: Co to jest Laravel Framework
- Kolekcja Laravel i samouczek Laravel Forge
- Baza danych Laravel, migracje, elokwentny ORM i majsterkowanie
- Formularze Laravel i zasady walidacji z przykładem
- Uprawnienia dostępu do plików w systemie Unix: Unix Chmod, Chown i Chgrp
- Uprawnienia w systemie Unix: Uprawnienia do plików w systemie Unix z przykładami
- Jak przesłać plik za pomocą Selenium Webdriver - 3 metody
- Manipulacja plikami w Uniksie: Przegląd systemu plików Unix