La maggior parte delle risposte che ho visto finora sono state in termini di PHP, quando in realtà questo non è un linguaggio specifico. Le risposte date finora sono state dal punto di vista di PHP e i metodi che useresti per accedere alle informazioni differiscono da una lingua all'altra, ma il formato in cui i dati sono nell'URL (noto come Query String) rimarrà lo stesso (Es: page.ext? key1 = valore & key2 = valore & ...).
Io non conosco il tuo background tecnico o conoscenza, quindi ti prego perdonami ...
Ci sono due metodi diversi per una pagina web per fornire i dati al server web. Questi sono conosciuti come i metodi POST o GET. C'è anche un sacco di altri, ma nessuno di questi dovrebbe essere usato in qualsiasi tipo di web design quando si tratta di un utente normale.Il metodo POST viene inviato in modo invisibile al server ed è pensato per "caricare" i dati, mentre il metodo GET è visibile all'utente come stringa di interrogazione nell'URL e serve solo per ottenere informazioni "letterali".
Non tutti i siti seguono questa regola empirica, ma possono esserci motivi per spiegare perché. Ad esempio, un sito può utilizzare POST esclusivamente per aggirare il caching dai server proxy o dal browser, o perché utilizzano linguaggi a doppio byte e può causare problemi quando si tenta di eseguire un GET a causa della conversione della codifica.
Alcune risorse per circa i due metodi e quando usarli ...
http://www.cs.tut.fi/~jkorpela/forms/methods.html http://weblogs.asp.net/mschwarz/archive/2006/12/04/post-vs-get.aspx http://en.wikipedia.org/wiki/Query_string
Ora da una posizione strettamente PHP, ora ci sono 3 diverse matrici è possibile utilizzare per ottenere il informazioni che una pagina Web ha inviato al server. Dovete vostra disposizione ...
- $ _POST [ 'nome chiave'], per afferrare solo le informazioni da un metodo POST
- $ _GET [ 'nome chiave'], per afferrare solo le informazioni da un GET metodo
- $ _REQUEST ['keyname'], per consentire di acquisire POST, GET e qualsiasi informazione COOKIE che potrebbe essere stata inviata. Una sorta di catchall, specialmente nei casi in cui non si conosce il metodo che una pagina potrebbe utilizzare per inviare i dati.
Non diventare sciatto andando direttamente con il metodo $ _REQUEST. A meno che tu non abbia un caso come quello sopra menzionato per la variabile $ _REQUEST, non usarlo. Vuoi provare a usare un approccio 'nega tutto e consenti x, y, z' quando si tratta di sicurezza. Cerca solo i dati che sai che il tuo sito invierà, cerca solo le combinazioni che ti aspetti e pulisci tutte le informazioni prima di usarle. Ad esempio ..
- Non eseguire mai una valutazione() su qualsiasi cosa è stata trasmessa tramite i metodi precedenti. Non l'ho mai visto, ma ciò non significa che le persone non abbiano provato o fatto.
- Non utilizzare mai le informazioni direttamente con i database senza di loro pulizia (la ricerca di attacchi SQL injection, se non hai familiarità con loro)
Questo è di gran lunga il fine-tutto, essere-tutto alla sicurezza PHP ma non siamo qui per quello Se vuoi saperne di più sulla linea, allora questa è un'altra domanda per SO.
Spero che questo aiuti e sentiti libero di fare qualsiasi domanda.
Questo è sbagliato. Il "?" non è "solo un altro personaggio" per il server. Il server divide l'URL sul "?" (se ce n'è uno). La parte prima è il file richiesto e la parte dopo è la "stringa di query", presentata al CGI come variabile di ambiente QUERY_STRING. –
Probabilmente avrei dovuto dire che i server * in generale * non dovrebbero trattarlo in modo speciale. Nel caso del PHP (e della maggior parte degli altri framework web) viene fornito un trattamento, come ho discusso. La domanda non specifica CGI ovunque. – Edmund
Potrebbe non essere speciale per il server, ma fa parte dello standard HTTP piuttosto che php. –