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 specifica metoda HTTP de trimitere (GET, POST) a datelor din formular?
action method value
<form action="script.php" method="post"> ... </form>
Ce proprietate CSS adauga umbra la chenar?
background-image box-shadow border-radius
#id {
  background-color: #bbfeda;
  box-shadow: 11px 11px 5px #7878da;
}
Clic pe functia care elimina primul element dintr-un array?
pop() push() shift()
var fruits = ["mar", "cireasa", "banana"];
fruits.shift();
alert(fruits.length);           // 2
Indicati functia cu care se poate verifica daca un anumit modul e instalat in PHP.
function() filetype() extension_loaded()
if(extension_loaded("PDO") === true) echo "PDO este valabil."
Alegeti verbul auxiliar corect care trebuie in propozitia: " ... I listen to music?".
has have Can
 Can I listen to music?
- Pot asculta muzica?
Alegeti verbul corect care trebuie in propozitia: "Me ... las frutas dulces"
están gustan gusta
Me gustan las frutas dulces.
- Imi plac fructele dulci.
Sesiuni - Tutorial Laravel

Last accessed pages

  1. Curs si Tutoriale Ajax (46920)
  2. Curs PHP MySQL, Tutoriale si Scripturi PHP (60917)
  3. Pronume - Exercitii si teste engleza incepatori (8510)
  4. Blog si Cugetari Personale (46162)
  5. Exercitii engleza - English Tests and exercises - Grammar (49936)

Popular pages this month

  1. Curs HTML gratuit Tutoriale HTML5 (986)
  2. Cursuri si Tutoriale: Engleza, Spaniola, HTML, CSS, Php-Mysql, JavaScript, Ajax (955)
  3. Curs si Tutoriale JavaScript (624)
  4. Curs CSS Online Tutoriale CSS3 (609)
  5. Curs PHP MySQL, Tutoriale si Scripturi PHP (596)