I redirect PHP sono uno strumento incredibilmente utile, ma possono anche essere pericolosi se non implementati correttamente.

Se hai seguito la nostra guida su come creare un sito web , saprai che la funzione header() può essere utilizzata per reindirizzare facilmente un utente a un’altra pagina. In realtà, però, usare questa funzione non è così semplice come sembra. In questa guida, ti mostreremo come eseguire un redirect PHP che non causi grossi problemi in futuro.

Il metodo di base per un redirect PHP

La maggior parte delle guide ti spiegherà che per fare un redirect PHP puoi semplicemente usare la funzione header() nella parte superiore delle tue pagine. Per fare ciò, usi la funzione per inviare un nuovo URL, in questo modo:

header('Location: '.$newURL.php);

Questa funzione dovrebbe essere inserita prima di passare qualsiasi HTML o testo ai browser dei tuoi utenti, quindi dovrebbe essere proprio nella parte superiore della pagina web. Ciò significa che dovrebbe venire prima della dichiarazione <!DOCTYPE> , prima di qualsiasi Java e prima di qualsiasi codice PHP. Quindi invierà gli utenti al nuovo URL.

Sebbene possa sembrare semplice, quando si tratta della funzione header() , la semplicità del codice può portare gli sviluppatori a un falso senso di sicurezza. Quindi diamo un’occhiata a comeusare correttamente questa funzione.

Die() and Exit ()

Innanzitutto, dovresti usare il modificatore die() o exit() ogni volta che usi un reindirizzamento. In sintesi, il problema è che crawler e bot sono in grado di ignorare le intestazioni, quindi la pagina da cui pensavi di essere reindirizzato è totalmente accessibile a loro. Se, in altre parole, stai utilizzando un header redirect per proteggere una determinata pagina, non ti fornirà alcuna protezione.

Ecco perché devi interrompere l’elaborazione del resto della pagina, nel caso in cui il redirect venga ignorato. Il modo per farlo è aggiungere die() o exit() dopo il tuo reindirizzamento:

header("Location: .$newURL.php");
die();

URL relativi e assoluti

Successivamente, parliamo di URL relativi e assoluti nei redirect. RFC 7231 ti consente di utilizzare entrambi, ma dovresti essere estremamente attento quando usi i redirect relativi. Questo perché alcuni website builder raccolgono e rinominano le pagine PHP. Ciò significa che se stai lavorando sul tuo PHP tramite un website builder, potresti finire per interrompere tutti i tuoi redirect con PHP.

Sfortunatamente, al momento non c’è un vero modo per aggirare questo problema, a parte mantenere un’attenta panoramica di dove puntano i tuoi redirect PHP.

Codici di stato

Il terzo problema con i redirect PHP standard è che l’operatore “posizione” di PHP restituisce ancora il codice HTTP 302 . Non dovresti permettere che lo faccia, perché molti browser web implementano questo codice in un modo totalmente in contrasto con il modo in cui dovrebbe funzionare: essenzialmente usano il comando GET invece di eseguire un redirect “reale”.

La migliore pratica quando si creano PHP redirect è quindi specificare il codice che viene restituito. Sfortunatamente, il codice corretto da utilizzare è un punto di contesa. HTTP 301 indica un redirect permanente, che potrebbe causare problemi con il ripristino della pagina originale. HTTP 303 è purtroppo inteso come “altro” da molti browser e può causare problemi con l’indicizzazione della tua pagina nei motori di ricerca.

In pratica, e fino a quando questa situazione non sarà risolta, usa HTTP 303.

Controlla la documentazione

Oltre a prendere le precauzioni di base di cui sopra, dovresti dedicare del tempo a leggere la documentazione sull’utilizzo dei redirect PçHP prima di implementarli Dovresti controllare il manuale PHP per assicurarti di aver capito cosa stai facendo, oltre a controllare la documentazione del W3C per assicurarti di seguire le migliori pratiche.

E mentre stai leggendo, assicurati di proteggere anche il sito web dalle vulnerabilità comuni : se sei già nella posizione di dover utilizzare gli URL redirect PHP, è probabile che la sicurezza del tuo sito necessiti di un controllo.

Elenco delle vulnerabilità della rete Privacy Canada

Altri metodi di PHP redirect

Dati tutti questi problemi, probabilmente ti starai chiedendo perché dovresti utilizzare un redirect PHP. Questa è una domanda legittima. Sebbene i PHP redirect vengano in genere eseguiti più rapidamente di altri tipi di redirect e possano quindi essere uno strumento importante per migliorare la velocità del sito web, sono disponibili altre soluzioni.

Ci sono due approcci principali per farlo. Puoi utilizzare l’ elemento HTML <meta> per reindirizzare dalla parte HTML della tua pagina oppure utilizzare JavaScript. Il primo approccio – usando <meta> sarebbe simile a questo:

<meta http-equiv="refresh" content="0;url=nuovapagina.php">

Il secondo approccio, l’utilizzo di JavaScript, è un po’ più elegante e sicuramente più professionale:

window.location.replace("http://nuovapagina.php/");

Entrambi questi approcci verranno eseguiti un po’ più lentamente di un redirect immediato header() , ma sono probabilmente più flessibili.

Conclusione

Anche se seguire i passaggi precedenti dovrebbe significare che i tuoi redirect PHP vengono eseguiti in modo sicuro, se devi eseguire più redirect PHP, è probabilmente il momento di ripensare alla struttura del tuo sito.

Ci sono un paio di buoni motivi per farlo. Il primo è che non tutti gli host web sono uguali e se invii tutti i tuoi visitatori su un percorso tortuoso, questo influirà sulle sue prestazioni. Questo può essere migliorato in una certa misura utilizzando un provider di web hosting a prezzi accessibili , ma solo in una certa misura.

Il secondo motivo è che la pagina da cui stai reindirizzando potrebbe raccogliere dati sui tuoi visitatori senza che tu te ne accorga, in particolare se stai utilizzando un software di analisi dei dati web per monitorare le prestazioni del tuo sito. Nel mondo post-GDPR , ciò potrebbe avere conseguenze significative.

Quindi, in sintesi: fai attenzione ai redirect php PHP, usali correttamente e usali solo dove e quando devi.

Buon lavoro.