Finestre.  Virus.  I Quaderni.  Internet.  ufficio.  Utilità.  Autisti

Ho deciso di farmi un cheat sheet sui principali metodi di invio e ricezione di dati da un server web utilizzando php e js. E così è nata questa nota. In esso, ho esaminato i metodi più comunemente utilizzati per lo scambio di dati tra un client Web e un server Web utilizzati dagli sviluppatori php.

I migliori preferiti per l'invio di dati sono php get request e php post request, seguiti dalla tecnologia AJAX. Quindi quali sono le differenze tra le richieste get e post.

  • get request viene passata nella barra degli indirizzi (nell'intestazione http) ed è visibile all'utente
  • post request viene passata nel corpo del documento
  • la dimensione della richiesta get è limitata (massimo 276 caratteri)
  • Il metodo get non trasferisce i file
  • il metodo post carica i file
php ottenere richiesta

Per fare una richiesta php get, dobbiamo prima creare modulo html con campo di inserimento dati. Nel tag form, indichiamo a quale file sul server accedere e quale metodo inviare. Inoltre, non dimenticare di impostare il campo attributo nome, questo sarà il nome della cella dell'array GET $_GET["data"]; da cui otterremo i dati in un file sul server. Come inviare i dati tramite il modulo, penso sia chiaro, ora proviamo a passarlo barra degli indirizzi. index.php?data=1 se digitiamo tale richiesta nella barra degli indirizzi e la inviamo, allora nel file in index.php otterremo il valore 1 da $_GET["data"] . Con questo, penso che tutto è chiaro, ora un esempio.

Compito: c'è un file index.php con un modulo per inviare una richiesta get a un altro file, ad esempio get.php. Quando viene ricevuta una richiesta get, il file get.php deve passare un array con i dati a index.php. In index.php dovrebbe essere visualizzato l'array risultante.

Implementazione. file index.php

//Nel form, utilizzando il metodo get, invia il valore 1 attraverso il campo nascosto Invia una richiesta

get.php

richiesta post php

Anche la richiesta post php viene passata attraverso il modulo, solo l'attributo nel tag del modulo sarà method="post" . E riceveremo i dati nel file specificato dall'array post $_POST["search"] e forniremo immediatamente un esempio.

Compito: invia i dati da index.php utilizzando il metodo POST al server al file get.php e recuperalo, se il campo di invio dei dati è vuoto, visualizza un messaggio sul campo vuoto. Iniziamo la soluzione con index.php

Query di ricerca

Compila il campo di richiesta

Richiesta inserita:

Invia una richiesta

get.php

Passaggio di array AJAX

Facciamo lo stesso compito con ajax. In generale, ajax è una tecnologia correlata a javascript, ma come parte della nota sul trasferimento dei dati al server, toccheremo anche questa tecnologia. Ovviamente ajax è un argomento per un articolo separato. Durante la richiesta, visualizzeremo anche l'indicatore di caricamento gif. Abbiamo anche due file index.php e get.php. file index.php. Non dimenticare di includere jquery. Attenzione, per nascondere la gif al primo caricamento della pagina, assegnare lo stile display: nessuno al box block

$(document).ready(function()( //blocca un evento sul pulsante di invio $(".submit").click(function()( $.ajax(( //come invieremo il tipo di dati: "GET ", //dove passiamo url: "get.php", //quali dati passiamo data: (flag: 1), //evento prima dell'invio ajax beforeSend: function()( //visualizza GIF $(".box ").show( ); ), //evento dopo aver ricevuto la risposta, //ottenere l'array in data success: function(data)( //nascondi la GIF $(".box").hide(); var html = ""; //f- i JSON.parse traduce i dati json nell'oggetto var dt=JSON.parse(data); for (var i = 0; i

get.php. Otteniamo i dati dall'array get nel file e passiamo l'array da php a javascript. Cosa trasmettere matrice php in js, deve essere convertito in formato json. Per questo usiamo php json_encode. Dopo la conversione, viene inviato json php significa, e in particolare chiamiamo echo.

Il primo metodo per effettuare una richiesta PHP POST è utilizzare file_get_contents . Il secondo metodo utilizzerà fread in combinazione con un paio di altre funzioni. Entrambe le opzioni utilizzano la funzione stream_context_create per compilare i campi obbligatori dell'intestazione della richiesta.

Spiegazione del codice

La variabile $sPD contiene i dati da inviare. Deve essere nel formato della stringa di richiesta HTTP, quindi alcuni Simboli speciali deve essere codificato.

Sia nella funzione file_get_contents che nella funzione fread, abbiamo due nuovi parametri. Il primo è use_include_path . Dal momento che stiamo facendo una richiesta HTTP, in entrambi gli esempi avrà falso. Quando si utilizza true per leggere una risorsa locale, la funzione cercherà un file in include_path .

Il secondo parametro, context , viene popolato con il valore restituito di stream_context_create , che accetta il valore dell'array $aHTTP.

Utilizzo di file_get_contents per effettuare richieste POST

In PHP, per inviare una richiesta POST utilizzando file_get_contents , è necessario utilizzare stream_context_create per compilare manualmente i campi dell'intestazione e specificare quale "wrapper" verrà utilizzato - in questo caso http:

$sURL = "http://brugbart.com/Examples/http-post.php"; // POST URL $sPD = "nome=Jacob&bench=150"; // Dati POST $aHTTP = array("http" => // Wrapper da utilizzare array("method" => "POST", // Metodo di richiesta // Le intestazioni della richiesta sono impostate sotto "header" => "Content- digitare: application/x-www-form-urlencoded", "content" => $sPD)); $contesto = stream_context_create($aHTTP); $contents = file_get_contents($sURL, false, $context); echo $contenuto;

Utilizzo di fread per effettuare richieste POST

Puoi utilizzare la funzione fread per effettuare richieste POST. L'esempio seguente utilizza stream_context_create per comporre le intestazioni di richiesta HTTP richieste:

$sURL = "http://brugbart.com/Examples/http-post.php"; // POST URL $sPD = "nome=Jacob&bench=150"; // Dati POST $aHTTP = array("http" => // Wrapper da utilizzare array("method" => "POST", // Metodo di richiesta // Le intestazioni della richiesta sono impostate sotto "header" => "Content- digitare: application/x-www-form-urlencoded", "content" => $sPD)); $contesto = stream_context_create($aHTTP); $handle = fopen($sURL, "r", false, $contesto); $contenuto = ""; while (!feof($handle)) ( $contents .= fread($handle, 8192); ) fclose($handle); echo $contenuto;

Effettuare richieste GET con PHP

Rivolgeremo ora la nostra attenzione all'utilizzo di fread e file_get_contents per scaricare contenuti da Internet tramite HTTP e HTTPS . Per utilizzare i metodi descritti in questo articolo, l'opzione wrapper fopen deve essere abilitata. Per fare ciò, nel file php.ini, devi impostare il parametro allow_url_fopen su On .

Le richieste PHP POST e GET vengono utilizzate per accedere a siti Web, recuperare il contenuto di pagine Web o verificare la presenza di nuove versioni di applicazioni. Tratteremo come effettuare semplici richieste HTTP.

Utilizzo di fread per scaricare o ricevere file su Internet

Ricorda che la lettura di una pagina web è limitata alla parte accessibile del pacchetto. Quindi si dovrebbe usare la funzione stream_get_contents (simile a file_get_contents ) o ciclo while per leggere il contenuto in blocchi più piccoli fino a raggiungere la fine del file:

In questo caso, elaborando una richiesta PHP POST, l'ultimo argomento della funzione fread è uguale alla dimensione del frammento. Generalmente non dovrebbe essere maggiore di 8192 (8*1024 ).

Ho una struttura URL con una stringa di query e un parametro chiamato position ,

http://computerhelpwanted.com/jobs/?occupation=administrator&position=network+administrator

Ho anche un menu a discesa di selezione del modulo con la posizione del nome di selezione del modulo.

Selezionare Occupazione Amministratore Selezionare Posizione Amministratore di rete

Quando l'utente effettua una selezione, invia i valori dell'opzione all'attributo action con select name="position" come parametro da utilizzare nella stringa di query.

La mia domanda è: come posso accedere ai valori di selezione del modulo separatamente dai valori della stringa di query?

Sto usando il metodo _GET per chiamare il valore da un parametro della stringa di query.

$posizione = isset($_GET["posizione"]) ? ($_GET["posizione"]) : "";

Ovviamente, questo sta ottenendo il valore dalla struttura dell'URL, non dall'elemento del modulo. O forse lo è, non ne sono sicuro. Ma testandolo, mi sembra di essere giunto alla conclusione che lo sta ottenendo dall'URL, non dal modulo.

Come posso accedere al valore di selezione del modulo durante il confronto nel mio PHP?

ricaricare

Ho un problema con l'URL canonico fornito nell'intestazione.

Questo è come dovrebbe essere

l'unica differenza è il - e il + nella stringa di query.

Non tutte le mie stringhe di query hanno +. Alcuni hanno -. Ma sto mostrando il contenuto su entrambi gli URL, indipendentemente dal fatto che abbia - o +. In entrambi i casi, entrambi gli URL ottengono lo stesso contenuto della pagina.

Ma poiché il canonical è generato dinamicamente dall'URI e non dal valore dell'elemento form, ci sono 2 diversi caratteri canonici su entrambe le pagine di contenuto.

L'utilizzo di _Get('value') recupera il valore dalla stringa di query anziché dall'elemento del modulo. Lo so perché il valore dell'elemento form ha uno spazio tra l'amministratore di rete che viene codificato in urlen quando il modulo viene inviato come network+administrator .Quindi, se posso confrontare il valore dell'elemento form, posso impostare il canonico corretto.

Se noti un errore, seleziona una parte di testo e premi Ctrl + Invio
CONDIVIDERE: