English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
In questo tutorial, imparerai come inviare informazioni al server utilizzando i metodi HTTP GET e POST e come recuperare informazioni utilizzando PHP.
I browser web utilizzano uno dei due metodi HTTP (HyperText Transfer Protocol) per comunicare con il server (GET e POST). Entrambi i metodi trasmettono informazioni in modi diversi e hanno vantaggi e svantaggi come descritto di seguito.
Nei metodi GET, i dati vengono inviati come parametri dell'URL, solitamente separati da un trattino obliquo (ampersand) tra nome e valore. Di solito, un URL con dati GET è come segue:
http://www.example.com/action.php?name=john&age=24
La parte in grassetto nell'URL è il parametro GET, mentre la parte in corsivo è il valore di questi parametri. È possibile inserire più parametri=valori collegati con l'ampersand (&) nell'URL. Puoi inviare solo dati di testo semplici tramite il metodo GET.
Poiché i dati inviati con il metodo GET vengono visualizzati nell'URL, è possibile aggiungere una segnalibro alla pagina utilizzando un valore di stringa di ricerca specifico.
Il metodo GET non è adatto per trasmettere informazioni sensibili, come nome utente e password, poiché queste informazioni sono completamente visibili nella stringa di ricerca dell'URL e potrebbero essere memorizzate nel memoria del browser del client come pagina di accesso.
Poiché il metodo GET assegna i dati alle variabili di ambiente del server, la lunghezza dell'URL è limitata. Pertanto, c'è un limite al numero totale di dati da inviare.
PHP offre la variabile superglobale $_GET per accedere a tutte le informazioni inviate tramite URL o utilizzate tramite il metodo "GET" attraverso un modulo HTML.
<!DOCTYPE html> <html> <head> <title>Online Esempio PHP Metod GET</title> </head> <?php if(isset($_GET["name"])){ echo '<p>Hi, '+ $_GET["name"] + '</p>'; } ?> <form method="get" action="<?php echo $_SERVER["PHP_SELF"];?>"> <label for="inputName">Name:</label> <input type="text" name="name" id="inputName"> <input type="submit" value="Submit"> </form>
在POST方法中,数据与处理脚本在单独的通信中作为包发送到服务器。通过POST方法发送的数据在URL中不可见。
它比GET更安全,因为用户输入的信息永远不会在URL查询字符串或服务器日志中可见。
可传递的数据量有更大的限制,并且可以使用POST发送文本数据以及二进制数据(上传文件)。
由于POST方法发送的数据在URL中不可见,因此无法使用特定查询为页面添加书签。
与$_GET类似,PHP提供另一个超全局变量$_POST来访问通过POST方法发送或使用method="POST"通过HTML表单提交的所有信息。
<!DOCTYPE html> <html> <head> <title>在线示例 PHP POST 方法</title> </head> <?php if(isset($_POST["name"])){ echo "<p>Hi, " . $_POST["name"] . "</p>"; } ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>"> <label for="inputName">Name:</label> <input type="text" name="name" id="inputName"> <input type="submit" value="Submit"> </form>
PHP提供了另一个超全局变量$_REQUEST,该变量包含$_GET和$_POST变量的值以及$_COOKIE超全局变量的值。
<!DOCTYPE html> <html> <head> <title>在线示例 PHP $_REQUEST 变量</title> </head> <?php if(isset($_REQUEST["name"])){ echo "<p>Hi, " . $_REQUEST["name"] . "</p>"; } ?> <form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>"> <label for="inputName">Name:</label> <input type="text" name="name" id="inputName"> <input type="submit" value="Submit"> </form>
您将在高级部分中了解有关PHP cookie和表单处理的更多信息。
注意:超全局变量$_GET,$_POST和$_REQUEST是内置的,在整个脚本的所有作用域中始终可用。