Curs Php-mysql

- Accesare Date din Sesiune
- Verificare daca o Sesiune exista
- Stocare date in Sesiune
- Stergere date din Session
- Utilizare Sesiune in __construt()

Sesiunile sunt folosite pentru a retine si transmite date intre accesari de pagini. Laravel furnizeaza diferite drivere pentru stocare sesiuni: file, cookie, apc, array, Memcached, Redis si database.

Sesiuni in baza de date

Daca vreti sa folositi o baza de date pt. sesiuni, va trebui sa creati un tabel care sa contina elementele sesiunii.
Mai jos aveti un exemplu de declaratie Schema pentru tabelul 'sesiunii':
Schema::create('sessions', function ($table){
  $table->string('id')->unique();
  $table->unsignedInteger('user_id')->nullable();
  $table->string('ip_address', 45)->nullable();
  $table->text('user_agent')->nullable();
  $table->text('payload');
  $table->integer('last_activity');
});
Puteti folosi comanda Artisan session:table pentru a genera automat aceasta migratie:
php artisan session:table

php artisan migrate

Accesare Date din Sesiune

Pentru a accesa datele stocate in sesiune, se foloseste functia session() sau metoda session() a instantei Request.

Accesare sesiune printr-o instanta Request

Dupa ce se obtine instanta Request, se poate folosi metoda session()->get('sesion_name') pentru a obtine datele sesiunii.
$value = $request->session()->get('key');
Puteti sa adaugati o valoare default ca al doilea argument la metoda get(), pentru a fi returnat daca numele de sesiune specificat nu exista.
Se poate folosi si o functie pt. valoarea default:
$value = $request->session()->get('key', 'default');

$value = $request->session()->get('key', function(){
  return 'default';
});
Puteti folosi metoda all() pentru a obtine un array cu toate datele din sesiune.
$sess = $request->session()->all();

Functia globala session()

Asemanator cu metoda $request->session()->get('key'), functia session() primeste un sir cu numele sesiunii, si optional, un al doilea argument pentru valoarea 'default':
Route::get('home', function(){
  //Retrieve the value of the session with key 'name'
  $value = session('name');

  //Specifying a default value
  $value = session('name', 'default');
});
Implicit, sesiunea Laravel expira dupa 120 de minute. Pentru a modifica durata de viata a sesiunii, deschideti fisierul config/session.php si schimbati valoare de la indexul 'lifetime'.

Verificare daca o Sesiune exista

Pentru a determina daca o Sesiune exista si nu este nula, folositi metoda use():
if($request->session()->has('users')){
  //
}
Pentru a determina daca o Sesiune exista, chiar daca valoarea ei este nula, puteti folosi metoda exists():
if($request->session()->exists('users')){
  //
}

Stocare date in Sesiune

Pentru a stoca date in sesiune, puteti folosi metoda put() sau functia session().
- Metoda put() va lua doua argumente pentru 'nume' si 'valoare':
$request->session()->put('name', 'value');
- Cand functia session() este apelata cu un array de perechi nume=>valoare, acele valori vor fi adaugate in sesiune:
session(['key'=> 'value']);

Stergere date din Session

Pentru a sterge o sesiune, puteti folosi una din aceste metode:


Daca vreti sa adaugati valoare unei sesiuni direct in template-ul blade, puteti folosi unul dintre aceste formate:
@if(session('key'))  
 {{session('key')}}
@endif
Or:
{{session('key', '')}}

Exemplu practic cu sesiune

1. Vom crea un controller numit SessionController.
Copiati si salvati urmatorul cod in "app/Http/Controllers/SessionController.php".
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;

class SessionController extends Controller {
  public function getSession(Request $request){
    if($request->session()->has('my_name')) return "Session 'my_name' = ". $request->session()->get('my_name');
    else return 'No data in session';
  }

  public function putSession(Request $request){
    $request->session()->put('my_name','Mar Plo');
    return 'Data has been added to session "my_name"';
  }

  public function deleteSession(Request $request){
    if($request->session()->has('my_name')) $request->session()->forget('my_name');
    return 'my_name session has been deleted.';
  }
}
2. Acum, definim Route pentru a testa SessionController.
Adaugati urmatorul cod in fisierul routes/web.php:
Route::get('session/get','SessionController@getSession');
Route::get('session/put','SessionController@putSession');
Route::get('session/delete','SessionController@deleteSession');
3. Vizitati urmatorul URL pentru a adauga date in sesiune:
//localhost:8000/session/put
- Rezultat:
Data has been added to session "my_name"
4. Vizitati urmatorul URL pentru a obtine date din sesiune:
//localhost:8000/session/get
- Rezultat:
Session 'my_name' = Mar Plo
5. Vizitati urmatorul URL pentru a sterge sesiunea "my_name":
//localhost:8000/session/delete
- Rezultat:
my_name session has been deleted.
6. Acum, daca vizitati din nou URL-ul: //localhost:8000/session/get , va afisa:
No data in session

Utilizare Sesiune in __construt()

Sesiunile Laravel sunt initiate in middleware; sesiunea nu poate fi accesata direct in constructorul controller-ului pentru ca middleware-ul nu a rulat incat.
Pentru a folosi sesiune in __construt(), folositi metoda $this->middleware(Callback) direct in constructor si lucrati cu sesiunea in functia "Callback" trecuta ca argument.
public function __construct(){
  $this->middleware(function($request, $next){
    //Your code with Session ..

    return $next($request); //<- this is required
  });
}

- Documentatie: Laravel - Sessions

Un Test simplu in fiecare zi

HTML
CSS
JavaScript
PHP-MySQL
Engleza
Spaniola
Care atribut face ca optiunea din <select> sa fie selectata?
checked="checked" selected="selected" disabled="disabled"
<select name="a_name">
 <option value="val1">Optiune 1</option>
 <option value="val2" selected="selected">Optiune 2</option>
</select>
Care din aceste valori CSS creaza culoare gradient pentru fundal?
contain repeat-x linear-gradient
#id {
  background: linear-gradient(top left, #1f1, #fff, #11f);
}
Care cod creaza un array in JavaScript?
[] {} new Object()
var arr = [1, "CoursesWeb.net", "MarPlo.net"];
alert(arr[2]);
Indicati functia PHP folosita pentru redirect la alta pagina.
function() header() switch()
header("Location: http://coursesweb.net/");
exit;
Indicati articolul corect la cuvantul "garden" in propozitia: "... garden is a place with flowers".
An The A
The garden is a place with flowers.
- Gradina este un loc cu flori.
Indicati articolul corect pentru cuvantul: "jardín" (gradina)
la los el
El jardín es un lugar de flores.
- Gradina e un loc cu flori.
Sesiuni - Tutorial Laravel

Last accessed pages

  1. Proverbe, expresii si zicatori (17574)
  2. Pronumele in limba engleza - Pronouns (41423)
  3. Invatare Vue.js - Tutoriale (1843)
  4. Vue JS - Scurta prezentare (757)
  5. Curs si Tutoriale JavaScript (127896)

Popular pages this month

  1. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (145)
  2. Curs HTML gratuit Tutoriale HTML5 (111)
  3. Curs CSS Online Tutoriale CSS3 (102)
  4. Curs si Tutoriale Ajax (99)
  5. Curs PHP MySQL, Tutoriale si Scripturi PHP (93)