Anteprima
Vedrai una selezione di 4 pagine su 12
Appunti presi a lezione di Tecnologie web Pag. 1 Appunti presi a lezione di Tecnologie web Pag. 2
Anteprima di 4 pagg. su 12.
Scarica il documento per vederlo tutto.
Appunti presi a lezione di Tecnologie web Pag. 6
Anteprima di 4 pagg. su 12.
Scarica il documento per vederlo tutto.
Appunti presi a lezione di Tecnologie web Pag. 11
1 su 12
D/illustrazione/soddisfatti o rimborsati
Disdici quando
vuoi
Acquista con carta
o PayPal
Scarica i documenti
tutte le volte che vuoi
Estratto del documento

$HOST.

Se in un file contenente solo codice php, è buona norma non chiudere la tag php, quindi lasciarla

aperta.

Instanza della classe PDO (PHP Data Object) è un oggetto che mi permette di accedere ad un

database (no tramite sqli).

Il vantaggio del PDO è ci permette di avere più portabilità. I meteodi PDO sono indipendenti dal

tipo di database con cui ci

si interfaccia. Solo primo parametro nel PDO è obbligatorio (configura connessione: valore host che

contiene db cui mi voglio

connettere, il secondo è il nome del db cui mi voglio connettere). $pdo = null chiude la

connessione. Tre metodi rilevanti che posso

applicare all'oggetto pdo :

- exec() : esegue istruzione SQL, e ritorna num di righe interessate dall'istruzione richiesta, viene

usata per insert/delete/update

- query() : esegue istruzione SQL, però ritorna dati prodotti, difatti è usata per le select

- prepare() : esecuzione differita, preparo istruzione e posso lasciare vuoti alcuni parametri della

richiesta, che poi posso passare

successivamente.

Gli ultimi due restituiscono un oggetto di classe PDOStatement, che hanno a sua volta dei

predefiniti metodi:

-bindParam($parm, $value) : associa il valore $value al parametro $parm definito nella prepare() in

maniera generica nella prepareu

-execute($params) : eseguo il comando prepared

-fetch($mode) : estraggo uno dei dati estratti in sequenza (fetch assoc nella mysqli)

-fetchAll($mode) : estraggo tutti i dati

PDO:FETCH_ASSOC -> dati estratti in maniera associativo.

PDO::FETCH_NUM -> dati estratti come array associativo con indice che è data dalla posizione

del valore.

PDO::FETCH_OBJ -> estrae dati come oggetto (uno per ogni libro ad esempio)

05/05/2025

6️-LARAVEL

componenti principali:

-Blade : processo nell'applicazione laravel che gestisce le viste. Hacker spesso inseriscono

all'interno di una form del testo che rappresenta un

codice PHP. Per questo PHP ha creato un meccanismo di sanificazione in cui si prende in

input una stringa tutti i caratteri speciali

e si trasfomano in codice UNICODE. Esempio {{ $username }}.

Ecco alcune direttive che poi vengono compilate in PHP, queste permettono di scrivere HTML con

direttive personalizzate (@if @foreach) che

semplificano il codice.

@auth @endauth -> fai vedere questo solo se ho utente autenticato

@guest @endguest -> fai vedere questo solo se ho utente non autenticato

bisogna anche gestire direttive riguardanti comunicazione tra client e server (possibile codice

hacker). Tramite @csrf si genera un codice

univoco CSRF all'interno di un form. Laravel verificherà che token sia valido prima di accettare

richiesta (solitamente POST/PUT/DELETE)

@error @enderror gestione errore form

@include consente di includere all'interno di una vista un altra vista

@extends questa vista eredita

@parent vista che è imparentata con un altra vista

@section @endsection parti di vista che posso richiamare

@yield('nome') in Laravel Blade crea uno "spazio vuoto" (placeholder) in un layout principale.

Serve a dire: "Qui dentro verrà messo qualcosa dalla

pagina figlia". @section riempie quel segnaposto nella view, e @extends indica quale layout

estendere.

-Artisan: : linguaggio di comandi definito per gestire creazione applicazione laravel. Permette di

attivare comandi (codificati come script PHP) che

permette di...

Ecco alcuni esempi di comandi

-list: ottengo la lista di tutti i comandi artisan

-make:controller <controller_name> : serve per creare automaticamente un nuovo controller in

Laravel

optimize:clear : cancella tutte le cache (comando da effettuare quando ho errori che non riesco a

capire).

Primo passaggio nella creazione di una applicazione web è la gestione delle rotte. Nella cartella

fileweb.php contieme tutte le rotte della nostra

applicazione.

Route::get definisco cosa deve fare il laravel quando riceve quel URl con richiesta di tipo get (al

posto di get ci posso mettere post). Il secondo

parametro è l'azione che accade quando utente visita quel URL.

Route::get('/utente/{id}', [UtenteController::class, 'mostra']); Qui {id} è un parametro dinamico e

laravel lo passerà al metodo mostra($id) del

controller.

Ricorda : un ancora manda sempre richiesta di tipo GET!!!

12/05/2025

slide 16️ laravel

Non c'è l'obbligo di scrivere tutto in raw SQL o in query builder o eloquent.

Eloquent ORM è un wrapper che gestice i dati di tipo relazionale (es: da un database relazionale)

trasformandoli in oggetti.

Eloquent e' un meccanismo di mappattura che assegna ogni tabella del mio database ad un oggetto

php.

E' una sorta di query builder più potente, in cui non vedo più la tabella ma mi ritrovo direttamente

una classe che mappa la tabella stessa.

In automatico ad ogni tabella del mio DB con lettera minuscola iniziale si va a generare grazie

all'eloquent una classe con lettera maiuscola iniziale

con eliminazione della 's' finale.

Posso cambiare i valori convenzionali come il nome della tabella, con $table a cui assegnerò il

valore voluto.

Nella $request ci sono i dati che vogliamo memorizzare nella nuova tupla.

metodo predefinito 'fill' che ha scopo di riempire oggetti.

metodo predefinito 'find' ci metto l'indentificatore dell'oggetto che voglio modificare.

metodo predefinito 'hasOne' mi permette di mettere due oggetti di due classi diverse in

corrispondenza :

- il primo parametro che prende è nome della classe

del model correlato

- Il secondo parametro è il nome della chiave esterna nella tabella correlata.

- il terzo parametro il nome della chiave locale

LaraProj2 -> prodotti saranno ordinati per percentuale di sconto decrescente

Model dell'applicazione

Costruiremo un model che si interfaccia con un DB. Creeremo Resource model (instanza di

Abstract Model Resource) da cui si creara un application model.

A ogni tabella sarà associata una classe (categoria e prodotto), ma ci servirà una superclasse che

permetterà di effettuare operazione ad entrambe le

tabelle. Il controller teoricamente non deve fare operazione sui dati, ma prenderli e basta , infatti ciò

è dovere del model.

Nella cartella Models ci vanno a finire le classi che rappresentano le tabelle del DB.

Grazie a laravel posso crare un file di migrazione che permette di salvare la struttura di una tabella

del DB (descrizione tabella), in modo tale

che poi posso tramite comando specifico crearla quando voglio, permette il versioning (tornare alla

versione precedente).

Nella cartella resources classi associate ad ogni singola tabella.

Nella cartella seeders invece ci vanno i dati da inserire nelle tabelle.

L'application model è classe unica che ha i metodi che fanno uso delle classi che sono presenti nelle

singole tabelle.

Migration

.....

up() cosa fare alla creazione

down() ...

Seeding

Il metodo run() serve nella parte di seeding per popolare le tabelle con valori salvati nella cartella

seeders.

Paginazione dei dati da DB

Processo in cui dati estratti vengono visualizzati in blocchi detti pagine. paginate prende unico

parametro, cioè numero di risultati per pagina.

Il metodo paginate() incapsula i dati in un oggetto nel quale vengono definiti metodi utili per la

gestione della paginazione a livello visivo.

Il processo di paginazione viene gestito da laravel, è il laravel che genera i dati e i link della

paginazione, ma è il client che fa richiesta al server

per cambiare pagina.

I parametri del PDO vengono definiti nel file database.php

13/05/2025

Application model avrà tutte le funzioni necessarie per il nostro controller, mentre resource model...

Si può fare override delle proprietà della classe model (come vediamo nel laraproj2 nel file

Category.php, dove estendo la classe model alla classe

Product, nella quale andremo a fare ovveride $table, $primaryKey e $timestamps, oltre a creare

funzioni getPrice() e prodCat() ).

$paginator->firstItem () restituisce l'id del primo item della pagina corrente.

$paginator->total () resituisce numero di item totali.

$paginator->url(..) serve per ottenre URL completo per una pagina specifica della paginazione.

$paginator->hasMorePages() se true significa che ci sono ancora altre pagine da scorrere.

Consiglio : fare un diff fra laraProj1 e laraProj2

laraProj3 : aggiunta area amministrazione in cui si può fare inserimento prodotto all'interno del

catologo

Laravel permette il caricamento di file in modo tale da permettere l'upload di due file di stesso

nome da due dispositivi diversi, questo grazie a un

algoritmo che salva i file con un nome casuale e in modo che non sia salvati con lo stesso identico

file.

16️/05/2025

Se utente clicca su ancona 'Amministratore' aprire la nuova pagina dedicata agli amministratori

(nuova rotta), questa pagina avrà una navbar diversa di quella

presente sulle altre rotte.

Ricorda pt2!!! le ancore mandano sempre metodo GET -> non invia dati nel corpo della richiesta,

tutti i parametri (se presenti) vengono passati nell'URL dopo

il ?.

Le immagini vengono spostate rispetto al laraProj2 nella cartella storage in una sottocartella

prodImg??.

Nel file di configurazione filesystems.php c'è la configurazione dei link...

Devo ricreare il link tra le due cartelle di immagini, tramite comando laravel -> php artisan

storange:link.

Nel file web.php aggiungiamo le nuove rotte rispetto a laraProj2.

File AdminController.php

Dobbiamo anche aggiungere inoltre il file AdminController.php. Se processo di validazione del

nuovo prodotto aggiunto da amministratore va a buon fine bisogna

creare una nuova instanza della classe prodotto (cioè un oggetto prodotto). $product lo riempio con

Qui devo anche estrarre l'immagine del prodotto inserito dall'amministratore per poi salvarlo sulla

sottocartella prodImg di public.

basename è metodo predefinito di laravel che estrae l'ultima parte della nostra stringa quindi

elimina tutto il percorso di cartelle ecc.. e lascia solamente

il nome del file che ci interessa.

Al termine di inserimento del nuovo prodotto da parte dell'amministratore si ritorna alla pagina

home dell'amministratore

app/Models/Resources ci aggiungiamo Admin.php

unica funzione che ci sara sarà getProdsCats() che ...

Per aggiungere nella navbar l'ancora Amministratore andiamo a aggiungere alla navbar un <a

href="{{route('amministratore')}}".

app/Http/Requests ci sarà file NewProductRequest.php ci saranno le regole di validazione per

aggiungere nuovi prodotti. (php artisan make:request è comando che

crea sche

Dettagli
Publisher
A.A. 2025-2026
12 pagine
SSD Scienze matematiche e informatiche INF/01 Informatica

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher grizza4 di informazioni apprese con la frequenza delle lezioni di Tecnologie web e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Università Politecnica delle Marche - Ancona o del prof Cucchiarelli Alessandro.