L’ARRAY SUPERGLOBALE $_POST

php logo

Con il metodo POST i valori non vengono passati all’URL. Se apriamo gli strumenti per sviluppatori (F12) poi scheda network rifacciamo la richiesta, click sul file PHP notiamo che i dati sono passati attraverso il Payload.

Payload

Nella scheda Headers abbiamo la request e la response, ossia le informazioni che client e server si sono scambiati. Con il metodo POST i valori non vengono passati all’URL. Una cosa da non fare mai è quella di fidarsi di quello che l’utente digita nelle caselle di testo, può infatti introdurre codice malevolo o appropriarsi di autorizzazioni non pertinenti. Se all’interno di un campo di input passiamo un po’ di codice javascript malevolo questo verrà eseguito alla pressione del pulsante invia.

javascript

Per evitare questo tipo di problema possiamo usare la funzione htmlspecialchars. Se ora proviamo a rieseguire lo script avremo:

alert

Il codice javascript non viene più eseguito i caratteri speciali grazie a htmlspecialchars vengono convertiti in caratteri HTML.

htmlspecialchar

Per quanto riguarda il metodo POST è da preferire a GET in quanto i dati non viaggiano nell’URL, inoltre la quantità di dati che possiamo inviare con GET è inferiore rispetto al metodo POST. Possiamo utilizzare GET quando i dati che viaggiano nell’URL non sono dati sensibili. I dati sia che utilizziamo GET o POST sono costruiti e codificati dall’attributo enctype. Per quanto riguarda il metodo POST possiamo avere un valore enctype multipart/form-data utile quando vogliamo trasmettere dei files. Quindi in conclusione gli Array $_GET e $_POST contengono le informazioni inviate dal client al server.

Copy to Clipboard

APPROFONDIMENTO

L’array superglobale $_POST in PHP è una delle variabili predefinite di PHP, nota come “superglobale”, che viene utilizzata per raccogliere dati da un modulo HTML che utilizza il metodo POST per inviare le informazioni al server.

Caratteristiche principali dell’array $_POST:

1. Superglobale: L’array $_POST è accessibile da qualsiasi punto del tuo script PHP, senza la necessità di doverlo dichiarare globalmente. Questo significa che puoi accedervi all’interno di funzioni, metodi, o al di fuori di essi senza problemi.

2. Associativo: L’array $_POST è un array associativo, il che significa che ogni elemento è memorizzato in coppie chiave-valore. La “chiave” è il nome del campo del modulo HTML (name), mentre il “valore” è il contenuto inserito dall’utente in quel campo.

3. Sicurezza: I dati trasmessi tramite il metodo POST non sono visibili nella barra degli indirizzi del browser, a differenza del metodo GET. Questo rende $_POST più sicuro per inviare dati sensibili, come password o informazioni personali.

Esempio di utilizzo:

Immagina di avere un modulo HTML che richiede all’utente di inserire il suo nome e la sua email:

<form action=”processa_dati.php” method=”POST“>
Nome: <input type=”text” name=”nome“>
Email: <input type=”email” name=”email“>
<input type=”submit” value=”Invia“>
</form>

Nel file processa_dati.php, puoi raccogliere e gestire i dati inviati con il seguente codice:

<?php
$nome = $_POST[‘nome’];
$email = $_POST[‘email’];

echo “Nome: ” . $nome . “<br>”;
echo “Email: ” . $email;
?>

Considerazioni sulla sicurezza:

Sanitizzazione e Validazione: È importante ricordare di sanitizzare e validare sempre i dati ricevuti tramite $_POST prima di utilizzarli, per prevenire vulnerabilità come SQL injection o XSS (Cross-Site Scripting).

Uso di filter_input: Per una maggiore sicurezza, puoi usare la funzione filter_input per raccogliere e filtrare i dati dell’array $_POST:

$nome = filter_input(INPUT_POST, ‘nome‘, FILTER_SANITIZE_STRING);
$email = filter_input(INPUT_POST, ‘email‘, FILTER_VALIDATE_EMAIL);

In questo modo, riduci il rischio di accettare dati malevoli o errati.

L’array $_POST, dunque, è uno strumento potente e flessibile per gestire l’input degli utenti nei tuoi script PHP, ma deve essere utilizzato con attenzione per garantire la sicurezza delle applicazioni web.

LINK AI POST PRECEDENTI

IL LINGUAGGIO PHP

LINK AL CODICE SU GITHUB

GITHUB